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.
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:
PV32PV_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.

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.



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


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.

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.



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:

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- Sprawdzamy UUID maszyny
- Pokazujemy urządzenia blokowe typu CD dla tego UUIDa
- 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





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

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:
- Wyłącz opcję viridian - to podstawa
- Ustaw CD jako urządzenie 2 - inaczej instalator nie ruszy
- 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ę!
