Hi, I've followed several tutorials ans wiki's on how to compile my own kernel for the mini2440. For now the main reason for doing this is to try and change the boot logo which I have not been able to change. I followed mostly the following tutorials: 1.) http://code.google.com/p/friendlyarm/wiki/Linux_Tutorial 2.) http://wiki.linuxmce.org/index.php/Mini2440 3.) http://bill.station51.net/index.php?post/2010/07/14/HOWTO%3A-Cross-Compi... 4.) http://www.electronics.diycinema.co.uk/embedded/mini2440/2009/09/ 5.) http://bill.station51.net/index.php?post/2010/05/08/HOWTO%3A-Setting-up-... Firstly I have a few questions about parameters which I do not understand or ones who gives me errors: 1.) In link 1.) they compile the kernel with the "-j4" setting(make ARCH=arm O=../../kernel-bin/ -j4). What is this setting for? Does it specify the number of parallel processes allowed or is it something completely different? I'm compiling from a virtual machine with only one CPU, do I set this yo -j1? 2.) From link 1.) I specify the architecture using "CC='arm-none-linux-gnueabi-gcc -march=armv4t -mtune=arm920t". What does this command do? Secondly I would like to decsribe my compilation procedure that does not want to display the new logo: 1.) Install the arm toolchain described in link 5.) 2.) mkdir ~/kernel 3.) cd ~/kernel 4.) git clone git://repo.or.cz/linux-2.6/mini2440.git 5.) cd mini2440 6.) mkdir -p ../kernel-bin 7.) pngtopnm logo.png | pnmtoplainpnm > logo_linux_clut224.ppm OR pngtopnm logo.png | ppmquant -fs 223 | pnmtoplainpnm > logo_linux_clut224.ppm 8.) cp logo_linux_clut224.ppm ~/kernel/mini2440/drivers/video/logo 9.) export CROSS_COMPILE=arm-none-linux-gnueabi- 10.)CC='arm-none-linux-gnueabi-gcc -march=armv4t -mtune=arm920t' 11.)export CC 12.)make ARCH=arm O=../kernel-bin/ distclean 13.)make ARCH=arm O=../kernel-bin/ mrproper 14.)make ARCH=arm O=../kernel-bin/ mini2440_defconfig 15.)make ARCH=arm O=../kernel-bin/ menuconfig 16.)I "Load an alternative configuration file", config_mini2440_t35, because I have a T35 lcd. 17.)Add support for wanted file systems and MTD (I only add ext3 since my rootfs is on ext3 filesystem on the SD) 18.)I 'Save an alternative configuration file" as .config then Exit 19.)make ARCH=arm O=../kernel-bin/ -j4 20.)make ARCH=arm O=../kernel-bin/ -j4 modules 21.)make ARCH=arm O=../kernel-bin/ INSTALL_MOD_PATH=.. modules_install 22.)../../uboot/mini2440/tools/mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d ../kernel-bin/arch/arm/boot/zImage ../ksudoernel-bin/arch/arm/boot/uImage 22.)sudo cp ../lib/modules/2.6.32-rc8/ /media/rootfs/lib/modules/ -r 22.)sudo cp ../kernel-bin/arch/arm/boot/uImage /media/boot -r 23.)sync 24.)umount /media/* With this my logo still does not boot and I get a kernel panic when using uboot or "load Image of Linux... Wrong Linux Kernel" when using supervivi. Any advice will be appreciated. Thank you
Kernel compilation issues and questions
I'll have a go: 1. The general advise I have seen is set j to one more than the number of CPUs . Think it is only useful when you are not trying to do anything else. I have seen -j4, maybe be useful for a dual-core machine or quad-core. 2. The first part guarantees it is compiled for the particular ARM architecture used in the mini2440. The second part seems to be a tweak for this architecture as well. I have seen it discarded when compiling some programs from source. 3. The logo that gets loaded is enabled in the kernel. Look in <Console display driver support>. I have never seen lines 7 and 8. I don't understand what they do. Is this another way of getting the logo to appear?
No, I use line 7 to convert a .png image to a ppm image. In line 8 I copy the converted image (now ppm image) to the destination directory where it should be. Thank you for your reply. In the mean while I've been able to get the logo to display using the source directly from the FriendlyARM website. I had no luck with the git repository. http://www.friendlyarm.net/dl.php?file=linux-2.6.32.2-mini2440_20110305.tgz But I still get a kernel panic: Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0) Backtrace: [<c003d270>] (dump_backtrace+0x0/0x10c) from [<c0365dc4>] (dump_stack+0x18/0x1c) r7:c048e440 r6:c04c8950 r5:c38e3000 r4:c3823f40 [<c0365dac>] (dump_stack+0x0/0x1c) from [<c0365e14>] (panic+0x4c/0x134) [<c0365dc8>] (panic+0x0/0x134) from [<c0008e9c>] (mount_block_root+0x178/0x234) r3:00000000 r2:c383d86c r1:c3823f40 r0:c0419a84 [<c0008d24>] (mount_block_root+0x0/0x234) from [<c0009008>] (mount_root+0xb0/0xf4) [<c0008f58>] (mount_root+0x0/0xf4) from [<c0009144>] (prepare_namespace+0xf8/0x190) r7:c04c8320 r6:c0021808 r5:c0021808 r4:c0021818 [<c000904c>] (prepare_namespace+0x0/0x190) from [<c00084c0>] (kernel_init+0xf0/0x124) r7:00000000 r6:c002042c r5:c0020920 r4:c0020920 [<c00083d0>] (kernel_init+0x0/0x124) from [<c00551a4>] (do_exit+0x0/0x62c) r7:00000000 r6:00000000 r5:00000000 r4:00000000 My rootfs (partition 3 - mmcblk0p3) on the SD card is of type ext3 file system. I've included the ext file system to the kernel. Why do I still get a kernel panic? Thank you