![清空根分区后启动成功](https://linux22.com/image/915179/%E6%B8%85%E7%A9%BA%E6%A0%B9%E5%88%86%E5%8C%BA%E5%90%8E%E5%90%AF%E5%8A%A8%E6%88%90%E5%8A%9F.png)
我试图安装一个新内核(为了好玩)。我下载了 linux-5.2.9 内核(在我的根分区 /usr/src 中),然后使用make
和构建它make modules install
。
但在启动时,grub
我最初无法启动它,启动过程挂起[OK] Listening on ....
或类似情况。然后我进入恢复模式并删除了 linux-5.2.9 的源文件以在根分区中腾出一些空间,然后,所有内核都成功启动(有一些错误和失败)。
所以我的问题是,为什么在根分区中腾出空间可以让它启动,以及为什么在启动时根分区中的空间很重要?
答案1
尝试新的内核总是一个好主意...然而,在没有软件包系统的情况下安装它们并不是那么好:构建自己的内核Wiki 描述了您将来应该如何做。
在内核源代码中运行make
和make module_install
只是第二步。你是如何配置内核的?通常你会遵循以下步骤:
配置内核:一个好的选择是使用运行内核的配置形式
/boot/config-<kernel version>
$ cp /boot/config-5.0.0-25-generic /usr/src/ linux-5.2.9/.config $ cd /usr/src/linux-5.2.9/ && make menuconfig
更新配置内核
make defconfig
将创建一个可工作的内核,但是它只配置了一组最小的驱动程序。例如,它可能无法与当前的显卡或 SATA 芯片兼容。构建并安装模块(如你所做的一样)
$ make && make module_install
将内核复制到
/boot
。可用的映像取决于你的内核配置$ cp arch/x86/boot/bzimage /boot/vmlinuz
创建
initrd
。这是你错过的部分,如果没有映像,默认内核将无法启动initrd
。你也可以手动执行此操作,但有一个有用的脚本可以做到这一点更新-initramfs:$ update-initramfs -c -k 5.2.9
添加新条目至
grup
。更新 grub可以做到这一点,但是它要求内核和模块具有相同的命名约定。$ update-grub
回答你的问题:/
或/boot
分区中的空间对 Linux 内核没有影响。事实上,内核根本不需要这两个分区。例如,Ubuntu 恢复模式只需要initrd
并启动busybox
shell。
因此删除下面的内核源代码/usr/src
并不能解决您的问题。一定是您做了其他事情。