Hi all, I have to say that I am a totally newbie in Linux kernel, yet I need to build a Linux kernel in very short period of time. I have an embedded MIPS box equipped with a 64MB of NAND flash and 64MB of DRAM. I am using a cross-compiler (buildroot) on the PC. I built Linux kernel (V2.4) as follows: - Created EXT2 ramdisk.gz as documented in Documentation/ramdisk.txt - The ramdisk contains the content of buildroot/build_mipsel/root/, which contains bin, etc, lib, linuxrc, sbin (sh.. etc), usr. I also created under /dev console null, tty*.... - Copied ramdisk.gz to /linux/arc/mips/ramdisk/ - Compiled the kernel - Donwloaded to the DRAM (0x800c0000) via PMON. Linux seems to boot up and the ramdisk seems to be mounted correctly. However modprobe failed. When I removed modprobe by undef CONFIG_KMOD, the system failed earlier at /sbin/sh step. Tracing down the codes, I noticed I got EXT2-fs error. Can anyone help? In addition, as a newbie, I would like to ask: - Is ramdisk necessary at all? - (How) Can I build a complete filesystem and kernel in a single piece and download on NAND flash? The printk messages is as follow: [snip] <6>Linux NET4.0 for Linux 2.4 <6>Based upon Swansea University Computer Society NET3.039 <4>sock_init: calling sk_init... <4>sock_init: calling skb_init... <4>sock_init: calling register_filesystem... <4>register_filesystem: calling find_filesystem... <4>find_filesystem: i(*p)->name=rootfs name=sockfs <4>find_filesystem: i(*p)->name=bdev name=sockfs <4>find_filesystem: p=801a4460 <4>register_filesystem: p=801a4460 *p=00000000 <4>sock_init: &sock_fs_type=801ab938 name=%S fs_flag=80177494 <4>sock_init: calling sock_mnt... <4>find_filesystem: i(*p)->name=rootfs name=sockfs <4>find_filesystem: i(*p)->name=bdev name=sockfs <4>find_filesystem: i(*p)->name=sockfs name=sockfs <4>find_filesystem: p=801a4460 <4>do_kern_mount: fstype="sockfs" type=801ab938 flags=0 name="sockfs" data=00000000 <4>do_kern_mount: get_sb_nodev sb=802b5400 <4>do_kern_mount: mnt=810b61a0 <4>sock_init: calling rtnetlink_init... <4>Initializing RT netlink socket <4>__get_free_pages calling page_address... <4>do_basic_setup: calling start_context_thread... <4>__get_free_pages calling page_address... <4>__get_free_pages calling page_address... <4>add_to_runqueue: p=802b0000 <4>do_basic_setup: calling do_initcalls... <4>__get_free_pages calling page_address... <4>add_to_runqueue: p=810fa000 <4>Starting kswapd <4>__get_free_pages calling page_address... <4>add_to_runqueue: p=810f8000 <4>register_filesystem: calling find_filesystem... <4>find_filesystem: i(*p)->name=rootfs name=tmpfs <4>find_filesystem: i(*p)->name=bdev name=tmpfs <4>find_filesystem: i(*p)->name=sockfs name=tmpfs <4>find_filesystem: p=801ab948 <4>register_filesystem: p=801ab948 *p=00000000 <4>find_filesystem: i(*p)->name=rootfs name=tmpfs <4>find_filesystem: i(*p)->name=bdev name=tmpfs <4>find_filesystem: i(*p)->name=sockfs name=tmpfs <4>find_filesystem: i(*p)->name=tmpfs name=tmpfs <4>find_filesystem: p=801ab948 <4>do_kern_mount: fstype="tmpfs" type=801a4278 flags=0 name="tmpfs" data=00000000 <4>do_kern_mount: get_sb_nodev sb=802b5800 <4>do_kern_mount: mnt=810b61e0 <4>__get_free_pages calling page_address... <4>add_to_runqueue: p=810f6000 <4>__get_free_pages calling page_address... <4>add_to_runqueue: p=810f4000 <4>add_to_runqueue: p=802b6000 <4>register_filesystem: calling find_filesystem... <4>find_filesystem: i(*p)->name=rootfs name=pipefs <4>find_filesystem: i(*p)->name=bdev name=pipefs <4>find_filesystem: i(*p)->name=sockfs name=pipefs <4>find_filesystem: i(*p)->name=tmpfs name=pipefs <4>find_filesystem: p=801a4288 <4>register_filesystem: p=801a4288 *p=00000000 <4>find_filesystem: i(*p)->name=rootfs name=pipefs <4>find_filesystem: i(*p)->name=bdev name=pipefs <4>find_filesystem: i(*p)->name=sockfs name=pipefs <4>find_filesystem: i(*p)->name=tmpfs name=pipefs <4>find_filesystem: i(*p)->name=pipefs name=pipefs <4>find_filesystem: p=801a4288 <4>do_kern_mount: fstype="pipefs" type=801a4748 flags=0 name="pipefs" data=00000000 <4>do_kern_mount: get_sb_nodev sb=802b5c00 <4>do_kern_mount: mnt=810b6220 <4>register_filesystem: calling find_filesystem... <4>find_filesystem: i(*p)->name=rootfs name=ext2 <4>find_filesystem: i(*p)->name=bdev name=ext2 <4>find_filesystem: i(*p)->name=sockfs name=ext2 <4>find_filesystem: i(*p)->name=tmpfs name=ext2 <4>find_filesystem: i(*p)->name=pipefs name=ext2 <4>find_filesystem: p=801a4758 <4>register_filesystem: p=801a4758 *p=00000000 <4>register_filesystem: calling find_filesystem... <4>find_filesystem: i(*p)->name=rootfs name=ramfs <4>find_filesystem: i(*p)->name=bdev name=ramfs <4>find_filesystem: i(*p)->name=sockfs name=ramfs <4>find_filesystem: i(*p)->name=tmpfs name=ramfs <4>find_filesystem: i(*p)->name=pipefs name=ramfs <4>find_filesystem: i(*p)->name=ext2 name=ramfs <4>find_filesystem: p=801a4c90 <4>register_filesystem: p=801a4c90 *p=00000000 <4>__get_free_pages calling page_address... <4>__get_free_pages calling page_address... <4>__get_free_pages calling page_address... <4>add_to_runqueue: p=810fa000 <6>Serial driver version 5.05c (2001-07-08) with MANY_PORTS SHARE_IRQ SERIAL_PCI enabledþ <6>ttyS00 at 0xbe800000 (irq = 2) is a ST16654 <6>ttyS01 at 0xbe880000 (irq = 0) is a ST16654 <6>ttyS02 at 0xbe900000 (irq = 0) is a ST16654 <6>ttyS03 at 0xbe980000 (irq = 0) is a ST16654 <6>ttyS04 at 0xbea00000 (irq = 0) is a ST16654 <6>ttyS05 at 0xbea80000 (irq = 0) is a ST16654 <6>ttyS06 at 0xbeb00000 (irq = 0) is a ST16654 <6>ttyS07 at 0xbeb80000 (irq = 0) is a ST16654 <4>RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize <4>add_to_runqueue: p=802b0000 <4>add_to_runqueue: p=802b6000 <4>add_to_runqueue: p=802b0000 <4>add_to_runqueue: p=802b6000 <4>init: calling prepare_namespace.. <4>prepare_namespace: sys_mkdir dev <4>__get_free_pages calling page_address... <4>sys_mkdir: tmp=/dev mode=1c0 <4>path_lookup: calling path_init with path=/dev flags=10 nd=802b7f50 <4>path_init: name=/dev flags=10 nd=802b7f50 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>sys_mkdir: path_lookup error=0 <4>sys_mkdir: lookup_create dentry=802bd320 <4>sys_mkdir: vfs_mkdir error=0 <4>sys_mkdir: tmp=810f1000 error=0 <4>prepare_namespace: sys_mkdir root <4>sys_mkdir: tmp=/root mode=1c0 <4>path_lookup: calling path_init with path=/root flags=10 nd=802b7f50 <4>path_init: name=/root flags=10 nd=802b7f50 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>sys_mkdir: path_lookup error=0 <4>sys_mkdir: lookup_create dentry=802bd3a0 <4>sys_mkdir: vfs_mkdir error=0 <4>sys_mkdir: tmp=810f1000 error=0 <4>prepare_namespace: sys_mknod dev/console <4>sys_mknod: filename=/dev/console mode=2180 dev=501 <4>path_lookup: calling path_init with path=/dev/console flags=10 nd=802b7f48 <4>path_init: name=/dev/console flags=10 nd=802b7f48 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>sys_mknod: path_lookup error=0 <4>sys_mknod: lookup_create dentry=802bd420 <4>__get_free_pages calling page_address... <4>__get_free_pages calling page_address... <4>sys_mknod: vfs_mknod error=0 <4>sys_mknod: tmp=/dev/console error=0 <4>prepare_namespace: ROOT_DEV=100 <4>create_dev: *name=/dev/root dev=100 *devfs_name= <4>path_lookup: calling path_init with path=/dev/root flags=10 nd=802b7ef8 <4>path_init: name=/dev/root flags=10 nd=802b7ef8 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>sys_mknod: filename=/dev/root mode=6180 dev=100 <4>path_lookup: calling path_init with path=/dev/root flags=10 nd=802b7ee8 <4>path_init: name=/dev/root flags=10 nd=802b7ee8 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>sys_mknod: path_lookup error=0 <4>sys_mknod: lookup_create dentry=802bd4a0 <4>sys_mknod: vfs_mknod error=0 <4>sys_mknod: tmp=/dev/root error=0 <4>create_dev: *name=/dev/ram dev=100 *devfs_name= <4>path_lookup: calling path_init with path=/dev/ram flags=10 nd=802b7ee0 <4>path_init: name=/dev/ram flags=10 nd=802b7ee0 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>sys_mknod: filename=/dev/ram mode=6180 dev=100 <4>path_lookup: calling path_init with path=/dev/ram flags=10 nd=802b7ed0 <4>path_init: name=/dev/ram flags=10 nd=802b7ed0 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>sys_mknod: path_lookup error=0 <4>sys_mknod: lookup_create dentry=802bd520 <4>sys_mknod: vfs_mknod error=0 <4>sys_mknod: tmp=/dev/ram error=0 <4>create_dev: *name=/dev/initrd dev=1fa *devfs_name= <4>path_lookup: calling path_init with path=/dev/initrd flags=10 nd=802b7ee0 <4>path_init: name=/dev/initrd flags=10 nd=802b7ee0 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>sys_mknod: filename=/dev/initrd mode=6180 dev=1fa <4>path_lookup: calling path_init with path=/dev/initrd flags=10 nd=802b7ed0 <4>path_init: name=/dev/initrd flags=10 nd=802b7ed0 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>sys_mknod: path_lookup error=0 <4>sys_mknod: lookup_create dentry=802bd5a0 <4>sys_mknod: vfs_mknod error=0 <4>sys_mknod: tmp=/dev/initrd error=0 <4>open_namei: pathname=/dev/ram <4>path_lookup: calling path_init with path=/dev/ram flags=1 nd=802b7e28 <4>path_init: name=/dev/ram flags=1 nd=802b7e28 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>open_namei: inode=810f0420 <4>open_namei: error=0 permission=80102fe0 <4>open_namei: get_lease error=0 <4>open_namei: inode=810f0420 <4>open_namei: return with 0 <4>dentry_open: calling get_empty_filp... <4>__get_free_pages calling page_address... <4>dentry_open: get_empty_filp f=810ee0a0 <4>dentry_open: calling get_write_access... <4>dentry_open: get_write_access error=0 <4>dentry_open: calling fops_get... <4>dentry_open: f->f_op=801a4498 <4>dentry_open: inode->i_sb->s_files=810ee0a0 <4>dentry_open: calling f->f_op->open... <4>__get_free_pages calling page_address... <4>dentry_open: f->f_op->open error=0 <4>dentry_open: return f=810ee0a0 <4>open_namei: pathname=/dev/initrd <4>path_lookup: calling path_init with path=/dev/initrd flags=1 nd=802b7e28 <4>path_init: name=/dev/initrd flags=1 nd=802b7e28 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>open_namei: inode=810f0600 <4>open_namei: error=0 permission=80102fe0 <4>open_namei: get_lease error=0 <4>open_namei: return with 0 <4>dentry_open: calling get_empty_filp... <4>dentry_open: get_empty_filp f=810ee120 <4>dentry_open: calling fops_get... <4>dentry_open: f->f_op=801a4498 <4>dentry_open: inode->i_sb->s_files=810ee120 <4>dentry_open: calling f->f_op->open... <4>dentry_open: f->f_op->open error=0 <4>dentry_open: return f=810ee120 <5>RAMDISK: Compressed image found at block 0 <4>__get_free_pages calling page_address... <4>__get_free_pages calling page_address... <4>__get_free_pages calling page_address... <4>__get_free_pages calling page_address... <3>crc error<6>Freeing initrd memory: 388k freed <4>path_lookup: calling path_init with path=/dev/ram flags=10 nd=802b7ef8 <4>path_init: name=/dev/ram flags=10 nd=802b7ef8 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>mount_root: root_device_name= <4>create_dev: *name=/dev/root dev=100 *devfs_name= <4>path_lookup: calling path_init with path=/dev/root flags=10 nd=802b7ed8 <4>path_init: name=/dev/root flags=10 nd=802b7ed8 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>sys_mknod: filename=/dev/root mode=6180 dev=100 <4>path_lookup: calling path_init with path=/dev/root flags=10 nd=802b7ec8 <4>path_init: name=/dev/root flags=10 nd=802b7ec8 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>sys_mknod: path_lookup error=0 <4>sys_mknod: lookup_create dentry=802bd4a0 <4>sys_mknod: vfs_mknod error=0 <4>sys_mknod: tmp=/dev/root error=0 <4>mount_block_root: fs_names=810f1000: "/dev/root" <4>get_fs_names: s=00008001 page=810f1000 "/dev/root" <4>get_fs_names: root_fs_names=00000000 page=810f1000 "/dev/root" <4>get_fs_names: len=80 <4>get_fs_names: p= <4>get_fs_names: p= <4>nodev bdev <4>nodev sockfs <4>nodev tmpfs <4>nodev pipefs <4> ext2 <4>nodev ramfs <4> <4>get_fs_names: p= <4>nodev sockfs <4>nodev tmpfs <4>nodev pipefs <4> ext2 <4>nodev ramfs <4> <4>get_fs_names: p= <4>nodev tmpfs <4>nodev pipefs <4> ext2 <4>nodev ramfs <4> <4>get_fs_names: p= <4>nodev pipefs <4> ext2 <4>nodev ramfs <4> <4>get_fs_names: p= <4> ext2 <4>nodev ramfs <4> <4>get_fs_names: p= <4>nodev ramfs <4> <4>get_fs_names: p= <4> <4>mount_block_root: get_fs_names done <4>sys_mount: dev_name=/dev/root dir_name=/root type=ext2 flags=8001 data= <4>__get_free_pages calling page_address... <4>sys_mount: type_page=ext2 retval=0 <4>__get_free_pages calling page_address... <4>sys_mount: dir_page=/root <4>__get_free_pages calling page_address... <4>sys_mount: dev_page=/dev/root retval=0 <4>sys_mount: data_page= retval=0 <4>do_mount: flags=8001 <4>path_lookup: calling path_init with path=/root flags=9 nd=802b7eb0 <4>path_init: name=/root flags=9 nd=802b7eb0 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>do_mount: &nd=802b7eb0 retval=0 <4>find_filesystem: i(*p)->name=rootfs name=ext2 <4>find_filesystem: i(*p)->name=bdev name=ext2 <4>find_filesystem: i(*p)->name=sockfs name=ext2 <4>find_filesystem: i(*p)->name=tmpfs name=ext2 <4>find_filesystem: i(*p)->name=pipefs name=ext2 <4>find_filesystem: i(*p)->name=ext2 name=ext2 <4>find_filesystem: p=801a4758 <4>do_kern_mount: fstype="ext2" type=801a4c80 flags=8001 name="/dev/root" data=00000000 <4>get_sb_bdev: fs_type=801a4c80 flags=8001 dev_name="/dev/root" data=00000000 <4>path_lookup: calling path_init with path=/dev/root flags=9 nd=802b7df0 <4>path_init: name=/dev/root flags=9 nd=802b7df0 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>get_sb_bdev: path_lookup error=0 <4>get_sb_bdev: bdev->bd_dev= <4>get_sb_bdev: blkdev_get error=0 <4>__get_free_pages calling page_address... <4>get_sb_bdev: s=-2129713152 <4>do_kern_mount: get_sb_bdev sb=810f2800 <4>do_kern_mount: mnt=810b6260 <4>do_add_mount: mnt=810b6260 err=-2129960352 <4>do_add_mount: <4>do_mount: do_add_mount retval=0 <4>do_mount: exiting with retval=0 <4>sys_mount: do_mount retval=0 <4>sys_mount: retval=0 <4>mount_block_root: err=0 *p= flags=8001 root_mount_data=0 <4>path_lookup: calling path_init with path=/root flags=b nd=802b7f00 <4>path_init: name=/root flags=b nd=802b7f00 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>mount_block_root: ROOT_DEV=100 <4>VFS: Mounted root (ext2 filesystem) readonly. <4>path_lookup: calling path_init with path=/dev flags=9 nd=802b7f58 <4>path_init: name=/dev flags=9 nd=802b7f58 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>sys_mount: dev_name=. dir_name=/ type= flags=2000 data= <4>sys_mount: type_page= retval=0 <4>sys_mount: dir_page=/ <4>__get_free_pages calling page_address... <4>sys_mount: dev_page=. retval=0 <4>sys_mount: data_page= retval=0 <4>do_mount: flags=2000 <4>path_lookup: calling path_init with path=/ flags=9 nd=802b7f08 <4>path_init: name=/ flags=9 nd=802b7f08 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>do_mount: &nd=802b7f08 retval=0 <4>path_lookup: calling path_init with path=. flags=9 nd=802b7ea0 <4>path_init: name=. flags=9 nd=802b7ea0 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>do_mount: do_move_mount retval=0 <4>do_mount: exiting with retval=0 <4>sys_mount: do_mount retval=0 <4>sys_mount: retval=0 <4>path_lookup: calling path_init with path=. flags=2b nd=802b7f60 <4>path_init: name=. flags=2b nd=802b7f60 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>init: calling free_initmem.. <6>Freeing unused kernel memory: 80k freed <4>init: calling unlock_kernel.. <4>__get_free_pages calling page_address... <4>init: calling open dev console.. <4>open_namei: pathname=/dev/console <4>path_lookup: calling path_init with path=/dev/console flags=1 nd=802b7ea8 <4>path_init: name=/dev/console flags=1 nd=802b7ea8 <4>path_lookup: calling path_walk.. <2>EXT2-fs error (device ramdisk(1,0)): ext2_check_page: bad entry in directory #69: rec_len is smaller than minimal - offset=0, inode=0, rec_len=0, name_len=0 <4>path_lookup: error=0 <4>open_namei: inode=00000000 <4>open_namei: exit error=-2 <4>Warning: unable to open an initial console. <4>init: open dev console done <4>init: calling run_init_process sbin init.. <4>path_lookup: calling path_init with path=/sbin/init flags=9 nd=802b7d40 <4>path_init: name=/sbin/init flags=9 nd=802b7d40 <4>path_lookup: calling path_walk.. <2>EXT2-fs error (device ramdisk(1,0)): ext2_check_page: bad entry in directory #56: rec_len is smaller than minimal - offset=0, inode=0, rec_len=0, name_len=0 <4>path_lookup: error=-2 <4>init: calling run_init_process etc init.. <4>path_lookup: calling path_init with path=/etc/init flags=9 nd=802b7d40 <4>path_init: name=/etc/init flags=9 nd=802b7d40 <4>path_lookup: calling path_walk.. <4>path_lookup: error=-2 <4>init: calling run_init_process bin init.. <4>path_lookup: calling path_init with path=/bin/init flags=9 nd=802b7d40 <4>path_init: name=/bin/init flags=9 nd=802b7d40 <4>path_lookup: calling path_walk.. <4>__get_free_pages calling page_address... <4>path_lookup: error=-2 <4>init: calling run_init_process bin sh.. <4>path_lookup: calling path_init with path=/bin/sh flags=9 nd=802b7d40 <4>path_init: name=/bin/sh flags=9 nd=802b7d40 <4>path_lookup: calling path_walk.. <4>path_lookup: error=0 <4>dentry_open: calling get_empty_filp... <4>dentry_open: get_empty_filp f=810ee0a0 <4>dentry_open: calling fops_get... <4>dentry_open: f->f_op=801a4b10 <4>dentry_open: inode->i_sb->s_files=810ee0a0 <4>dentry_open: calling f->f_op->open... <4>dentry_open: f->f_op->open error=0 <4>dentry_open: return f=810ee0a0 <4>__get_free_pages calling page_address... <4>__get_free_pages calling page_address... <4>add_to_runqueue: p=80190000 <4>path_lookup: calling path_init with path=/sbin/modprobe flags=9 nd=80191cf0 <4>path_init: name=/sbin/modprobe flags=9 nd=80191cf0 <4>path_lookup: calling path_walk.. <4>path_lookup: error=-2 <3>kmod: failed to exec /sbin/modprobe -s -k binfmt-464c, errno = 2 <4>add_to_runqueue: p=802b6000 <4>__get_free_pages calling page_address... <4>add_to_runqueue: p=80190000 <4>path_lookup: calling path_init with path=/sbin/modprobe flags=9 nd=80191cf0 <4>path_init: name=/sbin/modprobe flags=9 nd=80191cf0 <4>path_lookup: calling path_walk.. <4>path_lookup: error=-2 <3>kmod: failed to exec /sbin/modprobe -s -k binfmt-464c, errno = 2 <4>add_to_runqueue: p=802b6000 <0>Kernel panic: No init found. Try passing init= option to kernel. <4> [system rebooted to PMON...]