LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: doze_worm

Gentoo安装的几点问题

[复制链接]
 楼主| 发表于 2007-3-23 16:51:43 | 显示全部楼层
有查到资料说命令
# mkinitrd -o /boot/initrd.img-2.X.XX /lib/modules/2.X.XX
可以自动生成initrd,可是我在当前安装的Gentoo系统中没有找到这个命令的可执行文件或脚本。请问它属于哪个软件包?emerge ??????? 可以得到这个命令?
回复 支持 反对

使用道具 举报

发表于 2007-3-24 19:00:38 | 显示全部楼层
kernel /boot/vmlinuz-Gentoo root=/dev/hda9

引导内核时用只读根分区,在引导内核后会重新挂载root分区为rw.  加上  " ro"试试.
  1. kernel /vmlinuz-Gentoo root=/dev/hda9  ro
复制代码
多说一句,/boot是独立分区时,在引导启动时,内核项中不能加入 /boot 因为在hda1 分区中并没有/boot分区.加上 (hd0,0)是可行的.这是指/boot分区在hda1的单独分区上----多余,前面已指出了"root (hd0,0)" 没有这一行则要求必写(hd0,0).如下;
title Gentoo 2.6.20-r2
    kernel   (hd0,0)/vmlinuz-Gentoo root=/dev/hda9  ro
    initrd   (hd0,0)/initrd-2.6.20-gentoo-r2-default
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-16 21:45:17 | 显示全部楼层
这个问题前一阵子已经解决了,现在又出现新问题了。
我现简述一下原来问题的解决方法:
    确实是模块冲突,解决办法就是在initramfs中替换相应内核模块。
    用原来的config-2.6.18-34作为新的内核的.config文件,直接编译。生成新的内核,并安装。然后把initrd-2.6.18-34-default复制出来,解压缩,再释放到一个文件夹下。

  1. # cd /home/xxx/workspace
  2. # cp /boot/initrd-2.6.18-34-default ./initrd-2.6.18-34-default.gz | tar -zxf
  3. # mkdir initrd
  4. # cd !$
  5. # cpio -i < ../initrd-2.6.18-34-default
复制代码

这时,/home/xxx/workspace/initrd/目录下就是系统启动时initramfs下的内容了,具体细节可以参考7楼的目录列表。
这时只需要把新编译安装好的内核的模块复制到这个initramfs的/lib/modules目录下

  1. # cp -r /lib/modules/2.6.20-r3-gentoo ./lib/modules/
复制代码

然后把系统启动时用不到的一系列模块删除掉就可以了,主要目的是为了减少initrd文件的体积。即精简./lib/modules/2.6.21-r3-gentoo/kernel/目录下的一系列文件夹,具体应该保留那些,只需参照./lib/modules/2.6.18.2-34-default/kernel/目录下的文件即可。
然后把./lib/modules/2.6.18.2-34-default目录也删除。再把initramfs重新打包、压缩即可了。

  1. # find . | cpio -c -o > ../initrd-2.6.20-r3-gentoo-default | gzip -9
  2. # cd .. && mv initrd-2.6.20-r3-gentoo-default.gz /boot/initrd-2.6.20-r3-gentoo-default
复制代码

至此,系统已经可以正常启动了。
我现在也已经是在2.6.20-r3的gentoo系统中工作了。
但我用相同的方法编译2.6.21的gentoo新内核时,制作出来的initrd文件不能被加载,系统显示

  1. compacted initramfs image was found on (hd0,0)
  2. tried mount filesystem type : cramfs minix iso9660
  3. kernel-panic : VFS .............(记不太清了,总之是文件系统无法被识别)
复制代码

起初疑似内核编译问题,但使用2.6.20-r3-gentoo的内核配合这个initrd-2.6.21-gentoo-default启动也出现同样的问题。
用2.6.21-gentoo的内核配合原来的initrd-2.6.20-r3-gentoo-default启动,initramfs镜像以被加载,只是报告无法找到/lib/modules/2.6.21-gentoo下的文件。

问题显然是出在新的initrd镜像的制作上。哪位达人知道cpio命令与哪些软件包相关?以及相关的需要,如使用的文件系统等。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-17 22:42:55 | 显示全部楼层
咋就没人告诉我还有genkernel这么个东东呢??
唉,我就是个傻子...
......
回复 支持 反对

使用道具 举报

发表于 2007-5-18 00:20:45 | 显示全部楼层
文档里有的.
回复 支持 反对

使用道具 举报

发表于 2007-5-18 12:24:07 | 显示全部楼层
genkernel  --help all ,懒得去折腾了。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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