Arch-Linux
為什麼我的編譯核心沒有出現在 GRUB 引導菜單中?
我正在嘗試編譯和安裝我自己的核心(5.2.0-rc7),一切似乎都工作正常,直到我重新啟動以實際啟動它並且無法從我的 GRUB 啟動菜單中選擇它。我已經編寫了一個腳本(並且手動完成,沒有任何區別)根據Arch wiki上的說明為我編譯和安裝。一切都編譯沒有錯誤,
make modules_install
將正確的文件放在 /lib/modules 文件夾中,並且正確的圖像似乎在 /boot 目錄中。mkinitcpio
完成沒有錯誤,當我執行grub-mkconfig
它似乎找到我新安裝的自定義核心給我這個輸出:Generating grub configuration file ... Found linux image: /boot/vmlinuz-linux Found initrd image: /boot/intel-ucode.img /boot/initramfs-linux.img Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img Found linux image: /boot/vmlinuz-5.2.0-rc7-test Found initrd image: /boot/intel-ucode.img /boot/initramfs-5.2.0-rc7-test.img done
當我查看生成的
grub.cfg
文件時,我發現它確實包含了新安裝的核心,如下所示:# # DO NOT EDIT THIS FILE # # It is automatically generated by grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### insmod part_gpt insmod part_msdos if [ -s $prefix/grubenv ]; then load_env fi if [ "${next_entry}" ] ; then set default="${next_entry}" set next_entry= save_env next_entry set boot_once=true else set default="0" fi if [ x"${feature_menuentry_id}" = xy ]; then menuentry_id_option="--id" else menuentry_id_option="" fi export menuentry_id_option if [ "${prev_saved_entry}" ]; then set saved_entry="${prev_saved_entry}" save_env saved_entry set prev_saved_entry= save_env prev_saved_entry set boot_once=true fi function savedefault { if [ -z "${boot_once}" ]; then saved_entry="${chosen}" save_env saved_entry fi } function load_video { if [ x$feature_all_video_module = xy ]; then insmod all_video else insmod efi_gop insmod efi_uga insmod ieee1275_fb insmod vbe insmod vga insmod video_bochs insmod video_cirrus fi } if [ x$feature_default_font_path = xy ] ; then font=unicode else insmod part_msdos insmod ext2 set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos1' --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 9c56060e-d76c-4cea-8c41-137092164107 else search --no-floppy --fs-uuid --set=root 9c56060e-d76c-4cea-8c41-137092164107 fi font="/usr/share/grub/unicode.pf2" fi if loadfont $font ; then set gfxmode=auto load_video insmod gfxterm fi terminal_input console terminal_output gfxterm if [ x$feature_timeout_style = xy ] ; then set timeout_style=menu set timeout=5 # Fallback normal timeout code in case the timeout_style feature is # unavailable. else set timeout=5 fi ### END /etc/grub.d/00_header ### ### BEGIN /etc/grub.d/10_linux ### menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-9c56060e-d76c-4cea-8c41-137092164107' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod ext2 set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos1' --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 9c56060e-d76c-4cea-8c41-137092164107 else search --no-floppy --fs-uuid --set=root 9c56060e-d76c-4cea-8c41-137092164107 fi echo 'Loading Linux linux ...' linux /boot/vmlinuz-linux root=UUID=9c56060e-d76c-4cea-8c41-137092164107 rw quiet echo 'Loading initial ramdisk ...' initrd /boot/intel-ucode.img /boot/initramfs-linux.img } submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-9c56060e-d76c-4cea-8c41-137092164107' { menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-9c56060e-d76c-4cea-8c41-137092164107' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod ext2 set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos1' --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 9c56060e-d76c-4cea-8c41-137092164107 else search --no-floppy --fs-uuid --set=root 9c56060e-d76c-4cea-8c41-137092164107 fi echo 'Loading Linux linux ...' linux /boot/vmlinuz-linux root=UUID=9c56060e-d76c-4cea-8c41-137092164107 rw quiet echo 'Loading initial ramdisk ...' initrd /boot/intel-ucode.img /boot/initramfs-linux.img } menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-9c56060e-d76c-4cea-8c41-137092164107' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod ext2 set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos1' --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 9c56060e-d76c-4cea-8c41-137092164107 else search --no-floppy --fs-uuid --set=root 9c56060e-d76c-4cea-8c41-137092164107 fi echo 'Loading Linux linux ...' linux /boot/vmlinuz-linux root=UUID=9c56060e-d76c-4cea-8c41-137092164107 rw quiet echo 'Loading initial ramdisk ...' initrd /boot/initramfs-linux-fallback.img } menuentry 'Arch Linux, with Linux 5.2.0-rc7-test' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.2.0-rc7-test-advanced-9c56060e-d76c-4cea-8c41-137092164107' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod ext2 set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos1' --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 9c56060e-d76c-4cea-8c41-137092164107 else search --no-floppy --fs-uuid --set=root 9c56060e-d76c-4cea-8c41-137092164107 fi echo 'Loading Linux 5.2.0-rc7-test ...' linux /boot/vmlinuz-5.2.0-rc7-test root=UUID=9c56060e-d76c-4cea-8c41-137092164107 rw quiet echo 'Loading initial ramdisk ...' initrd /boot/intel-ucode.img /boot/initramfs-5.2.0-rc7-test.img } } ### END /etc/grub.d/10_linux ### ### BEGIN /etc/grub.d/20_linux_xen ### ### END /etc/grub.d/20_linux_xen ### ### BEGIN /etc/grub.d/30_os-prober ### ### END /etc/grub.d/30_os-prober ### ### BEGIN /etc/grub.d/40_custom ### # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. ### END /etc/grub.d/40_custom ### ### BEGIN /etc/grub.d/41_custom ### if [ -f ${config_directory}/custom.cfg ]; then source ${config_directory}/custom.cfg elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then source $prefix/custom.cfg; fi ### END /etc/grub.d/41_custom ###
但是,當我重新啟動我的虛擬機時,我看到 Grub 菜單沒有列出新安裝的核心,只列出了標準核心。根據 Arch wiki,需要做的就是執行
grub-mkconfig
命令來生成一個新的 grub 配置文件,如果它反映在配置文件中,它應該會顯示出來,但情況似乎並非如此。我錯過了什麼?**如何讓我新安裝的核心顯示在 Grub 啟動菜單中?**誰能指出我正確的方向?謝謝。
我在
5.1.16-arch1-1-ARCH
使用 Virtualbox 6.0.4 r128413執行的 Arch Linux 上執行此操作
您已經看到您的新核心
Arch Linux, with Linux 5.2.0-rc7-test
是子菜單中的第三個條目Advanced options for Arch Linux
?如果仍然沒有顯示,請嘗試以下操作:
c
在命令行的 grub 菜單中按下- 輸入
echo $prefix
Enter
,這應該顯示您的分區和路徑/boot/grub
。驗證這是正確的分區。- 輸入
cat $prefix/grub.cfg
Enter
,這應該會顯示您目前的grub.cfg
. 如果這是一個不同的文件,那麼你的 grub 安裝有問題。文件: