Qubes 無法在 Fedora/Qubes 雙啟動機器上啟動
我的目標是雙啟動 Qubes OS 3.1 和 Fedora 23 Workstation (respin)。這傢伙讓它在 Ubuntu 上執行,但他先安裝了 Ubuntu,而我先安裝了 Qubes。最後的手段是跟隨他並從頭開始重新安裝,但我想學習一些東西。
我嘗試了什麼:
- 安裝 Qubes OS 3.1 (OK)
- 更新 Qubes OS 3.1 dom0 和 Fedora23 模板(OK)
- 安裝了最新的 Fedora 23 Workstation respin(好的,但報告了一些 GRUB2 引導載入程序失敗;不過 Fedora 啟動正常)
- 更新了最新的 Fedora 23 工作站(好的,沒有更新)
- 嘗試啟動 Qubes(失敗,GRUB2 啟動菜單中還沒有 menuentry)
- 為 Qubes 創建了一個菜單項(好的,見下文)
- 試圖啟動 Qubes(失敗,見截圖)
- google了這個解決方法並安裝了包
- 我現在通過錯誤消息,但幾秒鐘後系統會自行重新啟動並無限次執行
我如何添加菜單項:
我啟動到 Fedora 並進入
/etc/grub.d/
文件夾,並編輯了40_custom
文件。在那裡,我將 qubes 引導分區上 /boot/grub2/grub.cfg 文件的 xen 部分之間的所有內容粘貼到40_custom
Fedora 上該文件的末尾。然後我在root下執行了以下命令
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
並且 qubes menuitems 生成到
grub.cfg
並在啟動菜單中可見。我可以稍後提供 grub.cfg 的內容,同時我想知道可能出了什麼問題以及如何解決它。值得注意的資訊:
- Qubes 在 Legacy BIOS 上從 GPT 啟動(帶有 2MB biosboot 分區)
- Fedora 在 UEFI 上從 GPT 啟動(帶有 EFI 分區)
- 每個作業系統都有單獨
/boot
的分區,以及其他分區- 沒有額外的
/boot
分區這是承諾的 grub.cfg:
# # DO NOT EDIT THIS FILE # # It is automatically generated by grub2-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### set pager=1 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="${saved_entry}" 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 } terminal_output console 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/01_users ### if [ -f ${prefix}/user.cfg ]; then source ${prefix}/user.cfg if [ -n "${GRUB2_PASSWORD}" ]; then set superusers="root" export superusers password_pbkdf2 root ${GRUB2_PASSWORD} fi fi ### END /etc/grub.d/01_users ### ### BEGIN /etc/grub.d/10_linux ### menuentry 'Fedora (4.4.8-300.fc23.x86_64) 23 (Workstation Edition)' --class fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.4.8-300.fc23.x86_64-advanced-d43f46bc-7649-44ca-b02d-7599d115a8e8' { load_video set gfxpayload=keep insmod gzio insmod part_gpt insmod ext2 set root='hd0,gpt6' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 440e2ced-56a2-432f-95e0-c5f1c33941a9 else search --no-floppy --fs-uuid --set=root 440e2ced-56a2-432f-95e0-c5f1c33941a9 fi linuxefi /vmlinuz-4.4.8-300.fc23.x86_64 root=UUID=d43f46bc-7649-44ca-b02d-7599d115a8e8 ro rootflags=subvol=root00 rhgb quiet initrdefi /initramfs-4.4.8-300.fc23.x86_64.img } menuentry 'Fedora (0-rescue-1dccfd914c254de687a4ba1c13e159a9) 23 (Workstation Edition)' --class fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-1dccfd914c254de687a4ba1c13e159a9-advanced-d43f46bc-7649-44ca-b02d-7599d115a8e8' { load_video insmod gzio insmod part_gpt insmod ext2 set root='hd0,gpt6' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 440e2ced-56a2-432f-95e0-c5f1c33941a9 else search --no-floppy --fs-uuid --set=root 440e2ced-56a2-432f-95e0-c5f1c33941a9 fi linuxefi /vmlinuz-0-rescue-1dccfd914c254de687a4ba1c13e159a9 root=UUID=d43f46bc-7649-44ca-b02d-7599d115a8e8 ro rootflags=subvol=root00 rhgb quiet initrdefi /initramfs-0-rescue-1dccfd914c254de687a4ba1c13e159a9.img } if [ "x$default" = 'Fedora (4.4.8-300.fc23.x86_64) 23 (Workstation Edition)' ]; then default='Advanced options for Fedora>Fedora (4.4.8-300.fc23.x86_64) 23 (Workstation Edition)'; fi; ### END /etc/grub.d/10_linux ### ### BEGIN /etc/grub.d/20_linux_xen ### ### END /etc/grub.d/20_linux_xen ### ### BEGIN /etc/grub.d/20_ppc_terminfo ### ### END /etc/grub.d/20_ppc_terminfo ### ### 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. menuentry 'Qubes, with Xen hypervisor' --class qubes --class gnu-linux --class gnu --class os --class xen $menuentry_id_option 'xen-gnulinux-simple-6e934da1-b43d-434b-83b2-878d454fb6bd' { insmod part_gpt insmod ext2 set root='hd0,gpt2' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 --hint='hd0,gpt2' 9c6e43e7-856f-4840-a04f-6936735f5835 else search --no-floppy --fs-uuid --set=root 9c6e43e7-856f-4840-a04f-6936735f5835 fi echo 'Loading Xen 4.6.0 ...' if [ "$grub_platform" = "pc" -o "$grub_platform" = "" ]; then xen_rm_opts= else xen_rm_opts="no-real-mode edd=off" fi multiboot /xen-4.6.0.gz placeholder console=none dom0_mem=min:1024M dom0_mem=max:4096M ${xen_rm_opts} echo 'Loading Linux 4.1.13-9.pvops.qubes.x86_64 ...' module /vmlinuz-4.1.13-9.pvops.qubes.x86_64 placeholder root=UUID=6e934da1-b43d-434b-83b2-878d454fb6bd ro rootflags=subvol=root i915.preliminary_hw_support=1 vconsole.font=latarcyrheb-sun16 rhgb quiet echo 'Loading initial ramdisk ...' module /initramfs-4.1.13-9.pvops.qubes.x86_64.img } submenu 'Advanced options for Qubes (with Xen hypervisor)' $menuentry_id_option 'gnulinux-advanced-6e934da1-b43d-434b-83b2-878d454fb6bd' { submenu 'Xen hypervisor, version 4.6.0' $menuentry_id_option 'xen-hypervisor-4.6.0-6e934da1-b43d-434b-83b2-878d454fb6bd' { menuentry 'Qubes, with Xen 4.6.0 and Linux 4.1.13-9.pvops.qubes.x86_64' --class qubes --class gnu-linux --class gnu --class os --class xen $menuentry_id_option 'xen-gnulinux-4.1.13-9.pvops.qubes.x86_64-advanced-6e934da1-b43d-434b-83b2-878d454fb6bd' { insmod part_gpt insmod ext2 set root='hd0,gpt2' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 --hint='hd0,gpt2' 9c6e43e7-856f-4840-a04f-6936735f5835 else search --no-floppy --fs-uuid --set=root 9c6e43e7-856f-4840-a04f-6936735f5835 fi echo 'Loading Xen 4.6.0 ...' if [ "$grub_platform" = "pc" -o "$grub_platform" = "" ]; then xen_rm_opts= else xen_rm_opts="no-real-mode edd=off" fi multiboot /xen-4.6.0.gz placeholder console=none dom0_mem=min:1024M dom0_mem=max:4096M ${xen_rm_opts} echo 'Loading Linux 4.1.13-9.pvops.qubes.x86_64 ...' module /vmlinuz-4.1.13-9.pvops.qubes.x86_64 placeholder root=UUID=6e934da1-b43d-434b-83b2-878d454fb6bd ro rootflags=subvol=root i915.preliminary_hw_support=1 vconsole.font=latarcyrheb-sun16 rhgb quiet echo 'Loading initial ramdisk ...' module /initramfs-4.1.13-9.pvops.qubes.x86_64.img } } } ### END /etc/grub.d/40_custom ### ### BEGIN /etc/grub.d/40_custom.backup ### # 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.backup ### ### 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 ###
Pastebin上也有一份副本。
這是來自 Qubes OS 的核心開發人員之一 Marek Marczykowski-Górecki(Invisible Things Lab)的權威回答。來源是我最初提出問題的 qubes-users 論壇。
這是主要問題 - 您正在嘗試從 UEFI grub (Fedora) 引導舊系統(此處為 Qubes)。您需要選擇其中之一 - 要麼在傳統模式下啟動,要麼在 UEFI 模式下啟動(或在每次啟動時更改 bios 設置……)。因此,一種選擇是將 Fedora 設置為傳統模式 - 然後將 Qubes 傳統引導條目放入 40_custom(如您所做的那樣)就足夠了。
也可以從 UEFI 啟動 Qubes,但需要不同的配置。在大多數情況下,Grub 並沒有讓它變得更容易……無論如何你可以嘗試:
- 找到 xen-4.6.0.efi - 它應該安裝到 /boot/efi/EFI/qubes/。將它放在您的 EFI 系統分區中(如果 /boot/efi 不存在)。
- 在同一目錄中創建 xen.cfg,內容如下:
$$ global $$ 預設=4.1.13-8.pvops.qubes.x86_64 $$ 4.1.13-8.pvops.qubes.x86_64 $$ options=loglvl=all kernel=vmlinuz-4.1.13-8.pvops.qubes.x86_64 root=/dev/dm-2 vconsole.font=latarcyrheb-sun16 rd.lvm.lv=qubes_dom0/root ramdisk=initramfs-4.1。 13-8.pvops.qubes.x86_64.img 調整核心版本、root= 和 rd.lvm.lv= 參數。 3. 確保核心和 initramfs 文件與 xen.cfg 位於同一目錄中(很可能您需要從 /boot 複製它們)。將它們放在 EFI 系統分區上至關重要(即使 Grub 可以從其他地方載入它們)。 4. 添加 grub 條目:
menuentry ‘Qubes UEFI’ { 鏈載入器 /EFI/qubes/xen-4.6.0.efi }
在此處查找相關故障排除: https ://www.qubes-os.org/doc/uefi-troubleshooting/ https://github.com/QubesOS/qubes-issues/issues/794