Coopydood/ultimate-macOS-KVM

[SOLVED] [macOS] No internet access when starting VM from `virt-manager`

User8395 opened this issue · 7 comments

Solution

Remove the NIC hardware from the libvirt VM and add the following lines to the end of the qemu:commandline tag

    <qemu:arg value="-netdev"/>
    <qemu:arg value="user,id=net0"/>
    <qemu:arg value="-device"/>
    <qemu:arg value="vmxnet3,netdev=net0,id=net0,mac=00:16:cb:00:40:24,bus=pcie.0,addr=9"/>

You may have to edit the XML inside the ultimate-macOS-KVM folder and redefine it.


Describe the Issue

Please describe your issue relating to macOS running under ULTMOS.

My VM cant connect to the internet if I start it from a libvirt client. It can connect if I start it with boot.sh.


Steps to Reproduce

Describe how to accurately reproduce / exhibit the issue.

  1. Convert boot.sh to XML
  2. Import XML to libvirt
  3. Start VM from libvirt
  4. Wait until boot finishes
  5. Run ping google.com from the terminal
  6. Expect the Request timed out's from ping

Expectation

What did you expect to happen instead?

I expected the VM to get internet access and show ping replies from google.com


Screenshots

If you can, please add some screenshots showing the issue.

N/A


System Information

Please enter your host system details to help contextualise the issue.

OS: Manjaro Linux 23.1.0 Vulcan
Kernel: Linux iAintShowinMyHostname 6.5.13-6-MANJARO #1 SMP PREEMPT_DYNAMIC Mon Dec 18 03:57:17 UTC 2023 x86_64 GNU/Linux
Processor: Intel Core i7-1270P 12th Gen
Memory: 32GB integrated, 30GB swap
Graphics: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] (not used with ULTMOS)


macOS

Please provide details of your macOS guest.

Version: Ventura


ULTMOS

Please provide details of your ULTMOS repo setup.

Version: 0.10.5
Branch: main


AutoPilot (if applicable)

If your issue occurs during or after running AutoPilot (either with AutoPilot itself or a file generated by it), please enter the relevant info.

Generated Script File:

#!/usr/bin/env bash
# shellcheck disable=SC2054

#
#   APC-RUN_19-12-2023_15-51-16
#
#   THIS FILE WAS GENERATED USING AUTOPILOT.
#
#   To boot this script, run the following command:
#   $ ./boot.sh
#

#
#       boot.sh
#       Created by Coopydood as part of the ultimate-macOS-KVM project.
#
#       Profile: https://github.com/Coopydood
#       Repo: https://github.com/Coopydood/ultimate-macOS-KVM
#
#       Adapted from OSX-KVM among others.
#       Greetz to TheNickDude, Dortania, khoalia, foxlet, and other contributors :]
#


ID="macOS"
NAME="macOS 13"
FILE="boot.sh"

ULTMOS=0.10.5
IGNORE_FILE=0
REQUIRES_SUDO=0
VFIO_PTA=0
VFIO_DEVICES=0
GEN_EPOCH=1703019076
FEATURE_LEVEL=6
VERBOSE=1
DISCORD_RPC=0

SCREEN_RES="1920x1080"

ALLOCATED_RAM="10G"
CPU_SOCKETS="1"
CPU_CORES="4"
CPU_THREADS="32"
CPU_MODEL="Haswell-noTSX"
CPU_FEATURE_ARGS="+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check"

REPO_PATH="/home/user8395/ultimate-macOS-KVM"
OVMF_DIR="/home/user8395/ultimate-macOS-KVM/ovmf"

VFIO_ID_0="$USR_VFIO_ID_0"
VFIO_ID_1="$USR_VFIO_ID_1"
VFIO_ROM="$USR_VFIO_ROM"

USB_DEVICES="$USR_USB_DEVICES"

NETWORK_DEVICE="vmxnet3"
MAC_ADDRESS="00:16:cb:00:14:28"

OS_ID="Ventura"

HDD_PATH="$REPO_PATH/HDD.qcow2"
DISK_TYPE="NVMe"

#   You should not have to touch anything below this line, especially if you
#   don't really know what you're doing. It'll probably break something.

args=(
-global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off
-enable-kvm -m "$ALLOCATED_RAM" -cpu "$CPU_MODEL",kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,"$CPU_FEATURE_ARGS"
-machine q35
-usb -device usb-kbd -device usb-tablet #USB_DEV
-smp "$CPU_THREADS",cores="$CPU_CORES",sockets="$CPU_SOCKETS"
-device usb-ehci,id=ehci
-device qemu-xhci,id=xhci
-device pcie-root-port,bus=pcie.0,slot=1,x-speed=16,x-width=32
#VFIO_DEV_BEGIN
#VFIO_DEV_END
-device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
-drive if=pflash,format=raw,readonly=on,file="$OVMF_DIR/OVMF_CODE.fd"
-drive if=pflash,format=raw,file="$OVMF_DIR/OVMF_VARS.fd"
-smbios type=2
-device ich9-intel-hda -device hda-duplex
-device ich9-ahci,id=sata
-drive id=OpenCore,if=none,format=qcow2,file="$REPO_PATH/boot/OpenCore.qcow2"
-drive id=HDD,if=none,file="$HDD_PATH",format=qcow2
-device ide-hd,bus=sata.2,drive=OpenCore
-device nvme,drive=HDD,serial=ULTMOS

############## REMOVE THESE LINES AFTER MACOS INSTALLATION ###############
-drive id=BaseSystem,if=none,file="$REPO_PATH/BaseSystem.img",format=raw
-device ide-hd,bus=sata.4,drive=BaseSystem
##########################################################################

-netdev user,id=net0 -device "$NETWORK_DEVICE",netdev=net0,id=net0,mac="$MAC_ADDRESS"
-device qxl-vga,vgamem_mb=128,vram_size_mb=128    
-monitor stdio
#-display none
#-vga qxl

################ UNCOMMENT IF YOU WANT TO USE VNC MONITOR ################
#-vnc 0.0.0.0:1,password=on -k en-us
##########################################################################

)

while getopts d: flag
do
    case "${flag}" in
        d) DISCORD_RPC=${OPTARG};;
    esac
done

if [ $VERBOSE = 1 ]
then
echo
echo \ \ \──────────────────────────────────────────────
echo \ \ \ \ \ $NAME
echo
echo \ \ \ \ \ $FILE
echo \ \ \ \ \ Built with ULTMOS v$ULTMOS
echo \ \ \ \ \ Using $CPU_MODEL CPU model
if [ $REQUIRES_SUDO = 1 ]
then
echo \ \ \ \ \ Superuser privileges enabled
fi
if [ $VFIO_PTA = 1 ]
then
echo \ \ \ \ \ Passthrough enabled
else
echo \ \ \ \ \ Passthrough disabled
fi
if [ $DISCORD_RPC = 1 ]
then
echo \ \ \ \ \ Discord RPC enabled
else
echo \ \ \ \ \ Discord RPC disabled
fi
echo \ \ \──────────────────────────────────────────────
echo
fi

if [ $DISCORD_RPC = 1 ]
then
"$REPO_PATH/scripts/drpc.py" --os "$OS_ID" --pt $VFIO_DEVICES --wd "$REPO_PATH" &
fi

qemu-system-x86_64 "${args[@]}"

if [ $DISCORD_RPC = 1 ]
then
pkill -f drpc.py
fi

Generated XML File (if applicable):

<!--
         
            APC-RUN_19-12-2023_15-55-54
 
    THIS FILE WAS GENERATED USING AUTOPILOT.
                                 
     To be used with virsh / virt-manager.
         

        boot.xml
        Created by Coopydood as part of the ultimate-macOS-KVM project.

        Profile: https://github.com/Coopydood
        Repo: https://github.com/Coopydood/ultimate-macOS-KVM

-->

<domain xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0" type="kvm">
  <name>ultmos-13</name>
  <title>macOS Ventura (ULTMOS)</title>
  <description>  macOS Ventura
  Converted from boot.sh 

  This virtual machine was created using ultimate-macOS-KVM, a project by Coopydood.
  Visit https://github.com/Coopydood/ultimate-macOS-KVM for help and support, or provide some feedback!

  DEBUG
  ULTMOS: v0.10.5
  XML: boot.xml
  AP: boot.sh
  APFLOW: No
  AUTO: Yes
  USEBLOBS: Yes
  RUNTIME: 15:55:54 19/12/2023
  </description>
  <uuid>07b55bf5-d32a-4265-84dd-e24fdd291190</uuid>
  <memory unit="KiB">10485760</memory>
  <currentMemory unit="KiB">10485760</currentMemory>
  <vcpu placement="static">32</vcpu>
  <os>
    <type arch="x86_64" machine="pc-q35-4.2">hvm</type>
    <loader readonly="yes" type="pflash">/home/user8395/ultimate-macOS-KVM/ovmf/OVMF_CODE.fd</loader>
    <nvram>/home/user8395/ultimate-macOS-KVM/ovmf/OVMF_VARS.fd</nvram>
    <boot dev="hd"/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <cpu mode="host-passthrough" check="none" migratable="on">
    <topology sockets="1" dies="1" cores="4" threads="8"/>
  </cpu>
  <clock offset="utc">
    <timer name="rtc" tickpolicy="catchup"/>
    <timer name="pit" tickpolicy="delay"/>
    <timer name="hpet" present="no"/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type="file" device="disk">
      <driver name="qemu" type="qcow2"/>
      <source file="/home/user8395/ultimate-macOS-KVM/boot/OpenCore.qcow2"/>
      <target dev="sda" bus="sata"/>
      <address type="drive" controller="0" bus="0" target="0" unit="0"/>
    </disk>
    <!-- <disk type="file" device="disk">
      <driver name="qemu" type="qcow2"/>
      <source file="/home/user8395/ultimate-macOS-KVM/HDD.qcow2"/>
      <target dev="sdb" bus="sata" rotation_rate="7200"/>
      <address type="drive" controller="0" bus="0" target="0" unit="1"/>
    </disk> -->

<!--############# REMOVE THESE LINES AFTER MACOS INSTALLATION #############-->

    <disk type="file" device="disk"> <!-- BASESYSTEM HEADER -->
      <driver name="qemu" type="raw"/>
      <source file="/home/user8395/ultimate-macOS-KVM/BaseSystem.img"/>
      <target dev="sdc" bus="sata"/>
      <address type="drive" controller="0" bus="0" target="0" unit="2"/>
          </disk> <!-- BASESYSTEM FOOTER -->

<!--#######################################################################-->

    <controller type="sata" index="0">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x1f" function="0x2"/>
    </controller>
    <controller type="pci" index="0" model="pcie-root"/>
    <controller type="pci" index="1" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="1" port="0x8"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0" multifunction="on"/>
    </controller>
    <controller type="pci" index="2" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="2" port="0x9"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x1"/>
    </controller>
    <controller type="pci" index="3" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="3" port="0xa"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x2"/>
    </controller>
    <controller type="pci" index="4" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="4" port="0xb"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x3"/>
    </controller>
    <controller type="pci" index="5" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="5" port="0xc"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x4"/>
    </controller>
    <controller type="pci" index="6" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="6" port="0xd"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x5"/>
    </controller>
    <controller type="pci" index="7" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="7" port="0xe"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x6"/>
    </controller>
    <controller type="pci" index="8" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="8" port="0xf"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x7"/>
    </controller>
    <controller type="pci" index="9" model="pcie-to-pci-bridge">
      <model name="pcie-pci-bridge"/>
      <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
    </controller>
    <controller type="usb" index="0" model="ich9-ehci1">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x1d" function="0x7"/>
    </controller>
    <controller type="usb" index="0" model="ich9-uhci1">
      <master startport="0"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x1d" function="0x0" multifunction="on"/>
    </controller>
    <controller type="usb" index="0" model="ich9-uhci2">
      <master startport="2"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x1d" function="0x1"/>
    </controller>
    <controller type="usb" index="0" model="ich9-uhci3">
      <master startport="4"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x1d" function="0x2"/>
    </controller>
    <interface type="network">
      <mac address="00:16:cb:00:14:28"/>
      <source network="default"/>
      <model type="vmxnet3"/>
      <address type="pci" domain="0x0000" bus="0x09" slot="0x02" function="0x0"/>
    </interface>
    <serial type="pty">
      <target type="isa-serial" port="0">
        <model name="isa-serial"/>
      </target>
    </serial>
    <console type="pty">
      <target type="serial" port="0"/>
    </console>
    <input type="mouse" bus="ps2"/>
    <input type="keyboard" bus="ps2"/>
    <input type="keyboard" bus="usb">
      <address type="usb" bus="0" port="3"/>
    </input>
    <input type="mouse" bus="usb">
      <address type="usb" bus="0" port="4"/>
    </input>
    <graphics type="spice">
      <listen type="none"/>
    </graphics>
    <sound model="ich9">
          <address type="pci" domain="0x0000" bus="0x00" slot="0x1b" function="0x0"/>
        </sound>
    <audio id="1" type="none"/>
    <video>
      <model type="vga" vram="16384" heads="1" primary="yes"/>
      <address type="pci" domain="0x0000" bus="0x09" slot="0x01" function="0x0"/>
    </video>
    <!-- VFIO-PCI HEADER -->
    <!--<watchdog model="itco" action="reset"/> -->
    <memballoon model="none"/>
  </devices>
  <qemu:commandline>
    <qemu:arg value="-global"/>
    <qemu:arg value="ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off"/>
    <qemu:arg value="-device"/>
    <qemu:arg value="isa-applesmc,osk=ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"/>
    <qemu:arg value="-smbios"/>
    <qemu:arg value="type=2"/>
    <qemu:arg value="-cpu"/>
    <qemu:arg value="Haswell-noTSX,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check"/>
    <qemu:arg value="-global"/>
    <qemu:arg value="nec-usb-xhci.msi=off"/>
    <qemu:arg value="-drive"/>
    <qemu:arg value="file=/home/user8395/ultimate-macOS-KVM/HDD.qcow2,format=raw,if=none,id=HDD"/>
    <qemu:arg value="-device"/>
    <qemu:arg value="nvme,drive=HDD,serial=ULTMOS,bus=pcie.0,addr=10"/>
  </qemu:commandline>
</domain>

Generated Log File:

ULTMOS AUTOPILOT LOG 19-12-2023 15:48:46
──────────────────────────────────────────────────────────────
[15:48:46.062][ ✦ ]:  ULTMOS v0.10.5
[15:48:46.062][ ✦ ]:   
[15:48:46.062][ ✦ ]:  Name       : AutoPilot
[15:48:46.062][ ✦ ]:  File       : autopilot.py
[15:48:46.062][ ✦ ]:  Identifier : APC
[15:48:46.062][ ✦ ]:  Vendor     : Coopydood
[15:48:46.062][ ✦ ]:   
[15:48:46.062][ ✦ ]:  Logging to ./logs/APC_RUN_19-12-2023_15-48-46.log
[15:48:46.062][ ⚠ ]:  Unable to initialise Discord rich presence module, disabling for this session
[15:48:46.062][ ✦ ]:  Displaying menu
[15:48:46.063][ ✔ ]:  Menu displayed
[15:48:46.063][ ➜ ]:  Waiting on user input
[15:48:46.881][ ✔ ]:  User input received
[15:48:46.881][ ✔ ]:  ───────────────── STARTING INTERROGATION SEQUENCE ─────────────────
[15:48:46.881][ ✦ ]:  FEATURE LEVEL 6
[15:48:46.881][ ✔ ]:  Stage 1 sequence initiated
[15:48:46.881][ ✔ ]:  Removing stale blobs
[15:48:47.745][ ✔ ]:  Using default value of boot.sh
[15:48:47.745][ ✔ ]:  Stage 2 sequence initiated
[15:48:48.388][ ✔ ]:  Using default value of 1015
[15:48:48.388][ ✔ ]:  Stage 3 sequence initiated
[15:48:54.703][ ✔ ]:  Stage 3 sequence initiated
[15:48:54.703][ ✦ ]:  Custom value requested, setting up
[15:48:55.660][ ✔ ]:  Custom value was set to 4
[15:48:55.661][ ✔ ]:  Stage 4 sequence initiated
[15:48:58.626][ ✔ ]:  Stage 4 sequence initiated
[15:48:58.627][ ✦ ]:  Custom value requested, setting up

EDIT: switched to Monterey

EDIT 2: switching to Monterey just causes panics now

Welcome to ULTMOS repo! For comments and edits, please use this comment function - it's for everyone's convenience.

What's the output of

sudo virsh net-list
 $ sudo virsh net-list
Enter Password or Place finger on fingerprint reader: 
 Name      State    Autostart   Persistent
--------------------------------------------
 default   active   no          yes

Try removing the "NIC" entry in virt-manager and adding this to the bottom of the domain XML:

<qemu:arg value="-netdev"/>
<qemu:arg value="user,id=net0"/>
<qemu:arg value="-device"/>
<qemu:arg value="vmxnet3,netdev=net0,id=net0,mac=00:16:cb:00:40:24,bus=pcie.0,addr=9"/>

This is basically using the network config from your original script as you said that worked.

Can't understand your issue here. If you're about the resolution, that can be changed by copying/replacing the OVMF file in /ovmf with the preferred resolution from the /resources/ovmf folder.

But the resolution is good in QEMU

Ill just close the issue for now