以前一直没有用initrd.昨天想尝试U disk上的linux系统。所以就用了initrd
在recomplie kernel的时候,就把ext2、ext3全部modules了。
没想到报这个错。
unable to mount root fs on unknown-block
网上说2.6.*的kernel要把ext2、ext3全部build-in.
照做了,又产生了initrd文件。
mkinitrd的用法
mkinitrd /boot/initrd-2.6.17-gentoo-r4 2.6.17-gentoo-r4
结果重启后又出现这个报错:
EXT3-fs:mounted filesystem with ordered data mode
pivotroot:pivot_root(/sysroot,/sysroot/initrd)failed:2
umount /initrd/proc failed:2
Freeing unused kernel memory:124k freed
kernel panic - not syncing: No init found. Try passing init=option to kernel.
通过error message的第一行已经知道了,系统对ext3的支持已经到位了。
一个小学语文没过关的人说ext2、ext3不能同时build-in,否则出现此报错。
报着试一试的想法,我将ext3 modules,将ext2 build-in(因为initrd为ext2,故必须build-in)
结果出现以下报错:
Mounting root filesystem
mount:error 19 mounting ext3
pivotroot:pivot_root(/sysroot,/sysroot/initrd) failed:2
umount /initrd/proc failed;2
Freeing unused kernel memory:124k freed
kernel panic - not syncing:No init found.Try passing init= option to kernel
此人没出现报错,估计可能是文字表达时没说清楚,真是害死人,拖出去斩了才好。误导观众!
于是又将ext2、ext3全部build-in.
俺寻遍google、baidu.最终找到个贴子,高人说:
mkdir /initrd
failed:2后面还有个2呢!2就是出错的含义。
应该说很多问题都会提示No init found. Try passing init= option to kernel.但pivotroot出错99%是没有initrd目录造成的。可以肯定一点ext3的模块没有问题,ext3的模块可以不在内核中而被正确使用,它通过initrd进行加载的。
开始我还傻傻的以为要在initrd文件里去建initrd目录,发现还是不行,后来一想,initrd根文件系统已经挂载了,那么在挂载的情况下报错,应该在real root filesystem里解决呀。
于是乎:
mkdir /initrd
reboot.解决。