环境:linux内核加载自己的制作的文件系统。
错误信息有以下几种:
错误信息1:
Root-NFS: Server returned error -5 while mounting /mini2440/rootfs
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0)
Please append a correct "root=" boot option; here are the available partitions:
1f00 256 mtdblock0 (driver?)
1f01 128 mtdblock1 (driver?)
1f02 5120 mtdblock2 (driver?)
1f03 125568 mtdblock3 (driver?)
1f04 131072 mtdblock4 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
Backtrace:
[<c00341cc>] (dump_backtrace+0x0/0x10c) from [<c03
错误信息2:
Looking up port of RPC 100003/2 on 192.168.1.149
eth0: link up, 100Mbps, full-duplex, lpa 0xC9E1
Looking up port of RPC 100005/1 on 192.168.1.149
VFS: Mounted root (nfs filesystem) on device 0:11.
Freeing init memory: 156K
Kernel panic - not syncing: No init found. Try passing init= option to kernel.
Backtrace:
[<c00341cc>] (dump_backtrace+0x0/0x10c) from [<c0329b08>] (dump_stack+0x18/0x1c)
r7:00000000 r6:00000000 r5:c001f24c r4:c0481c30
这是我在加载自己的制作的文件系统的时候出现的错误信息。到网上找了帮助。
应该注意以下几点:
1、确保自己的内核镜像即uImage或者zImage正确,同时必须确保把镜像烧写到正确的地址,如果以nfs方式加载镜像的话,确保不要超出ram的地址范围。
2、linux主机上面的nfs服务是否安装好。nfs的确定可以参见我之前的记录。
3、linuxrc的权限问题没有设为可执行文件,在制作根文件系统时,最好 chmod 777 linuxrc 一下,以免出现Failed to execute /linuxrc的麻烦。
主要linuxrc文件的存在不是必须的。在没有linuxrc的时候busybox使用自己默认的文件,同时inittab文件也是非必须的。需要与否要根据自己的制作根文件系统的方法有关。
Freeing init memory: 156K
Failed to execute /linuxrc. Attempting defaults...为什么会有这个信息。
当使用busybox生成文件系统时,以static方式进行编译,同时把自动生成的linuxrc文件删除了,但是在uboot的bootargs中又其选项init=/linuxrc,因为在内核 main.c中init_post()函数中
if (execute_command) {
run_init_process(execute_command);
printk(KERN_WARNING "Failed to execute %s. Attempting "
"defaults...\n", execute_command);
} 需要执行其文件/linuxrc。因此没有此文件时可以的。
4、在安装busybox的时候,没有静态编译链接库。
解决方法,在busybox选项中选择静态编译,或者将交叉编译器中的lib/目录下的链接库 cp到根文件系统下的 lib/目录下,这样做出来的文件系统往往较大。
5、yaffs2 文件系统被烧写到了错误的分区。yaffs2 文件系统文件系统应烧写在nand的root分区下。其分区信息可以到内核源代码中找到如:
mach-mini2440.c中的static struct mtd_partition friendly_arm_default_nand_part[] 数据 定 义了分区信息。
6、如果你是用的是uboot,你是否用对了yaffs的烧写指令,nand write.yaffs 而不是 nand write ,另外你的uboot是否正确修改了yaffs文件系统的烧写支持。
7、mkyaffs2image工具 做的是否成功?