xcp-ng Windows iso boot

Fórumok

Sziasztok!

 

Windows 10-et szeretnék telepíteni egy vm-be, de ahelyett, hogy bebootolna az iso-ról, az uefi shellben találom magamat. Kipróbáltam azt, hogy a pxe boot állítom első helyre, hátha előbb túlmegy a billentyűleütés várásán, minthogy mutatná a konzol képét, de azt látom, hogy miután túllép a pxe boot próbálkozáson, azonnal jön az uefi shell.

A dvd boot engedélyezve van természetesen. Megpróbáltam, hogy lecserélem az iso-t, hátha hibás, de a másikkal ugyanezt csinálta.

Hozzászólások

Szerkesztve: 2021. 04. 20., k – 15:52

nem használok xcp-ng -t, de gyanús, hogy legacy bios-t (legacy boot-t) is lehetne állítani benne a VM-hez, nem?
de boot sorrendet mindenképpenen lehet

valamiert ezt hasznalja a libvirt

minden windows guest megy vele

# file /usr/bin/qemu-system-*
/usr/bin/qemu-system-i386:   ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=7875d93392b3838b2b073be209f0b335a70bfb84, stripped
/usr/bin/qemu-system-x86_64: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=6a5afa22e53cf0edbc914a21ef5fae253d2e8a3a, stripped

neked aztan fura humorod van...

Mivel manageled az xcp-ng ? Ott valami nem kerek nekem ezzel még nem volt gondom, se legacy bios se mostmár uefi bios módban.

Fedora 38, Thinkpad x280

Tudomásom szerint, ha iso ról akarsz bootolni akkor speciális ugynevezett ISO LIbrary-t storaget kell csinálni, ami vagy samba, vagy NFS lehet. Elképzelhető, hogy a gépben lévő CD/DVD ről is tudja bootoltatni a VPS, de 1x éve csak SMB-ISO vagy NFS-ISO rol toltam, soha semmilyen gondom nem volt.

Nem is tudom, a xen-orchestrában, hogy tudod beállítani VPS-nél a CD-t ha nem fent említett tároloban vannak az iso-k.

Fedora 38, Thinkpad x280

Szerkesztve: 2021. 04. 20., k – 18:26

Ahhoz, hogy OVMF-ből (a guest UEFI firmware-ből) PXE boot-olni tudj, a firmware-nek szüksége van egy SNP (Simple Network Protocol) driver-re. Az OVMF tartalmazza a hardverfüggetlen (magasabb szintű) edk2 hálózati driver-eket, de a legalsó réteg (SNP) hardverfüggő. Az OVMF ilyen drivert beépítve csak a virtio-net device model-hez tartalmaz, amely viszont csak QEMU-n van, Xen-en nincs.

Xen-en van paravirt NIC ("netfront" a guest felől nézve), illetve (a doksi szerint) emulált e1000 és rtl8139 (az utóbbi az alapértelmezés, ha jól értem a doksit). Ebből a háromból azt kell választani, amelyhez mind a guest firmware-nek van meghajtója (SNP, ld. fent), mind a guest OS-nek van meghajtója (OS natív). A paravirtualizált (=netfront) Xen NIC ebben az esetben sejtésem szerint elfelejthető, a maradékból (e1000 és rtl8139) kell választani. Tudtommal Windows guest-hez általában e1000-t választanak, úgyhogy azt javasolnám.

Ahogy említettem, az OVMF-ben nincs beépített e1000 driver, csak a virtio-net-hez van (forrása: OvmfPkg/VirtioNetDxe). Három megoldás létezik e1000 használataára:

  1. Letöltöd az Intel-től a proprietary e1000 firmware (SNP) driver-t, és fordítasz magadnak egy OVMF binárist, amiben a driver benne foglaltatik (-D E1000_ENABLE). Ez működhet, de a firmware binárist nincs jogod terjeszteni.
  2. Letöltöd az Intel-től a proprietary e1000 firmware (SNP) driver-t (régebben PROEFI volt a neve; amikor legutóbb néztem, akkor BootUtil-nak hívták), és megpróbálod meggyőzni az xcp-ng-t, hogy a megfelelő UEFI driver binárist a VM indításakor betöltse a NIC-nek a PCI ROM BAR-jába (ahonnan az OVMF platform firmware majd lefuttatja).
  3. A nyílt forrású iPXE projektből fordítasz egy olyan lecsupaszított e1000 UEFI driver-t, amely nem tartalmaz iPXE képességeket a fent nevezett Simple Network Protocol implementáción túl. Majd ezt az iPXE binárist a 2-es ponthoz hasonlóan betölteted az xcp-ng-vel a NIC PCI ROM BAR-jába.

Az upstream QEMU projektből a 3. ponthoz szükséges iPXE driver binárist egyből kihalászhatod (nem kell iPXE fordítással vesződnöd): "pc-bios/efi-e1000.rom".

Részletek: https://github.com/tianocore/edk2/blob/d3b0d007a135284981fa750612a47234…

A fenti nyűglődés természetesen nem a felhasználók feladata lenne, hanem az xcp-ng csomag(ok)nak kellene biztosítani mindezt.

Xen-t egyébként utoljára ~9 éve használtam, úgyhogy "caveat lector".

A fentiek a PXE kliensre vonatkoznak. A szerver (PXE/TFTP és DHCP) beállítása külön fejezet; a szerver konfigjának ki kell elégítenie az edk2 PXE kliens elvárásait ahhoz, hogy a kliens megtalálja az ISO-t, és le is töltse.

(ISO letöltéséhez megfelelő mennyiségű RAM kell a VM-nek.)

Igen. Köszönöm lacosnak a részletes leírást, de a PXE bootot csak kínomban próbáltam: azért, hátha az a baj, hogy reboot után nem mutatja rögtön a konzolképet, ezért megy túl a billentyűleütés-váráson, és ezért nem bootol az iso-ról. Így annyit láttam, hogy nem írja ki, hogy nyomjak le egy billentyűt a dvd-ről bootoláshoz... Úgyhogy annyi haszna volt, hogy ezt láthattam.

Azt természetesen tudtam, hogy a PXE boot nem fog menni. Előző munkahelyemen állítottam már be tftp szervert, bár nem vm-ek bootoltak róla. A mostani helyemen is szeretnék majd ilyent, de az egy későbbi projekt.

Melyik verzió? Xcp-ng 8.2 -ben teljesen új az uefi. 

Kiderült, hogy csak az általunk használt iso-ra kényes uefi módban. 1703-as, és nincs másik. Felvettem a supporttal a kapcsolatot, egyelőre azt tanácsolták, hogy kikapcsolhatom az uefi-t a következő paranccsal:

xe vm-param-set uuid=<vm-uuid> platform:device-model=qemu-upstream-compat

 Plusz a XE-ben is át kellett állítanom, és így már bootolt simán.