如何构建主线内核并使其显示在GRUB上?

在成功编译和构建我的Ubuntu 10.04下的主线内核(2.6.32.25)并使用这些头文件后,我想知道:如何在启动时选择要引导的内核?
我已经安装了GRUB2(grup-install -v显示为:“GNU GRUB 0.97”)。
我尝试过以下方法:
sudo make install

然后得到:

luky@ubuntu1004:/usr/src/linux-2.6.32.25$ sudo make install
sh /usr/src/linux-2.6.32.25/arch/x86/boot/install.sh 2.6.32.25 arch/x86/boot/bzImage \
  System.map "/boot"

这是我的/boot文件夹:
luky@ubuntu1004:/boot$ ls
abi-2.6.32-24-generic         System.map-2.6.32-24-generic
config-2.6.32-24-generic      System.map-2.6.32.25
config-2.6.32.25              vmcoreinfo-2.6.32-24-generic
grub                          vmlinuz-2.6.32-24-generic
initrd.img-2.6.32-24-generic  vmlinuz-2.6.32.25
memtest86+.bin

我不想手动更改GRUB的配置文件。

上游内核的版本号中没有“-”,那是用于软件包版本。如果你说“2.6.32.25”会更清楚明了。 - Kees Cook
4个回答

嗯,最终解决我的问题的方法是:安装 grub-pc 软件包。这将替换掉 Ubuntu 10.04 默认的软件包。
我使用的是个人电脑,所以应该没问题。

或许是 grub-pc? - Extender

我假设你已经安装了grub2,因为你使用的是10.04版本,而不是grub legacy。你需要按照这里的说明更新grub:https://help.ubuntu.com/community/Grub2 应该很简单:sudo update-grub
这样可以检查新的内核并生成grub条目,从中你应该能够启动。

是的,我不确定那是解决方案,因为我也修改了我的/etc/default/grub文件...但现在它显示出来了。下一个问题:内核恐慌:无法挂载根文件系统笑死了! - Lucas Pottersky
这是因为你的/dev/sda4(或其他)在initramfs的/dev文件夹中丢失了。尝试使用sudo update-initramfs -u -k all命令进行更新。 - Extender

那个位置的内核是用来安装的,而不是自己构建的。它们已经在包装中包含了所有需要出现在 grub 等地方的内容。

要构建一个主线内核并且仍然获得一个合适的 .deb 包,请参考这里的说明:https://wiki.ubuntu.com/KernelTeam/GitKernelBuild

这将指导您完成构建前的先决条件,如何传输构建时的配置,并生成软件包。如果您不需要更改配置,请参阅 http://kernel.ubuntu.com/~kernel-ppa/mainline/daily/ 获取预构建的主线内核。


我忘了提到,我从kernel.org下载了源代码:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.25.tar.bz2 - Lucas Pottersky
你能编辑一下你的问题以反映这个吗?这会极大地改变答案。 :) - Kees Cook
是的,完成了。对于混淆感到抱歉!=) - Lucas Pottersky

在Ubuntu或任何基于Debian的系统中构建和安装内核,最好使用makepkg而不是通常的make、make modules_install等命令。 makepkg --initrd linux-image linux-headers 警告:有时可能会出现权限错误。
这将在父目录中创建一些.deb文件,可以像其他.deb文件一样进行安装。不用担心grub,它会自行配置;如果使用burg,则必须运行“sudo update-burg”。这也将确保正确生成initrd文件。

这个命令不起作用。 - Lucas Pottersky