NetBSD na XCP-NG 8.3+ czyli jak uruchomić PVHVM gdy PV już nie działa

XCP-NG 8.3 porzucił wsparcie dla natywnego PV, co zmusiło mnie do migracji NetBSD na PVHVM. Po walce z opcją viridian i błędnie skonfigurowanym napędem CD, udało się uruchomić NetBSD 10.1 w trybie PVHVM z pełną integracją. Praktyczny przewodnik po migracji z PV na PVHVM.

NetBSD na XCP-NG 8.3+ czyli jak uruchomić PVHVM gdy PV już nie działa

Koniec pewnej epoki

No i stało się! Po latach szczęśliwego używania NetBSD jako systemu PV (parawirtualizowanego) na różnych hypervisorach - od natywnego NetBSD DOM0, przez Citrix XenServer, aż po XCP-NG - przyszedł moment prawdy. XCP-NG 8.3 przyniósł ze sobą decyzję, która dla wielu z nas była jak grom z jasnego nieba: koniec wsparcia dla natywnego PV w jądrze Xen.

Jako wierny fan NetBSD od lat (a może już dekad?), stanąłem przed dylematem: zostać przy starym stacku 8.2.1 i pogrzebać marzenia o rozwoju, czy ruszyć naprzód w nieznane wody PVHVM/PV-in-HVM? Wybrałem to drugie. I tu, drodzy czytelnicy, zaczęły się schody...

Dlaczego PV przestało działać (czyli co XCP-NG 8.3 zrobił z NetBSD)

Złote czasy PV (do wersji 8.2)

W erze XCP-NG 8.2 życie było proste i piękne:

  • Dyski i sieć były w pełni parawirtualizowane
  • Kernel radośnie korzystał z xenbus, xbd, xennet
  • Wydajność była maksymalna, a integracja VM z hypervisorem - wzorowa

Gdy hypervisorem był NetBSD, system startował z kernela na dysku DOM0. Pod Citrix/XCP kernel PV DOMU siedział już w maszynie, a dysk był specjalnie przygotowany (startując od sektora 0, nie 63 - szczegół, ale jakże istotny!).

Wielki Porzucenie w 8.3

W XCP-NG 8.3 deweloperzy postanowili skompilować kernel Xen bez:

  • PV32
  • PV_LINEAR_PT
  • shadow paging

To trójca świętych opcji wymaganych przez klasyczny PV. Efekt? Czysty tryb PV po prostu nie startuje. Kropka. Do tego warstwa zarządzania XAPI nie ma natywnego wsparcia dla PVH.

Morał: PV + XCP-NG 8.3+ = droga donikąd.

GMKtec K6 Mini PC AMD R7-7840HS 8C/16T 16GB RAM 512GB PCIe 4.0 SSD Mini komputer stacjonarny Window 11 Pro WiFi 6E/BT5.2 Type-C - AliExpress 7
Smarter Shopping, Better Living! Aliexpress.com

Pierwsze próby i pierwsze rozczarowania

Instalacja HVM - pozorny sukces

Instalacja NetBSD 10.1 z ISO przy użyciu template "Other installation media" przebiegła gładko. System wystartował, kernel widział dysk jako xbd0... ale to był pyrrusowy sukces:

XenStore/xenbus - martwe jak dodo (brak xenbus0 w dmesg)
Status w XO/XenCenter - "Xen Tools not installed" (oczywiście!)
xe-guest-utils - instalacja niemożliwa, bo VM nie wie że jest gościem Xen
Migracje, suspend/resume - zapomnij

Technicznie VM działało, ale integracja z XCP-ng? Totalna porażka.

wd0 - instalator myśli, że to zwykły dysk SATA/ATA
Mimo wykrycia środowiska Xen, karta sieciowa to re0 - Realtek - RTL8139
System po instalacji

Co jest dziwne. NetBSD 10.1 dość dobrze działa w środowisku Xen, był jednym z pierwszych systemów, które mogły być DOM0 (hipervisorem).

System po instalacji - widok w XenOrchestra
Vention Cat8 CAT7 CAT6A Kabel Ethernet RJ45 SFTP Patch Cable do sieci komputerowej Laptop Router Modem 0.5m/3m Lan Cords Cable - AliExpress 44
Smarter Shopping, Better Living! Aliexpress.com

Odkrycie winowajcy - opcja "viridian"

Po godzinach debugowania i przeglądania domyślnych opcji XCP-NG 8.3, znalazłem przyczynę! Opcja "viridian" - włączona domyślnie dla lepszej zgodności z VM z Hyper-V - skutecznie sabotowała wykrywanie środowiska Xen przez NetBSD.

Dla NetBSD PVHVM - Viridian musi być wyłączony!

Po wyłączeniu tej opcji, zainstlowany system wykrył, że jest w środowisku Xen, ale instalacja na wd0 i wd0 w fstabie pozostawiły już swój ślad w postaci błędów odczytu i ostatecznym wrzuceniu do rescue mode, gdzie naprawa nawet gdyby była możliwa (ale nie, jest bo musimy poprawić fstab na dysku, którego nie możemy odczytać..) w rozumieniu poprawy fstab z wd0a na xbd0a nie przyniosła by prawidłowego działania, przez zupełnie inny sterownik dysku i innemu zapisowi danych i superblocków.

Naklejki do programowania kreskówek Projektanci IT Język użytkowania Wodoodporny PVC do laptopa Notebook Walizka Telefon Lodówka Deskorolka - AliExpress 15
Smarter Shopping, Better Living! Aliexpress.com

Ponowna instalacja i ponowne kłopoty.

Uzbrojony w wiedzę, że dla PVHVM potrezbujemy uruchomić VM bez Viridiana, przystąpiłem do kolejnej próby:

Bootowanie z ISO przebiegło prawidłowo - xennet0 i xbd0 zostały wykryte, jako interfejs sieciowy i dysk i już kiedy powinien pokazać się niebieski ekran instalatora, wydarzyło sie to:

Błąd wd0 podczas uruchamiania instalatora w trybie PVHM?

Okazuje się, że winowajcą jest toolstack, a w zasadzie róznice między xl (NetBSD) a xapi (XCP-NG).

Istnieją dwa różne stosy narzędzi (toolstacks) open-source dla Xen: xl oraz xapi.

Dla NetBSD używamy narzędzi xl (znany w pkgsrc jako xentools). Jest to jedyny stos narzędzi wspierany przez NetBSD dom0. Z kolei Citrix XenServer oraz XCP-ng używają stosu narzędzi xapi, który jest ściśle powiązany z Linuksem jako dom0.

Błąd z wd0 odnosi się do błędnie przyporządkowanego urządzenia CD, z którego uruchamiamy instalację.

Konfiguracja napędu CD

Jak wspomniano powyżej, emulowany napęd CD musi być ustawiony jako urządzenie 2 (hdc, znane również jako xvdc), a nie 1 (hdb) lub 3 (hdd, znane również jako xvdd).

Domyślnie nowa maszyna wirtualna będzie miała emulowany napęd CD jako xvdd (urządzenie 3), co spowoduje, że nie będzie działać. Aby to zmienić, należy ustalić identyfikator UUID jej wirtualnego urządzenia blokowego (vbd) i zmienić wartość userdevice na 2.

Nie jest to niestety do "wyklikania w XenOrchestra", ale w CLI od XCP jest dość proste:

# Znajdź UUID VM
xe vm-list name-label="NetBSD" --minimal
# 7748901d-3bd4-2fce-6595-692a4dd48e5e

# Znajdź UUID napędu CD
xe vbd-list vm-uuid=7748901d-3bd4-2fce-6595-692a4dd48e5e type=CD --minimal
# acb43ffc-2b40-f852-461a-53855e674073

# Ustaw jako drugie urządzenie
xe vbd-param-set uuid=acb43ffc-2b40-f852-461a-53855e674073 userdevice=2
  1. Sprawdzamy UUID maszyny
  2. Pokazujemy urządzenia blokowe typu CD dla tego UUIDa
  3. Bierzemy UUIDa od CD i ustawiamy jako DRUGIE urządzenie.

Po tym zabiegu instalator włącza się bez problemu:

I możemy wykonać instalacje na urzadzeniu xbd0a w trybei PVHVM

W końcu właściwe urządzenie blokowe!
Standardowa instalacja z CD - kopiowanie setsów
Właściwe urządzenie sieciowe
Po restarcie mamy maszyne w trybie PVHVM
Pierwsze logowanie - pełne PVHVM!

Aby jeszcze komunikacja między XCP a NetBSD w trybie PVHVM działałą jak trzeba musimy zainstalwoać toolsy w postaci paczki xe-guest-utilities. Aktulanie najnowsza to: xe-guest-utilities-7.0.0nb2.tgz

pkg_add https://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/x86_64/10.0_2025Q3/All/xe-guest-utilities-7.0.0nb2.tgz

Zaraz po skopiowaniu i uruchomieniu toolsów mamy pełną funkcjonalność:

# cp /usr/pkg/share/examples/rc.d/xenguest /etc/rc.d/xenguest
# /etc/rc.d/xenguest onestart
Starting xenguest.

I voilà! Pełna funkcjonalność PVHVM:

  • ✅ Status "Xen Tools installed" w XO
  • ✅ Działające migracje
  • ✅ Clean shutdown/restart
  • ✅ Raportowanie pamięci i IP
O-neck I Am Root Ubuntu ComMand Line Linux Unix Hacking koszulka popularna unisex naturalna bawełna La Camiseta gorąca sprzedaż - AliExpress 200000343
Smarter Shopping, Better Living! Aliexpress.com

Podsumowanie

Przejście z PV na PVHVM w XCP-NG 8.3+ to nie jest spacer po parku, ale da się! Kluczowe punkty do zapamiętania:

  1. Wyłącz opcję viridian - to podstawa
  2. Ustaw CD jako urządzenie 2 - inaczej instalator nie ruszy
  3. Zainstaluj xe-guest-utilities - dla pełnej integracji

NetBSD 10.1 w trybie PVHVM na XCP-NG 8.3 działa stabilnie i wydajnie. Owszem, to nie jest już "czysty" PV jak za starych dobrych czasów, ale czasy się zmieniają. A NetBSD, jak zwykle, daje radę!

NetBSD PVHM + TOOLS!