清空根分区后启动成功

清空根分区后启动成功

我试图安装一个新内核(为了好玩)。我下载了 linux-5.2.9 内核(在我的根分区 /usr/src 中),然后使用make和构建它make modules install

但在启动时,grub我最初无法启动它,启动过程挂起[OK] Listening on ....或类似情况。然后我进入恢复模式并删除了 linux-5.2.9 的源文件以在根分区中腾出一些空间,然后,所有内核都成功启动(有一些错误和失败)。

所以我的问题是,为什么在根分区中腾出空间可以让它启动,以及为什么在启动时根分区中的空间很重要?

答案1

尝试新的内核总是一个好主意...然而,在没有软件包系统的情况下安装它们并不是那么好:构建自己的内核Wiki 描述了您将来应该如何做。

在内核源代码中运行makemake module_install只是第二步。你是如何配置内核的?通常你会遵循以下步骤:

  1. 配置内核:一个好的选择是使用运行内核的配置形式/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 芯片兼容。

  2. 构建并安装模块(如你所做的一样)

    $ make && make module_install
    
  3. 将内核复制到/boot。可用的映像取决于你的内核配置

    $ cp arch/x86/boot/bzimage /boot/vmlinuz
    
  4. 创建initrd。这是你错过的部分,如果没有映像,默认内核将无法启动initrd。你也可以手动执行此操作,但有一个有用的脚本可以做到这一点更新-initramfs

    $ update-initramfs -c -k 5.2.9
    
  5. 添加新条目至grup更新 grub可以做到这一点,但是它要求内核和模块具有相同的命名约定。

    $ update-grub
    

回答你的问题://boot分区中的空间对 Linux 内核没有影响。事实上,内核根本不需要这两个分区。例如,Ubuntu 恢复模式只需要initrd并启动busyboxshell。

因此删除下面的内核源代码/usr/src并不能解决您的问题。一定是您做了其他事情。

相关内容