先说明一点:redhat所使用的kernel是不支持reiserfs的,所以要让redhat的根分区
使用reiserfs,一般的方法是重编译内核。这篇短文不是教你怎么重编译内核,这是谁都
会的,不用我原创。事实上这里仍然使用redhat安装时提供的内核。
论坛上有朋友问起redhat不重编译内核在根分区使用reiserfs的方法,开始觉得不可
能,因为挂根分区是内核加载完之后做的第一件事情,那个时候还没文件系统,而红帽的
kernel不支持reiserfs,要支持的话必须 modprobe reiserfs 插入reiserfs的驱动,这
个时候连文件系统都没有,更别说找到reiserfs.o这个文件了。
后来想想其实是有办法的。仔细研究一下redhat的启动过程就可以知道,内核加载完
后首先挂的不是安装时所指定的硬盘分区(如hda1,hda5等),而是和vmlinuz-2.4.18.14同
在一个目录下的/boot/initrd-2.4.18-14.img。initrd-2.4.18-14.img 这个文件是个压
缩文件,解压后被放到内存里面,对内核来说就是ramdisk(/dev/ram0)。而这个ramdisk
的格式是ext2。在ramdisk加载完后运行一些ramdisk里面指定的命令后才加载真正的根分
区设备:/dev/hda1,/dev/hda5等,然后ramdisk被卸载。
可以这样理解,之所以有/boot/initrd-2.4.18-14.img这个东西,是让redhat Linux
在挂根分区之前有能力作一些kernel没做的处理(一般是加载scsi驱动)
问题简单了:我们只要做个initrd文件,让他加载reiserfs.o这个驱动,那么reiserfs
的根分区不就能挂上去了吗?事实上这个initrd文件也不用自己一步一步做,有个工具:
mkinitrd。执行:
mkinitrd aaa.img 2.4.18-14 --preload=reiserfs
在当前目录下产生一个叫做aaa.img的initrd文件,把它拷到同kernel同一目录,重
新编辑一下lilo.conf或grub.conf就可以了
又有了新问题:本文不是叫做“如何让redhat8安装时使用reiserfs”吗,可redhat
的安装程序里面在分区的时候明明没有提供reiserfs这个选项啊?没错,往下看。大家都
知道使用redhat的时候可以通过同时按下alt+f1 -- fn选择多个终端,其实在安装的时候
你也可以这样做。试试看在安装程序显示完前面几个没用的消息之后按下 alt+f2,你得
到了一个shell!这样做:手工使用fdisk分区(很简单,一学就会),mkreiserfs把分区格
成reiserfs,然后在redhat安装程序的分区工具(就是那个名字叫d什么什么的东西)里只
选择各个分区的挂载点就行了,然后选软件包往下装。
装完之后重起会出错提示没办法挂载根分区,这个时候就要用一张软盘上的linux(或
其他可用的linux)把刚装的东西挂上去,然后把上面所说的自己字所制作的那个aaa.img
拷过去,改grub.conf就ok了
本文次序上可能有点凌乱,大家将就着看吧,能看明白的自然知道我是什么意思,看
不明白的应该也不会喜欢reiserfs。
(出处:http://www.sheup.com)