Greetings. First, I am posting the message to both the 'linux-arm-kernel' and 'linux-arm' mailing lists because I know a few people who are not reading the 'linux-arm-kernel' list that do a lot of kernel development. Anyway... I was getting the following errors: Freeing unused kernel memory: 4k init kmod: failed to exec /sbin/modprobe -s -k char-major-4, errno = 2 Warning: unable to open an initial console. kmod: failed to exec /sbin/modprobe -s -k binfmt-464c, errno = 2 kmod: failed to exec /sbin/modprobe -s -k binfmt-464c, errno = 2 Kernel panic: No init found. Try passing init= option to kernel. I recompiled the kernel and removed support for 'kmod' and made compiled in only ELF binary support and no modules whatsoever. I downloaded a ramdisk image from ftp://ftp.netwinder.org/users/n/nico and proceeded to load it with my kernel into my board. I now get the following errors: RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize RAMDISK: Compressed image found at block 0 Freeing initrd memory: 1537k freed NetWinder Floating Point Emulator V0.95 (c) 1998-1999 Rebel.com VFS: Mounted root (ext2 filesystem). Freeing unused kernel memory: 4k init Warning: unable to open an initial console. Kernel panic: No init found. Try passing init= option to kernel. Well, that's some progress. I did get rid of the kmod errors and binfmt stuff. I also tried creating my own ramdisk with similar results. I also tried opening some files inside of the function 'init' in 'init/main.c' specifically '/sbin/init'. The 'open' function succeeds, but for some reason when it goes to do the 'execve' command on '/sbin/init' it does not work as shown above. I also want to better understand the ROOT_DEV variable as related to INITRD. If you notice in 'init/main.c', the following line is executed of INITRD is being used: real_root_dev = ROOT_DEV; and then just a few lines down the big long if statement: if (mount_initrd && ROOT_DEV != real_root_dev && MAJOR(ROOT_DEV) == RAMDISK_MAJOR && MINOR(ROOT_DEV) == 0) which can never executed if you choose the INITRD and you want your root filesystem to indeed be the RAMDISK. Therefore, 'linuxrc' will never be executed! I also went back through the code in 'setup.c' and 'arch.c' and some code in 'super.c'. I find it difficult to see how the if statement above ever gets executed. In 'setup.c' and 'arch.c' the ROOT_DEV variable is set before we get into 'init/main.c' which means that the assignement above will always make the 'if' statement fail? I probably missed something in the call to 'mount_root' or 'mount_devfs_fs'. And finally, could someone explain how the value ROOT_DEV = CURRENT in the top level Makefile comes into play? If anyone has a INITRD image that works for them, please contact me. I would greatly appreciate. Thanks in advance everyone. Cheers. -Steve -- Steven J. Hill - Embedded SW Engineer Public Key: 'finger [EMAIL PROTECTED]' FPR1: E124 6E1C AF8E 7802 A815 FPR2: 7D72 829C 3386 4C4A E17D unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED] ++ Please use [EMAIL PROTECTED] for ++ ++ kernel-related discussions. ++
