Qubes não inicializa na máquina dual-boot do Fedora / Qubes

3

Meu objetivo é ter uma inicialização dupla do Qubes OS 3.1 e do Fedora 23 Workstation (respin). Esse cara começou a trabalhar no Ubuntu, mas ele instalou Ubuntu primeiro, enquanto eu instalei o Qubes primeiro. O último recurso seria segui-lo e reinstalar a partir do zero, mas quero aprender alguma coisa.

O que eu tentei:

  • instalado Qubes OS 3.1 (OK)
  • atualizou o Qubes OS 3.1 dom0 e o template Fedora23 (OK)
  • instalou a versão mais recente do Fedora 23 Workstation (OK, mas relatou alguma falha no bootloader do GRUB2; no entanto, o Fedora inicializou bem)
  • atualizou a última estação de trabalho do Fedora 23 (OK, não houve atualizações)
  • tentou inicializar o Qubes (falha, sem menuentry no menu de inicialização do GRUB2 ainda)
  • criou um menuentry para o Qubes (OK, veja abaixo)
  • tentou inicializar o Qubes (falha, consulte captura de tela )
  • pesquisei esta solução alternativa e instalei o pacote
  • Eu recebo a mensagem de erro agora, mas depois de alguns segundos o sistema se reinicia e faz isso infinitamente

Como adicionei o item de menu:

Eu inicializei no Fedora e fui para a pasta /etc/grub.d/ e editei o arquivo 40_custom . Lá eu colei tudo entre a seção xen do arquivo /boot/grub2/grub.cfg na partição de inicialização quses, no final desse arquivo 40_custom no Fedora. Então eu executei o seguinte comando em root

grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

e os quits menuitems foram gerados no grub.cfg e se tornaram visíveis no menu de inicialização. Eu posso fornecer o conteúdo do grub.cfg mais tarde, enquanto isso eu gostaria de saber o que pode estar errado e como consertá-lo.

Informação notável:

  • Inicializações Qubes da GPT no BIOS legado (com partição de biosboot de 2 MB)
  • O Fedora inicializa a partir da GPT no UEFI (com a partição EFI)
  • cada sistema operacional tem uma partição /boot separada, bem como outras partições
  • não há /boot partição extra

Aqui está o grub.cfg prometido:

#
# 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 ###

uma cópia também é no Pastebin.

    
por Slazer 30.04.2016 / 16:48

2 respostas

1

Aqui está uma resposta autoritária de Marek Marczykowski-Górecki (Laboratório de Coisas Invisíveis), que é um dos principais desenvolvedores do sistema operacional Qubes. A fonte é o fórum qubes-users , onde eu fiz a pergunta originalmente.

This is main problem - you're trying to boot legacy system (Qubes here) from UEFI grub (Fedora). You need to choose one of them - either boot both in legacy mode, or both in UEFI mode (or change bios settings at each boot...). So, one option is to setup Fedora in legacy mode - then putting Qubes legacy boot entry in 40_custom (as you've done) should be enough.

It is also possible to boot Qubes from UEFI, but it requires different configuration. And in most cases Grub doesn't make it easier... Anyway you can try:

  1. Locate xen-4.6.0.efi - it should be installed into /boot/efi/EFI/qubes/. Place it in your EFI System Partition (if /boot/efi isn't there already).

  2. Create xen.cfg in the same directory with a content like this:

    [global] default=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

    Adjust kernel version, root= and rd.lvm.lv= parameters.

  3. Make sure the kernel and initramfs files are in the same directory as xen.cfg (most likely you'll need to copy them from /boot). It is critical to have them on EFI System Partition (even if Grub can load them from other places).

  4. Add grub entry:

    menuentry 'Qubes UEFI' { chainloader /EFI/qubes/xen-4.6.0.efi }

Look here for related troubleshooting: https://www.qubes-os.org/doc/uefi-troubleshooting/ https://github.com/QubesOS/qubes-issues/issues/794

    
por 11.05.2016 / 15:09
0

Eu duvido que isso ajude, mas aqui está o que eu fiz para dual-boot do Qubes e do Mint. Este é um berço direto do blog de Micah Lee, então eu não tenho nenhum crédito por isso. ( link )

Eu inicializei a partir de um DVD ao vivo do Mint para o particionamento inicial do hdd.

  1. Crie três partições no disco rígido: uma para o Qubes e uma para o Fedora, e uma pequena partição de inicialização. Formate a partição para o Fedora (ext4 ou qualquer outro) e a partição de inicialização e defina o sinalizador de inicialização. Deixe a partição do Qubes sem formatação - o instalador do Qubes parece mais feliz ao encontrar espaço livre para sua partição criptografada. Mas não instale o Qubes ainda.

  2. Instale o Fedora na partição ext4, com o gerenciador de inicialização instalado na partição de inicialização . Não deixe instalar o gerenciador de inicialização para dev / sda.

  3. Agora reinicie sua mídia de instalação do Qubes. O instalador deve encontrar a partição não formatada e você deve poder instalar o Qubes lá.

  4. Reinicie. Quando fiz isso, a única opção era o Qubes. Vá em frente e inicialize o Qubes.

  5. Abra um terminal no dom0 e use vim ou qualquer outra coisa para editar /etc/grub.d/40_custom, apenas adicionando três linhas no topo:

menuentry "Fedora 23" {    
set root=(hdd0,1)
chainloader +1
}

Então, de acordo com o blog de Micah, eu reinstalei o grub:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo grub2-install /dev/sda

Acabei com uma máquina Qubes-and-Mint com inicialização dupla.

Boa sorte.

    
por 05.05.2016 / 03:07