LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1025|回复: 6

如何向initrd中加入内核模块?

[复制链接]
发表于 2009-12-26 18:26:27 | 显示全部楼层 |阅读模式
目前rhel5.4已经支持EXT4了,最近想将rhel5.4移植到EXT4分区,但是发现启动的时候不能加载EXT4内核模块。我的做法是将initrd-2.6.18-164.el5.img解开,从/lib/modules/2.6.18-164.el5/kernel/fs/ext4/ext4.ko直接拷过来,重新生成initrd-2.6.18-164.el5.img,但是启动的时候不认ext4.ko,如何将内核模块加入到initrd-2.6.18-164.el5.img呢
发表于 2009-12-26 21:32:59 | 显示全部楼层
有个工具叫mkinitrd可以生成正确的启动映像文件。命令是:
# mkinitrd --fstab=/dev/fstab /boot/initrd-new.img `uname -r`
fstab 参数指定使用文件系统挂载信息
/boot/initrd-new.img 是新生成的启动映像,注意新增一个 grub 启动项目,使用此映像文件
`uname -r` 是内核名称
回复 支持 反对

使用道具 举报

发表于 2009-12-26 21:38:15 | 显示全部楼层
你还要修改initrd-2.6.18-164.el5.img里的启动脚本,加一行 modprobe ext4 来把模块装载入内核里。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-27 18:54:15 | 显示全部楼层
Post by chendy;2059593
有个工具叫mkinitrd可以生成正确的启动映像文件。命令是:
# mkinitrd --fstab=/dev/fstab /boot/initrd-new.img `uname -r`
fstab 参数指定使用文件系统挂载信息
/boot/initrd-new.img 是新生成的启动映像,注意新增一个 grub 启动项目,使用此映像文件
`uname -r` 是内核名称


这个命令不带LVM啊,mkinitrd以后没有把ext4加到*。img中
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-27 18:57:43 | 显示全部楼层
Post by 没本;2059597
你还要修改initrd-2.6.18-164.el5.img里的启动脚本,加一行 modprobe ext4 来把模块装载入内核里。


加了,按照init脚本里的加入insmod  /lib/ext4.ko

但是在启动的时候说加载的ext4.ko有错,如果进入系统以后运行modprobe ext4是正常的,所以想是不是initrd-2.6.18-164.el5.img里的*.ko模块和正常的*.ko模块不一样。我查过initrd-2.6.18-164.el5.img里ext3.ko和/lib/下对应内核的ext3.ko模块的md5,两者不一样
回复 支持 反对

使用道具 举报

发表于 2009-12-28 12:10:18 | 显示全部楼层
那么你试试把文件系统中的ext4内核模块复制到initrd的img里替换呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-28 12:48:13 | 显示全部楼层
Post by 没本;2060016
那么你试试把文件系统中的ext4内核模块复制到initrd的img里替换呢?


就是把文件系统中的内核赋值到initrd中才发现不能用的,我用mkinitrd 的选项--with=ext4 可以自动将ext4加进去了。
但是把生成的新的neo.img解开,里面的ext4.ko的md5和/lib/modules/`uname -r`/kernel/fs/ext4/ext4.ko的md5是不一样的,不知道为什么
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表