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

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.


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 687
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.

  • ****
  • 403
Vovnutri beziaceho virtualneho systemu nastavit EFI premenne cez efibootmgr. Zaujima ta BootOrder (-o).

No skúšal som ako radí @ja. ale netuším čo tu zvoliť. (ak som teda správne)


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.

keby som prepísal:


<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 687
Citace od: Mlocik97 kdy 08. 10. 2020, 17:27:04
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...

Citace od: Mlocik97 kdy 08. 10. 2020, 17:38:10
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.

Môžeš ma presnejšie nasmerovať ako ten súbor vytvoriť?

ja.

  • ****
  • 403
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.

CitaceDá 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.

  • ****
  • 403
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).

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.

ja.

  • ****
  • 403
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.

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ť?