March 18Mar 18 Plateforme : Unraid + KVM/QEMU (pc-q35-9.2) + CPU AMD Ryzen + OpenCore v21 + macOS Ventura 13.6 Symptôme : Pas de réseau, interface en0 absente, installateur affiche "An Internet connection is required"TL;DR — Le fixDans le XML de votre VM (mode Avancé dans Unraid), cherchez la section <interface> et assurez-vous que l'adresse PCI est sur bus='0x00' slot='0x08' :<interface type='bridge'> <mac address='52:54:00:xx:xx:xx'/> <source bridge='br0'/> <model type='vmxnet3'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </interface>Si votre slot 0x08 est occupé, utilisez un slot libre sur Bus 0 (0x09, 0x0a, etc. — évitez 0x00–0x02, 0x07, 0x1e, 0x1f qui sont réservés).Le problème en détailAprès des heures de debug, j'ai identifié la cause racine via le monitor QEMU (virsh qemu-monitor-command Ventura --hmp "info pci").Ce qu'on voit avec une mauvaise config (bus='0x01', '0x02', ou derrière un pcie-to-pci-bridge)Bus 2, device 0, function 0: Ethernet controller: PCI device 15ad:07b0 IRQ 0, pin A BAR0: 32 bit memory (not mapped) BAR1: 32 bit memory (not mapped) BAR2: 32 bit memory (not mapped)IRQ 0, tous les BARs "not mapped" = le device PCI existe dans QEMU mais OVMF n'a pas alloué de ressources mémoire. macOS trouve bien le device en scannant le bus PCI, mais le driver (AppleVmxnet3Ethernet) ne peut pas s'initialiser sans adresses MMIO valides. L'interface en0 n'est jamais créée.Ce qu'on voit avec la bonne config (bus='0x00' slot='0x08')Bus 0, device 8, function 0: Ethernet controller: PCI device 15ad:07b0 IRQ 20, pin A BAR0: 32 bit memory at 0x8c647000 [0x8c647fff] BAR1: 32 bit memory at 0x8c646000 [0x8c646fff] BAR2: 32 bit memory at 0x8c642000 [0x8c643fff]IRQ 20, BARs mappées = OVMF a correctement alloué les ressources. macOS charge AppleVmxnet3Ethernet, crée en0, DHCP fonctionne.Pourquoi OVMF ne mappe pas les BARs sur les bus PCIe downstream ?La machine virtuelle Q35 dispose de pcie-root-port (contrôleurs PCIe) qui créent des bus downstream (bus 1, 2, 3...). En théorie, un device vmxnet3 sur bus='0x01' devrait fonctionner. En pratique, avec la version de QEMU/OVMF embarquée dans Unraid actuel, les fenêtres mémoire de ces root ports sont configurées avec des plages invalides :Bus 0, device 1, function 1: (pcie-root-port pci.2) memory range [0xfff00000, 0x000fffff] ← base > limite = vide/désactivé prefetchable memory range [0xfffffffffff00000, 0x000fffff] ← idemRésultat : les devices derrière ces ports n'obtiennent aucune allocation MMIO. Seul le Bus 0 (root complex, géré directement par OVMF) reçoit des allocations correctes pour tous ses périphériques.Ce qui ne fonctionne PAS (et pourquoi)Config tentéeRésultatRaisonvmxnet3 sur bus='0x01' (pci.1 downstream)BARs not mappedOVMF window videvmxnet3 sur bus='0x02' (pci.2 downstream)BARs not mappedOVMF window videpcie-to-pci-bridge + vmxnet3 sur bus='0x08'Device invisibleBridge non configuré par OVMF (secondary bus=0)e1000-82545em à n'importe quel busDriver absentAppleIntelE1000e retiré de Venturae1000e (82574L)Driver absentIntelMausi ne supporte pas 0x10D3IntelMausi.kext injecté via OpenCoreNe match pasSupporte seulement 82577LM (0x10EA+) et plus récentsCas particulier : l'installateur BaseSystemMême avec la bonne topologie PCI, l'installateur Ventura (BaseSystem) n'a pas de driver vmxnet3 : AppleVmxnet3Ethernet est absent de BaseSystemKernelExtensions.kc (uniquement présent dans le System KC complet).Conséquence : le message "An Internet connection is required to install macOS" dans l'installateur BaseSystem est inévitable avec vmxnet3, e1000 ou e1000e — aucun de ces drivers n'est compilé dans le KC de recovery/installation.Contournement : Booter depuis un macOS déjà installé (même ancien), puis faire "Reinstall macOS" depuis la Recovery de ce disque installé, qui charge le KC complet du disque système.Mémo sur AppleVmxnet3Ethernet dans Ventura 13.6Le kext existe dans /System/Library/Extensions/IONetworkingFamily.kext/Contents/PlugIns/AppleVmxnet3Ethernet.kext/Il n'y a pas de binaire sur disque (stub uniquement, Info.plist seul) — c'est normal sous Ventura, le binaire est compilé dans BootKernelExtensions.kc / SystemKernelExtensions.kcMinSystemVersion: 13.6 — le driver est apparu en 13.6, pas avantIOPCIPrimaryMatch: 0x07b015ad = VMware vmxnet3 (vendor 0x15AD, device 0x07B0)OSBundleRequired: Network-Root — prévu pour le boot réseau, mais absent du BaseSystem KC malgré cette flagConfig CPU pour AMD Ryzen (critique)Ne pas oublier le -cpu dans qemu:commandline. Le host-passthrough brut plante Ventura sur AMD. Il faut surcharger avec Skylake-Server sans avx2 (CryptexFixup requiert l'absence d'avx2 pour activer son stub non-AVX2) :<qemu:commandline> <qemu:arg value='-device'/> <qemu:arg value='************************'/> <qemu:arg value='-smbios'/> <qemu:arg value='type=2'/> <qemu:arg value='-cpu'/> <qemu:arg value='Skylake-Server,vendor=GenuineIntel,+hypervisor,+invtsc,kvm=on,+fma,+avx,+aes,+ssse3,+sse4_2,+popcnt,+sse4a,+bmi1,+bmi2'/> </qemu:commandline>Notez l'absence de +avx2 — intentionnelle.Environnement de testUnraid 6.x / QEMU pc-q35-9.2CPU hôte : AMD Ryzen 7OpenCore : KVM-Opencore v21 avec 7 patches kernel (5 AMD cpuid/SurPlus + 2 patches Visual pour non-monotonic time sur AMD)macOS : Ventura 13.6.0OVMF : OVMF_CODE-pure-efi.fd (version Unraid stock)Espère que ça aide quelqu'un d'autre à éviter plusieurs heures de debug sur ce sujet !
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.