|
系统为centos4.7,有3个linux用分区,另有一个swap分区
/dev/sda8: /boot ext3
/dev/sda9: / ext3
/dev/sda10: /usr/local reiser4
由于centos默认内核只支持ext3,无奈只好使用一个ext3文件系统的"/"分区来安装系统.之后,自行编译安装好了reiser4progs,可以正常使用mkfs.reiser4,fsck.reiser4等工具,再编译好一个2.6.28 + reiser4-patch的内核,用mkinitrd生成相应的initial ram disk,并新加一个/dev/sda10盘作为/usr/local,系统使用正常(ext3模块和reiser4模块直接编译进内核,不采用module).
最近总是觉得ext3速度太慢,还是reiser4用得爽,想把/分区也一并换成reiser4,只保留/boot采用ext3保证启动时的兼容性问题(我用的grub4dos,不支持reiser4).步骤如下:
1.先修改/etc/fstab,将其中挂载/dev/sda10为/usr/local的一行注释掉
2.重新启动后另行挂载/dev/sda10,把/分区下的东东全拷贝到/dev/sda10下面去,当然/dev,/sys,/proc这些特殊目录只是在/dev/sda10下面建一个目录就行了,没有傻到真的cp -r *./dev/sda10下面的etc/fstab也作了修改,将/dev/sda10指定为/,而/dev/sda8作为/boot仍然不变,注释掉/dev/sda9
3.现在相当于把整个系统都迁移到了/dev/sda10所在的reiser4分区上了,并且相应的/ect/fstab也已准备就绪,只有/boot仍然用/dev/sda8的ext3
完成上述准备后重启系统,问题就来了.如果用自己编译好的那个内核+生成的initrd启动,并且启动的root参数改为root=/dev/sda10,那么启动到挂载完initrd后,重新切换/到/dev/sda10的时候报错,说是无法挂载/dev/sda10,switch to new root failed.而我的内核明明已经有了reiser4的模块(直接编译进内核,而不是以module的方式挂载)
凭经验判断是生成的initrd有问题,只能把"/"切换到ext3上面,而不能切换到reiser4上面.于是打算重新生成一个initrd.先用原来的/dev/sda9作为/启动,然后mount /dev/sda10,再chroot过去,再mkinitrd的时候.报错,无法生成initrd(具体错误信息记不清了)
无奈,直接gunzip了initrd,再cpio -dvim将之前生成的initrd解开,发现其中init启动脚本里面有一行写的是***(具体是chroot dev还是mount root dev什么的记不清了),后面有-t ext3 的参数,满心欢喜以为问题就出在这里,改之,变为-t reiser4 ,其它不变,再重新cpio打包生成新的initrd,再次用此initd启动,参数仍然是root=/dev/sda10,但是这次更惨了了,直接报告无法挂载root 分区了,依稀记得错误提示是先把我硬盘上所有的分区列一遍(都是正确的),然后报告无法在上述分区中以ext3,reiser4等格式挂载root分区,这下更让我搞不明白了
又试了试以不用initial ramdisk的参数编译了一个内核,仍然直接指定root=/dev/sda10启动,依旧是kernel panic.让人很是郁闷.
估计所有的redhat/centos/fedora系列发行版在生成initrd的时候要判断当前的/分区文件系统类型,以后用这个initrd启动也必须保证/分区文件系统类型和生成这个文件时一致.因为网上看到有人用gentoo成功将/分区换成reiser4来用了,估计应该是和我类似的思路,但是不知redhat系列就为什么不行.
到底应该如何把/分区切换到reiser4文件系统上面去?在此向各位高人求教.
PS:请不要回帖讨论为什么用reiser4,或者xx文件系统更好等问题,这个争论下去又没完没了了,我只想求教一个切换"/"到非默认文件系统的方法. |
|