我使用的是ubuntu 11.04
我有一个自定义的 2.6.36.4 内核源代码(如linux_src
)
Didmake mrproper
将我当前的配置复制到/boot
Did linux_src/.config
a make menuconfig
,指示它加载配置文件.config
。在一般设置中,我将字符串添加rr
到内核版本号中。退出配置。
做了一个make && make modules_install && make install
超级用户。这在 /boot 中创建了 vmlinuz-2.6.36.4rr 映像; /lib/modules 中的相应目录。 System.map 在 /boot 中,但不在 initrd 映像中
所以我运行了以下命令:
cd /boot && sudo mkinitramfs -k -o initrd.img-2.6.36.4rr
最后我跑了sudo update-grub
。 Grub 找到了我的新 linux 映像和新的 initrd 映像。
启动时,新安装的内核列在我的启动选项中。我选择了它,然后屏幕一片空白(但不是黑色的,它只是显示了一些默认的 ubuntu 主题彩色空白屏幕)并卡在那里。
我怀疑 makeinitramfs 进程是罪魁祸首。
另一方面,当我使用安装了相同的内核make-kpkg
并且dpkg
我不必做任何其他事情(甚至 initramfs)并且内核已完美启动(我不想用这种方法安装内核)。
请帮忙。
编辑:我取得了一些进展
而不是使用:
cd /boot && sudo mkinitramfs -k -o initrd.img-2.6.36.4rr
我用了
cd /boot && sudo mkinitramfs -k -o initrd.img-2.6.36.4rr 2.6.36.4rr
我相信这是使用 mkinitramfs 的正确方法。
但是,现在我的启动过程以“放弃等待根设备”和 initramfs 提示结束
答案1
阅读您的描述,我发现您在配置阶段没有做一件重要的事情:make oldconfig
在复制文件之后.config
,但在执行之前make menuconfig
(顺便说一句,如果配置保存.config
在源目录中的文件中,则不需要显式加载它- 这是默认完成的)。当新的内核版本与原来的内核版本至少有一点不同时,在所有情况下都需要这样做.config
。
我不确定你的 initramfs 创建方法 - 我曾经使用过的唯一一种是genkernel
.但要确定 initramfs 是否是罪魁祸首,您只需修改 grub 条目以指向旧的 initramfs 文件(当前系统使用的文件)即可。另外,当系统启动时,您通常可以按F1查看启动消息(可能需要quiet
先从启动加载程序菜单项中删除)。
编辑:
只是想一想:您的 grub 菜单项可能有问题(在/boot/grub/grub.cfg
或中找到/boot/grub/grub.conf
) - 比较新旧菜单项,也许内核参数是错误的(例如错误real_root
)。简单来说,除了内核位置和 initrd 之外,后面的行kernel
应该相同。