我正试图在我的ubuntu20.04中安装一个linux-Kernel version 4.9.228。内核编译成功,没有任何错误。我还执行了以下命令:
sudo make modules_install install当我重新启动我的系统时,为了检查它是否做了正确的输入,我检查了/boot/目录下的文件:
System.map-4.9.228vmlinuz-4.9.228initrd.img-4.9.228config-4.9.228我不知道为什么,但是当我运行uname -r时。它没有更新我的版本。上面仍然写着5.4.0-37-generic。
如果我遗漏了什么,请指点我。
注意:所有这些的唯一目的是学习如何添加系统调用和如何编译内核。如果你有什么建议的话,我很乐意接受。谢谢。
发布于 2020-06-21 10:45:04
您可能已经成功地安装了不同的内核版本,但是为了引导到它,您需要告诉引导加载程序这样做。
我将假设您使用GRUB2作为引导加载程序,因为它是大多数发行版(包括Ubuntu )的标准。为了引导新内核,您有多个选项。
备选案文1
这是最安全和建议的选项。
/etc/default/grub (您需要是根文件,所以使用类似于sudo vi或sudo nano的东西),并确保有GRUB_TIMEOUT=N,N是几秒。如果你没有,那就把它添加到一个新的行。您希望N至少为5或10,以便在GRUB启动时有时间选择正确的内核版本。此外,确保您做了而不是有以下任何一行(您不应该有它们,但是如果您这样做了,则删除它们或注释它们):
GRUB_TIMEOUT_STYLE=hidden GRUB_DISABLE_RECOVERY=“真”GRUB_DISABLE_SUBMENU=y GRUB_HIDDEN_TIMEOUT=N
/etc/default/grub的更改并运行sudo update-grub。这将检测当前安装的内核,并在启动计算机并输入GRUB.时将它们添加到可引导列表中。
它应该是这样的:


选项2
只有在选项1不起作用时才使用它作为后盾(应该这样做,但您永远也不知道)。这并不像选项1那样干净,因为它改变了默认内核,并且更改可能也会被当前内核的升级所覆盖(从技术上讲,更新默认版本正是这样做的)。
/initrd.img和/vmilunuz两个符号链接来指向内核和initrd映像的正确版本,从而使内核成为默认的内核。这可以手动完成,也可以通过linux-update-symlinks命令完成。$linux版本列表-路径.获取正确的版本和路径.$ sudo linux更新-符号链接安装版本路径
sudo update-grub让GRUB检测更改.选项3
从GRUB命令行手动引导到所需的内核。这是一个高级选项,我只是把它作为最后的手段,除非您已经完全破坏了系统配置,否则您永远不需要这样做。
C键进入GRUB命令行。无论如何,请记住,如果您不确定自己在做什么,那么在您自己的机器上进行内核开发并不是一个好主意。我建议您使用虚拟机对内核进行实验,这样,如果有任何问题,您只需丢弃它并创建一个新的。
https://stackoverflow.com/questions/62492610
复制相似问题