在内核启动之前,grub2 菜单之间花费了很长时间

在内核启动之前,grub2 菜单之间花费了很长时间

我安装了一个最小的 ubuntu (xubuntu-core)。它运行良好,但启动速度有点太慢。

在我在 grub 中做出选择后,屏幕立即变黑,大约 15 秒后我看到内核启动消息,以[ 0.028000].那么它在这之间做了什么,即在 grub 之后,但在启动消息之前。我怎样才能找到答案?

我记得在旧的安装中,grub 本身生成输出(甚至可能是日志文件?) 有没有办法让 grub 更详细?

编辑:systemd-bootchart 告诉我显示管理器在 8 秒后启动。然而,从我在 grub 中做出选择的那一刻起,大约过了 25 秒。

我在 grub 中选择的部分非常普通:

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-29414df5-b194-46a5-ae12-dac11924ae3c' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root  29414df5-b194-46a5-ae12-dac11924ae3c
        else
          search --no-floppy --fs-uuid --set=root 29414df5-b194-46a5-ae12-dac11924ae3c
        fi
        linux   /boot/vmlinuz-4.18.0-15-generic root=UUID=29414df5-b194-46a5-ae12-dac11924ae3c ro 
        initrd  /boot/initrd.img-4.18.0-15-generic
}

答案1

内核在启动的早期部分设置各种东西(CPU、内存、其他低级平台组件,例如中断控制器),并且始终记录相关消息。在时钟源初始化之前,所有消息的时间戳都为零。因此,即使在早期启动过程中的某个时刻存在很长的延迟,您也不会从时间戳中看到它。像只是可视化时间戳数据这样的工具systemd-bootchart,所以它们在这里也没有帮助。

您需要从早期阶段仔细查看 dmesg 日志,看看是否有任何问题。除非存在行为不当的平台组件、中断传送中断或其他问题,否则延迟可能来自为 KASLR 收集熵等步骤。您可以尝试使用启动nokaslr选项禁用它,看看是否有帮助。

答案2

跑步dmesg?调试启动时间的另一种可能性是系统引导图(或者引导图2init=/lib/systemd/systemd-bootchart),一个很好的工具,当传递到内核时,它可以将启动过程可视化为 SVG 。

相关内容