Nastavenie bootovania konkrétneho systému (.efi) vo virtuálke (virt-manager,KVM)

Mlocik97

  • *****
  • 831
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
zdravím,

KVM mám nastavené bootovanie z fyzického disku /dev/nvme0n1 na ktorom sa nachádzajú 2 systémy v dualboote. Keďže jeden systém je práve ten, v ktorom toto samotné KVM beží, a zároveň v GRUB ho mám nastavený ako default, tak potrebujem aby virtuálka nejak obišla GRUB a rovno zaviedla konkrétne .efi (teda druhý systém). Skúšal som hladať vo virt-manageri nastavenie, ktoré by mi to umožnilo, ale vidím tam na bootovanie len jednu položku, ktorá smeruje do GRUBu. Viem že vo virtualboxe som to nastavil tak, že som nasmeroval bootovanie na konkrétny .efi súbor. Ale netuším kde niečo také môžem urobiť vo virt-manageru. Vie mi niekto poradiť?

ďakujem za rady.
« Poslední změna: 04. 10. 2020, 19:39:29 od Petr Krčmář »


Podle me to nelze. Nelze ani pridat/preradit bootovaci menu (napr. do nej ulozit boot z IPv6 site). KVM/qemu vzdycky pri spusteni nastavi boot podle toho, co je v definici XML. Aspon tak se to chovalo mne...

_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Prej nějak přes OVMF_VARS: https://unix.stackexchange.com/questions/530674/qemu-doesnt-respect-the-boot-order-when-booting-with-uefi-ovmf

Hacky: patchnout OVMF

Vyrobit malinký soubor který bude mít v sobě uefi boot filesystém a bootovat z něj. To současně vyřeší tu prasárnu, že do VM dáváš celý disk -- pak jí můžeš dát jenom tu partition/LV, protože nabootuješ z toho souboru.

ja.

  • ****
  • 316
    • Zobrazit profil
    • E-mail
Vovnutri beziaceho virtualneho systemu nastavit EFI premenne cez efibootmgr. Zaujima ta BootOrder (-o).

Mlocik97

  • *****
  • 831
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
No skúšal som ako radí @ja. ale netuším čo tu zvoliť. (ak som teda správne)
« Poslední změna: 08. 10. 2020, 17:21:32 od Mlocik97 »


Mlocik97

  • *****
  • 831
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
btw. už sa mi podarilo raz odpáliť filesystem, pretože som vo virtuálke nabootoval systém, ktorý už nabootovaný bol, ale naštastie to už opraviť viem. To už mám skúsenosti s fsck. Takže hlavne preto toto potrebujem vyriešiť. Akurát v tom boot managery vôbec neviem rozoznať ktoré .efi patrí ku ktorému systému. Tých .efi je tam rozhádzaných viacero v rôznych zložkách.
« Poslední změna: 08. 10. 2020, 17:30:13 od Mlocik97 »

Mlocik97

  • *****
  • 831
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
keby som prepísal:

Kód: [Vybrat]
<disk type="block" device="disk">
  <driver name="qemu" type="raw" cache="none" io="native"/>
  <source dev="/dev/nvme0n1"/>
  <target dev="vda" bus="virtio"/>
  <address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
</disk>

na /dev/nvme0n1p3 tak by som to nevyriešil, že? lebo by mu chýbal zavádzač... že by som priamo ukázal na partíciu so systémom a nie celý disk.

_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
btw. už sa mi podarilo raz odpáliť filesystem, pretože som vo virtuálke nabootoval systém, ktorý už nabootovaný bol
No vidíš, takže se ti dokonce to, čeho jsem se bál, už povedlo…

na /dev/nvme0n1p3 tak by som to nevyriešil, že? lebo by mu chýbal zavádzač... že by som priamo ukázal na partíciu so systémom a nie celý disk.
No vždyť proto hned v předchozí větě píšu, že máš vyrobit malý soubor, který bude disk se zavaděčem.

Mlocik97

  • *****
  • 831
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
Môžeš ma presnejšie nasmerovať ako ten súbor vytvoriť?

ja.

  • ****
  • 316
    • Zobrazit profil
    • E-mail
Dá sa aj v UEFI boot manageri, nastav bootovanie shimx64.efi z adresára ubuntu, ja som myslel konkrétne rovno v nabootovanom systéme. Na screenshote nižšie vidíš, že priorita bootovania vo virtuálke je 4-2-0-3 a položka č. 4 je EFI/ubuntu/shimx64.efi. EFI vars pre hosta a guesta sú samostatné.

Ale ako ti už písali ostatní, nie je moc chytré používať rovnaký fyzický disk pre host aj guest; a určite nemountovať rovnakú partition v paralelne bežiacich systémoch.

Mlocik97

  • *****
  • 831
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
Citace
Dá sa aj v UEFI boot manageri, nastav bootovanie shimx64.efi z adresára ubuntu, ja som myslel konkrétne rovno v nabootovanom systéme.

V ktorom, v hlavnom alebo vo virtuálke čo chcem mať? Typujem v tom virtuálnom. Tam mám toto:



ja.

  • ****
  • 316
    • Zobrazit profil
    • E-mail
Otázky:

- Oba systémy, host aj guest, sú linux (ubuntu)? Majú spoločný boot loader?
- Ak áno, v čom konkrétne sa líšia? Iba v cestách v grub configu?
  - pokiaľ sa líšia iba v grub configu, tak to nevyriešime na úrovni host/guest. Buď im dať samostatné EFI partitions so samostanými boot loadermi, alebo guesta úplne odizolovať od partitions hosta.
- Je nejaký dôvod, prečo guest systém zdieľa partitions s hostom? Zvyčajne sa to robí tak, že guestovi sa podhodí nejaká partition alebo LVM volume ako jeho disk, a tam si narobí partitions a boot loader ako potrebuje. (Jediné obmedzenie je, že takýto guest už nenabootuje ako host OS, preto sa pýtam, že či je nejaký konkrétny dôvod, prečo je to riešené tak ako je).

Mlocik97

  • *****
  • 831
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
No na SSDčku /dev/nvme0n1 mám 4 partície... p1 je /boot/efi p2 je Ubuntu č. 1, p3. je Ubuntu č. 2, a p4 je SWAP... inštaloval som to ako dualboot z klasickej instalačky (ako mi instalačka ponúkla nainštalovať Ubuntu vedla Ubuntu). Typ partície sú Ext4 (v1.0) u oboch. Obe Ubuntu potrebujem ale vedieť bootovať aj napriamo (ako host), a druhý ale aj v KVM.
« Poslední změna: 08. 10. 2020, 20:23:58 od Mlocik97 »

ja.

  • ****
  • 316
    • Zobrazit profil
    • E-mail
Aha, takže takto to je.

Obe Ubuntu majú spoločný GRUB, takže na úrovni UEFI už nespravíme nič, aby sme mu povedali, ktorý nabootovať. Riešiť sa to dá, ako to bolo spomenuté vyššie, virtuálnym UEFI diskom.

Keďže používaš KVM, najlepšie bude použiť virt-manager, kde sa to dá vyklikať.... Pridať ďalší disk, stačí maličký, 100-150 MB, jeho backing store nebude fyzický, ale qcow2 súbor v tom Ubuntu, ktoré je host (kam ho dáš je na tebe, najskôr do /var/lib/libvirt/images). Nabootovať virtuálne Ubuntu, to bude vidieť tento súbor ako ďalší disk, vytvoriť na ňom jednu GPT partition, označiť ju ako ESP (EFI System Partition), naformátovať (FAT32), nakopírovať tam EFI/ubuntu z fyzickej EFI, zmeniť v grubenv položku "saved_entry" (správne označenie budeš musieť nájsť v grub.cfg; toto sa stane aj automaticky, keď budeš bootovať vo virtuálke). Vo vlastnostiach virtuálky nastaviť prioritu bootovania z tohto disku.

Pozor, grub.cfg sa mení po každom update jadra; aby ti to ostalo funkčné, budeš musieť zmeny synchronizovať. Po každom update jadra. Keď ho updatneš vo virtuálke, musíš ho dokopírovať do hosta, keď na hoste, musíš dokopírovať do virtuálky.

Mlocik97

  • *****
  • 831
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
Predpokladám že to je v tomto, akurát netuším ako s týmy fondami/poolami a zväzkami pracovať. V poolu nvram už ale mám nejaký _VARS.fd súbor, môžem aj do toho poolu to dať?
« Poslední změna: 08. 10. 2020, 21:27:23 od Mlocik97 »