Coopydood / ultimate-macOS-KVM

Helping noobs and pros alike build the ultimate macOS virtual machine with easy automation, powered by KVM. Now with macOS Sequoia support!
https://coopydood.github.io/ultimate-macOS-KVM/
GNU General Public License v3.0
454 stars 26 forks source link

[AUTOPILOT] TypeError: object of type 'int' has no len() #70

Closed dvdmuckle closed 9 months ago

dvdmuckle commented 9 months ago

Describe the Issue

After running through the initial setup script and importing the XML, immediately afterwards the following error shows up:

Traceback (most recent call last):
  File "/home/dvdmuckle/Documents/ultimate-macOS-KVM/./scripts/extras/xml-convert.py", line 651, in <module>
    elif (len(detectChoice) == 0 or detectChoice.lower() == "b"): # Main Menu
          ^^^^^^^^^^^^^^^^^
TypeError: object of type 'int' has no len()

Giving a cursory glance at the script, I noticed at the top of the script detectChoice is set to 1, where everywhere else it's set to a string. Setting detectChoice to "1" does seem to fix things insofar as there's no crash, but I'm not sure if it results in the intended flow as then the script attempts to import the XML again.

Reproduce the Issue

  1. Run the Autopilot from ./main.py and go through the first time setup workflow
  2. Import the boot.xml
  3. Right after import, this error occurs

Expectation

This error does not occur and I am given the option to boot the VM.

Operating System

Fedora 39

Kernel

6.7.4-200.fc39.x86_64

Processor

i5-10600K

RAM (in GB)

32GB

GPU(s)

Nvidia RTX 3070

Version

v0.11.0

Branch

main

Generated Script File

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

#
#   APC-RUN_17-02-2024_02-55-44
#
#   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 12"
FILE="boot.sh"

ULTMOS=0.11.0
IGNORE_FILE=0
REQUIRES_SUDO=0
VFIO_PTA=0
VFIO_DEVICES=0
GEN_EPOCH=1708156544
FEATURE_LEVEL=7
VERBOSE=1
DISCORD_RPC=1

SCREEN_RES="1280x720"

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

REPO_PATH="/home/dvdmuckle/Documents/ultimate-macOS-KVM"
OVMF_DIR="/home/dvdmuckle/Documents/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:21:09"

OS_ID="Monterey"

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

#   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_BEGIN
#USB_DEV_END
-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 ide-hd,bus=sata.3,drive=HDD,rotation_rate=1

############## 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 \ \ \ \ \ macOS $OS_ID
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_17-02-2024_02-56-24

    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-12</name>
  <title>macOS Monterey (ULTMOS)</title>
  <description>  macOS Monterey
  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.11.0
  XML: boot.xml
  AP: boot.sh
  APFLOW: No
  AUTO: Yes
  USEBLOBS: Yes
  RUNTIME: 02:56:24 17/02/2024
  </description>
  <uuid>5c47894b-5338-47a5-8dc8-b79fd42d8975</uuid>
  <memory unit="KiB">8388608</memory>
  <currentMemory unit="KiB">8388608</currentMemory>
  <vcpu placement="static">8</vcpu>
  <os>
    <type arch="x86_64" machine="pc-q35-4.2">hvm</type>
    <loader readonly="yes" type="pflash">/home/dvdmuckle/Documents/ultimate-macOS-KVM/ovmf/OVMF_CODE.fd</loader>
    <nvram>/home/dvdmuckle/Documents/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="2" threads="4"/>
  </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/dvdmuckle/Documents/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"> <!-- HDD HEADER -->
      <driver name="qemu" type="qcow2"/>
      <source file="/home/dvdmuckle/Documents/ultimate-macOS-KVM/HDD.qcow2"/>
      <target dev="sdb" bus="sata" rotation_rate="1"/>
      <address type="drive" controller="0" bus="0" target="0" unit="1"/>
    </disk> <!-- HDD FOOTER -->

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

    <disk type="file" device="disk"> <!-- BASESYSTEM HEADER -->
      <driver name="qemu" type="raw"/>
      <source file="/home/dvdmuckle/Documents/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:21:09"/>
      <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 -->
    <!-- USB 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"/>
    <!-- NVME HEADER -->
  </qemu:commandline>
</domain>

Generated Log File

ULTMOS AUTOPILOT LOG 17-02-2024 01:39:53
──────────────────────────────────────────────────────────────
[01:39:53.838][ ✦ ]:  ULTMOS v0.11.0
[01:39:53.838][ ✦ ]:   
[01:39:53.838][ ✦ ]:  Name       : AutoPilot
[01:39:53.838][ ✦ ]:  File       : autopilot.py
[01:39:53.838][ ✦ ]:  Identifier : APC
[01:39:53.838][ ✦ ]:  Vendor     : Coopydood
[01:39:53.838][ ✦ ]:   
[01:39:53.838][ ✦ ]:  Logging to ./logs/APC_RUN_17-02-2024_01-39-53.log
[01:39:54.191][ ✔ ]:  Discord rich presence connected
[01:39:54.191][ ✦ ]:  Displaying menu
[01:39:54.191][ ✔ ]:  Menu displayed
[01:39:54.191][ ➜ ]:  Waiting on user input
[01:39:57.203][ ✔ ]:  User input received
[01:39:57.204][ ✔ ]:  ───────────────── STARTING INTERROGATION SEQUENCE ─────────────────
[01:39:57.204][ ✦ ]:  FEATURE LEVEL 7
[01:39:57.204][ ✔ ]:  Stage 1 sequence initiated
[01:39:57.204][ ✔ ]:  Removing stale blobs
[01:40:00.405][ ✔ ]:  Using default value of boot.sh
[01:40:00.410][ ✔ ]:  Stage 2 sequence initiated
[01:40:02.618][ ✔ ]:  Stage 2 sequence initiated
[01:40:02.618][ ✦ ]:  Custom value requested, setting up
[01:40:05.576][ ✔ ]:  Custom value was set to 14
[01:40:05.576][ ✔ ]:  Stage 3 sequence initiated
[01:40:07.234][ ✔ ]:  Using default value of 2
[01:40:07.234][ ✔ ]:  Stage 4 sequence initiated
[01:40:09.174][ ✔ ]:  Using default value of 2
[01:40:09.174][ ✔ ]:  Stage 5 sequence initiated
[01:40:13.289][ ✔ ]:  Using default value of Haswell-noTSX
[01:40:13.289][ ✔ ]:  Stage 6 sequence initiated
[01:40:14.191][ ✔ ]:  Using default value of +ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check
[01:40:14.191][ ✔ ]:  Stage 7 sequence initiated
[01:40:15.267][ ✔ ]:  Using default value of 4G
[01:40:15.268][ ✔ ]:  Stage 8 sequence initiated
[01:40:16.867][ ✔ ]:  Using default value of 80G
[01:40:16.867][ ✔ ]:  Stage 9 sequence initiated
[01:40:25.652][ ✔ ]:  Will set disk up as an SSD
[01:40:25.652][ ✔ ]:  Stage 10 sequence initiated
[01:40:27.479][ ✔ ]:  Using default value of vmxnet3
[01:40:27.479][ ✔ ]:  Stage 11 sequence initiated
[01:40:29.071][ ✔ ]:  Using default value of 00:16:cb:00:21:09
[01:40:29.071][ ✔ ]:  Stage 12 sequence initiated
[01:40:33.207][ ✦ ]:  Arming download mechanism
[01:40:33.207][ ✔ ]:  Downloader armed, will be triggered by AP flow
[01:40:33.207][ ✔ ]:  Stage 13 sequence initiated
[01:40:34.749][ ✔ ]:  Using default value of 1280x720
[01:40:34.749][ ✔ ]:  Stage 14 sequence initiated
[01:40:36.015][ ✔ ]:  Using default value of True
[01:40:36.015][ ✔ ]:  Interrogation complete, displaying summary and AP autoflow sliproad
[01:40:38.424][ ✦ ]:  Handoff started, user preferences saved
[01:40:38.424][ ✔ ]:  ───────────────── STARTING AUTOPILOT AUTOFLOW ─────────────────
[01:40:38.424][ ✦ ]:  Here we go!
[01:40:40.428][ ✔ ]:  Updating status UI
[01:40:43.428][ ✦ ]:  STARTING PREPARE PHASE
[01:40:43.432][ ✔ ]:  Updating status UI
[01:40:43.432][ ✦ ]:  Setting up environment
[01:40:43.434][ ✔ ]:  Copied baseConfig into live working file
[01:40:44.434][ ✦ ]:  Setting up OpenCore image
[01:40:44.434][ ✦ ]:  Selecting appropriate OpenCore image
[01:40:44.434][ ✔ ]:  Selected NEW OpenCore image
[01:40:44.434][ ✦ ]:  Copying OpenCore image in place
[01:40:44.446][ ✔ ]:  OpenCore image copied
[01:40:44.446][ ✦ ]:  Copying OVMF code into place
[01:40:44.450][ ✦ ]:  Copying OVMF vars for resolution 1280x720
[01:40:44.452][ ✔ ]:  OVMF files copied
[01:40:44.452][ ✦ ]:  Creating local OVMF variable store
[01:40:44.454][ ✦ ]:  Performing integrity check
[01:40:44.454][ ✔ ]:  Integrity check PASSED
[01:40:44.454][ ✔ ]:  Updated stage status, handing off to next stage
[01:40:44.454][ ✔ ]:  Updating status UI
[01:40:44.454][ ✦ ]:  STARTING INTEGRITY PHASE
[01:40:44.457][ ✔ ]:  Updating status UI
[01:40:48.457][ ✔ ]:  Integrity check PASSED
[01:40:48.457][ ✔ ]:  Updated stage status, handing off to next stage
[01:40:48.457][ ✔ ]:  Updating status UI
[01:40:48.457][ ✦ ]:  STARTING GENERATION PHASE
[01:40:48.461][ ✦ ]:  Working directory was captured as /home/dvdmuckle/Documents/ultimate-macOS-KVM
[01:40:48.461][ ✔ ]:  Updating status UI
[01:40:48.461][ ✦ ]:  Scanning for file conflict
[01:40:52.461][ ✦ ]:  Beginning variable injection
[01:40:52.461][ ✦ ]:  Checking disk type
[01:40:52.461][ ⚠ ]:  Disk type is SSD, modifying rotation rate
[01:40:52.462][ ✔ ]:  Rotation rate updated
[01:40:52.462][ ✔ ]:  Variable injection complete
[01:40:52.462][ ✦ ]:  Stamping with ULTMOS version
[01:40:52.462][ ✔ ]:  Marked working script as using ULTMOS v0.11.0
[01:40:52.462][ ✦ ]:  Stamping with feature level
[01:40:52.462][ ✔ ]:  Marked working script as feature level 7
[01:40:52.462][ ✦ ]:  Checking if Discord rich presence is available
[01:40:53.831][ ✔ ]:  Discord rich presence is available, will enable in script
[01:40:53.831][ ✦ ]:  Adding OS ID marker
[01:40:53.831][ ✦ ]:  Setting up BaseSystem image attachment
[01:40:53.831][ ✦ ]:  Writing changes
[01:40:53.831][ ✔ ]:  Changes written to file
[01:40:53.831][ ✦ ]:  Performing integrity check
[01:40:53.831][ ✔ ]:  Integrity check PASSED
[01:40:53.831][ ✔ ]:  Updated stage status, handing off to next stage
[01:40:53.832][ ✔ ]:  Updating status UI
[01:40:54.832][ ✦ ]:  Checking XML creation preferences
[01:40:54.832][ ✔ ]:  XML creation requested, WILL be generating XML
[01:40:54.835][ ✔ ]:  Updating status UI
[01:40:54.835][ ✦ ]:  Pointing XML conversion tool to live script
[01:40:54.836][ ✦ ]:  Preparing live working XML
[01:40:54.837][ ✔ ]:  Base XML ready for live working
[01:40:54.838][ ✦ ]:  Parsing XML
[01:40:54.838][ ⚠ ]:  XML conversion tool APC integration doesn't support blob caching yet
[01:40:54.838][ ✦ ]:  Converting to XML format
[01:40:54.838][ ⚠ ]:  Virtual disk type is SSD, modifying rotation rate
[01:40:54.838][ ✔ ]:  Rotation rate updated
[01:40:54.838][ ✔ ]:  Converted to XML structure
[01:40:54.838][ ✦ ]:  Writing changes
[01:40:54.838][ ✔ ]:  Changes written to file
[01:40:56.838][ ✔ ]:  Updated stage status, handing off to next stage
[01:40:56.838][ ✔ ]:  Updating status UI
[01:40:59.839][ ✔ ]:  User requested a new macOS recovery image, arming downloader
[01:40:59.839][ ✦ ]:  STARTING REMOTE RECOVERY PHASE
[01:40:59.842][ ✔ ]:  Updating status UI
[01:41:01.842][ ✦ ]:  Setting target OS to 14
[01:41:01.842][ ✔ ]:  OS ID is valid, sending to dlosx script
[01:43:58.516][ ✦ ]:  Checking BaseSystem with a size of 3220393984
[01:43:58.516][ ✔ ]:  Integrity check PASSED
[01:43:58.517][ ✔ ]:  Updated stage status, handing off to next stage
[01:43:58.517][ ✔ ]:  Updating status UI
[01:44:01.517][ ✔ ]:  User requested a new HDD file, generation will go ahead
[01:44:01.517][ ✦ ]:  STARTING HARDDISK PHASE
[01:44:01.520][ ✔ ]:  Updating status UI
[01:44:03.520][ ✦ ]:  Scanning for file conflict
[01:44:03.520][ ✦ ]:  Generating hard disk image file
[01:44:06.535][ ✔ ]:  Hard disk image file generation verified
[01:44:06.535][ ✔ ]:  Updated stage status, handing off to next stage
[01:44:06.535][ ✔ ]:  Updating status UI
[01:44:08.535][ ✦ ]:  STARTING APPLY PHASE
[01:44:08.538][ ✔ ]:  Updating status UI
[01:44:10.538][ ✔ ]:  Integrity check PASSED
[01:44:10.538][ ✦ ]:  Dumping contents of baseConfig to memory
[01:44:10.538][ ✦ ]:  Stripping warning headers
[01:44:10.538][ ✦ ]:  Generating epoch timestamp
[01:44:10.538][ ✔ ]:  Epoch timestamped as 1708152250
[01:44:10.538][ ✦ ]:  Writing to file
[01:44:10.539][ ✔ ]:  Header verification complete
[01:44:10.539][ ✦ ]:  Moving working file into place
[01:44:10.543][ ✔ ]:  Moved working file into boot.sh successfully
[01:44:10.543][ ✔ ]:  Updated stage status, handing off to next stage
[01:44:10.543][ ✔ ]:  Updating status UI
[01:44:12.543][ ✦ ]:  STARTING PERMISSIONS PHASE
[01:44:12.546][ ✔ ]:  Updating status UI
[01:44:14.546][ ✦ ]:  Setting execute permissions
[01:44:14.547][ ✦ ]:  Setting readwrite permissions
[01:44:14.548][ ✔ ]:  Permissons set for new user files
[01:44:14.548][ ✔ ]:  Updated stage status, handing off to next stage
[01:44:14.548][ ✔ ]:  Updating status UI
[01:44:16.551][ ✔ ]:  Updating status UI
[01:44:16.551][ ✦ ]:  STARTING CLEANUP PHASE
[01:44:17.552][ ✦ ]:  Copying current session blobs into user backdir
[01:44:17.555][ ✦ ]:  Marking blobs as stale
[01:44:17.555][ ✦ ]:  Moving blobs into stale folder
[01:44:17.556][ ✔ ]:  Blob cleanup complete
[01:44:17.556][ ✔ ]:  Updated stage status, handing off to next stage
[01:44:17.556][ ✔ ]:  Updating status UI
[01:44:18.556][ ✦ ]:  Stopping timer
[01:44:20.559][ ✦ ]:  Updating variable definition
[01:44:20.561][ ✔ ]:  Timer was stopped with a recorded time of 220 seconds in live mode
[01:44:20.561][ ✔ ]:  AutoPilot stages complete, displaying user summary screen
[01:44:20.561][ ✔ ]:  ───────────────── AUTOPILOT COMPLETE! SESSION TIME WAS 220 SEC ─────────────────
[01:44:20.561][ ✦ ]:  XML generation was part of AP flow, offering import experience
[01:44:20.561][ ➜ ]:  Waiting for user input
[01:45:04.051][ ✔ ]:  User input received
[01:45:04.051][ ✦ ]:  Handing off to XML importer experience flow
[01:45:04.051][ ☠ ]:  bye
[01:45:04.051][ ☠ ]:  ───────────────── END OF LOGFILE ─────────────────
ULTMOS AUTOPILOT LOG 17-02-2024 02:19:46
──────────────────────────────────────────────────────────────
[02:19:46.656][ ✦ ]:  ULTMOS v0.11.0
[02:19:46.656][ ✦ ]:   
[02:19:46.656][ ✦ ]:  Name       : AutoPilot
[02:19:46.656][ ✦ ]:  File       : autopilot.py
[02:19:46.656][ ✦ ]:  Identifier : APC
[02:19:46.657][ ✦ ]:  Vendor     : Coopydood
[02:19:46.657][ ✦ ]:   
[02:19:46.657][ ✦ ]:  Logging to ./logs/APC_RUN_17-02-2024_02-19-46.log
[02:19:46.773][ ✔ ]:  Discord rich presence connected
[02:19:46.773][ ✦ ]:  Displaying menu
[02:19:46.773][ ✔ ]:  Menu displayed
[02:19:46.773][ ➜ ]:  Waiting on user input
[02:19:51.210][ ✔ ]:  User input received
[02:19:51.210][ ✔ ]:  ───────────────── STARTING INTERROGATION SEQUENCE ─────────────────
[02:19:51.210][ ✦ ]:  FEATURE LEVEL 7
[02:19:51.210][ ✔ ]:  Stage 1 sequence initiated
[02:19:51.210][ ✔ ]:  Removing stale blobs
[02:19:53.408][ ✔ ]:  Using default value of boot.sh
[02:19:53.411][ ✔ ]:  Stage 2 sequence initiated
[02:19:55.473][ ✔ ]:  Using default value of 12
[02:19:55.473][ ✔ ]:  Stage 3 sequence initiated
[02:19:59.015][ ✔ ]:  Using default value of 2
[02:19:59.015][ ✔ ]:  Stage 4 sequence initiated
[02:20:02.030][ ✔ ]:  Stage 4 sequence initiated
[02:20:05.709][ ✔ ]:  Stage 4 sequence initiated
[02:20:05.712][ ✦ ]:  Custom value requested, setting up
[02:20:06.971][ ✔ ]:  Custom value was set to 4
[02:20:06.971][ ✔ ]:  Stage 5 sequence initiated
[02:20:08.562][ ✔ ]:  Using default value of Haswell-noTSX
[02:20:08.562][ ✔ ]:  Stage 6 sequence initiated
[02:20:10.192][ ✔ ]:  Using default value of +ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check
[02:20:10.192][ ✔ ]:  Stage 7 sequence initiated
[02:20:14.463][ ✔ ]:  Stage 7 sequence initiated
[02:20:14.466][ ✦ ]:  Custom value requested, setting up
[02:20:14.466][ ➜ ]:  Waiting for user input
[02:20:17.274][ ✔ ]:  User input received
[02:20:17.274][ ✔ ]:  Custom value was set to 8
[02:20:17.274][ ✔ ]:  Stage 8 sequence initiated
[02:20:22.600][ ✔ ]:  Using default value of 80G
[02:20:22.600][ ✔ ]:  Stage 9 sequence initiated
[02:20:24.036][ ✔ ]:  Will set disk up as an SSD
[02:20:24.036][ ✔ ]:  Stage 10 sequence initiated
[02:20:25.258][ ✔ ]:  Using default value of vmxnet3
[02:20:25.258][ ✔ ]:  Stage 11 sequence initiated
[02:20:26.934][ ✔ ]:  Using default value of 00:16:cb:00:21:09
[02:20:26.934][ ✔ ]:  Stage 12 sequence initiated
[02:20:28.431][ ✦ ]:  Arming download mechanism
[02:20:28.431][ ✔ ]:  Downloader armed, will be triggered by AP flow
[02:20:28.431][ ✔ ]:  Stage 13 sequence initiated
[02:20:29.409][ ✔ ]:  Using default value of 1280x720
[02:20:29.409][ ✔ ]:  Stage 14 sequence initiated
[02:20:31.540][ ✔ ]:  Using default value of True
[02:20:31.540][ ✔ ]:  Interrogation complete, displaying summary and AP autoflow sliproad
[02:20:34.524][ ✦ ]:  Handoff started, user preferences saved
[02:20:34.524][ ✔ ]:  ───────────────── STARTING AUTOPILOT AUTOFLOW ─────────────────
[02:20:34.525][ ✦ ]:  Here we go!
[02:20:36.527][ ✔ ]:  Updating status UI
[02:20:39.528][ ✦ ]:  STARTING PREPARE PHASE
[02:20:39.530][ ✔ ]:  Updating status UI
[02:20:39.530][ ✦ ]:  Setting up environment
[02:20:39.532][ ✔ ]:  Copied baseConfig into live working file
[02:20:40.532][ ✦ ]:  Setting up OpenCore image
[02:20:40.532][ ⚠ ]:  Existing OpenCore image found
[02:20:40.532][ ✦ ]:  Backing up existing image to ./boot/17-02-2024_02-20-40
[02:20:40.544][ ✔ ]:  Existing image backed up to ./boot/17-02-2024_02-20-40
[02:20:42.544][ ✦ ]:  Selecting appropriate OpenCore image
[02:20:42.544][ ✔ ]:  Selected NEW OpenCore image
[02:20:42.544][ ✦ ]:  Copying OpenCore image in place
[02:20:42.602][ ✔ ]:  OpenCore image copied
[02:20:42.602][ ✦ ]:  Copying OVMF code into place
[02:20:42.609][ ✦ ]:  Copying OVMF vars for resolution 1280x720
[02:20:42.611][ ✔ ]:  OVMF files copied
[02:20:42.611][ ✦ ]:  Creating local OVMF variable store
[02:20:42.612][ ✦ ]:  Performing integrity check
[02:20:42.613][ ✔ ]:  Integrity check PASSED
[02:20:42.613][ ✔ ]:  Updated stage status, handing off to next stage
[02:20:42.613][ ✔ ]:  Updating status UI
[02:20:42.613][ ✦ ]:  STARTING INTEGRITY PHASE
[02:20:42.616][ ✔ ]:  Updating status UI
[02:20:46.616][ ✔ ]:  Integrity check PASSED
[02:20:46.616][ ✔ ]:  Updated stage status, handing off to next stage
[02:20:46.616][ ✔ ]:  Updating status UI
[02:20:46.616][ ✦ ]:  STARTING GENERATION PHASE
[02:20:46.620][ ✦ ]:  Working directory was captured as /home/dvdmuckle/Documents/ultimate-macOS-KVM
[02:20:46.620][ ✔ ]:  Updating status UI
[02:20:46.620][ ✦ ]:  Scanning for file conflict
[02:20:50.620][ ⚠ ]:  Existing file with name boot.sh detected, asking the user
[02:20:57.136][ ⚠ ]:  Overwriting boot.sh
[02:20:57.136][ ✔ ]:  Updating status UI
[02:20:57.136][ ✦ ]:  Beginning variable injection
[02:20:57.136][ ✦ ]:  Checking disk type
[02:20:57.136][ ⚠ ]:  Disk type is SSD, modifying rotation rate
[02:20:57.136][ ✔ ]:  Rotation rate updated
[02:20:57.136][ ✔ ]:  Variable injection complete
[02:20:57.136][ ✦ ]:  Stamping with ULTMOS version
[02:20:57.136][ ✔ ]:  Marked working script as using ULTMOS v0.11.0
[02:20:57.136][ ✦ ]:  Stamping with feature level
[02:20:57.136][ ✔ ]:  Marked working script as feature level 7
[02:20:57.136][ ✦ ]:  Checking if Discord rich presence is available
[02:20:58.313][ ✔ ]:  Discord rich presence is available, will enable in script
[02:20:58.313][ ✦ ]:  Adding OS ID marker
[02:20:58.314][ ✦ ]:  Setting up BaseSystem image attachment
[02:20:58.314][ ✦ ]:  Writing changes
[02:20:58.314][ ✔ ]:  Changes written to file
[02:20:58.314][ ✦ ]:  Performing integrity check
[02:20:58.314][ ✔ ]:  Integrity check PASSED
[02:20:58.314][ ✔ ]:  Updated stage status, handing off to next stage
[02:20:58.314][ ✔ ]:  Updating status UI
[02:20:59.314][ ✦ ]:  Checking XML creation preferences
[02:20:59.314][ ✔ ]:  XML creation requested, WILL be generating XML
[02:20:59.317][ ✔ ]:  Updating status UI
[02:20:59.317][ ✦ ]:  Pointing XML conversion tool to live script
[02:20:59.317][ ✦ ]:  Preparing live working XML
[02:20:59.327][ ✔ ]:  Base XML ready for live working
[02:20:59.327][ ✦ ]:  Parsing XML
[02:20:59.327][ ⚠ ]:  XML conversion tool APC integration doesn't support blob caching yet
[02:20:59.327][ ✦ ]:  Converting to XML format
[02:20:59.327][ ⚠ ]:  Virtual disk type is SSD, modifying rotation rate
[02:20:59.327][ ✔ ]:  Rotation rate updated
[02:20:59.327][ ✔ ]:  Converted to XML structure
[02:20:59.327][ ✦ ]:  Writing changes
[02:20:59.327][ ✔ ]:  Changes written to file
[02:21:01.327][ ✔ ]:  Updated stage status, handing off to next stage
[02:21:01.327][ ✔ ]:  Updating status UI
[02:21:04.327][ ✔ ]:  User requested a new macOS recovery image, arming downloader
[02:21:04.328][ ✦ ]:  STARTING REMOTE RECOVERY PHASE
[02:21:04.330][ ✔ ]:  Updating status UI
[02:21:06.331][ ✦ ]:  Setting target OS to 12
[02:21:06.331][ ✔ ]:  OS ID is valid, sending to dlosx script
[02:22:21.639][ ✦ ]:  Checking BaseSystem with a size of 3220185088
[02:22:21.639][ ✔ ]:  Integrity check PASSED
[02:22:21.639][ ✔ ]:  Updated stage status, handing off to next stage
[02:22:21.639][ ✔ ]:  Updating status UI
[02:22:24.639][ ✔ ]:  User requested a new HDD file, generation will go ahead
[02:22:24.639][ ✦ ]:  STARTING HARDDISK PHASE
[02:22:24.642][ ✔ ]:  Updating status UI
[02:22:26.642][ ✦ ]:  Scanning for file conflict
[02:22:26.646][ ⚠ ]:  Existing file with name HDD.qcow2 detected, asking the user
[02:22:26.646][ ➜ ]:  Waiting for user input
[02:22:37.138][ ✔ ]:  User input received
[02:22:37.140][ ⚠ ]:  Deleting HDD.qcow2
[02:22:37.953][ ✦ ]:  STARTING HARDDISK PHASE
[02:22:37.956][ ✔ ]:  Updating status UI
[02:22:39.956][ ✦ ]:  Scanning for file conflict
[02:22:39.956][ ✦ ]:  Generating hard disk image file
[02:22:42.967][ ✔ ]:  Hard disk image file generation verified
[02:22:42.967][ ✔ ]:  Updated stage status, handing off to next stage
[02:22:42.967][ ✔ ]:  Updating status UI
[02:22:44.967][ ✔ ]:  Hard disk image file generation verified
[02:22:44.967][ ✔ ]:  Updated stage status, handing off to next stage
[02:22:44.967][ ✔ ]:  Updating status UI
[02:22:46.967][ ✦ ]:  STARTING APPLY PHASE
[02:22:46.970][ ✔ ]:  Updating status UI
[02:22:48.971][ ✔ ]:  Integrity check PASSED
[02:22:48.971][ ✦ ]:  Dumping contents of baseConfig to memory
[02:22:48.971][ ✦ ]:  Stripping warning headers
[02:22:48.971][ ✦ ]:  Generating epoch timestamp
[02:22:48.971][ ✔ ]:  Epoch timestamped as 1708154568
[02:22:48.971][ ✦ ]:  Writing to file
[02:22:48.971][ ✔ ]:  Header verification complete
[02:22:48.971][ ✦ ]:  Moving working file into place
[02:22:48.974][ ✔ ]:  Moved working file into boot.sh successfully
[02:22:48.974][ ✔ ]:  Updated stage status, handing off to next stage
[02:22:48.974][ ✔ ]:  Updating status UI
[02:22:50.974][ ✦ ]:  STARTING PERMISSIONS PHASE
[02:22:50.977][ ✔ ]:  Updating status UI
[02:22:52.977][ ✦ ]:  Setting execute permissions
[02:22:52.978][ ✦ ]:  Setting readwrite permissions
[02:22:52.979][ ✔ ]:  Permissons set for new user files
[02:22:52.979][ ✔ ]:  Updated stage status, handing off to next stage
[02:22:52.979][ ✔ ]:  Updating status UI
[02:22:54.982][ ✔ ]:  Updating status UI
[02:22:54.982][ ✦ ]:  STARTING CLEANUP PHASE
[02:22:55.983][ ✦ ]:  Copying current session blobs into user backdir
[02:22:55.985][ ✦ ]:  Marking blobs as stale
[02:22:55.985][ ✦ ]:  Moving blobs into stale folder
[02:22:55.986][ ✔ ]:  Blob cleanup complete
[02:22:55.986][ ✔ ]:  Updated stage status, handing off to next stage
[02:22:55.986][ ✔ ]:  Updating status UI
[02:22:56.987][ ✦ ]:  Stopping timer
[02:22:58.989][ ✦ ]:  Updating variable definition
[02:22:58.992][ ✔ ]:  Timer was stopped with a recorded time of 142 seconds in live mode
[02:22:58.992][ ✔ ]:  AutoPilot stages complete, displaying user summary screen
[02:22:58.992][ ✔ ]:  ───────────────── AUTOPILOT COMPLETE! SESSION TIME WAS 142 SEC ─────────────────
[02:22:58.992][ ✦ ]:  XML generation was part of AP flow, offering import experience
[02:22:58.992][ ➜ ]:  Waiting for user input
[02:23:03.564][ ✔ ]:  User input received
[02:23:03.565][ ✦ ]:  Handing off to XML importer experience flow
[02:23:03.565][ ☠ ]:  bye
[02:23:03.565][ ☠ ]:  ───────────────── END OF LOGFILE ─────────────────
ULTMOS AUTOPILOT LOG 17-02-2024 02:24:26
──────────────────────────────────────────────────────────────
[02:24:26.537][ ✦ ]:  ULTMOS v0.11.0
[02:24:26.537][ ✦ ]:   
[02:24:26.537][ ✦ ]:  Name       : AutoPilot
[02:24:26.537][ ✦ ]:  File       : autopilot.py
[02:24:26.537][ ✦ ]:  Identifier : APC
[02:24:26.537][ ✦ ]:  Vendor     : Coopydood
[02:24:26.537][ ✦ ]:   
[02:24:26.537][ ✦ ]:  Logging to ./logs/APC_RUN_17-02-2024_02-24-26.log
[02:24:26.665][ ✔ ]:  Discord rich presence connected
[02:24:26.665][ ✦ ]:  Displaying menu
[02:24:26.665][ ✔ ]:  Menu displayed
[02:24:26.665][ ➜ ]:  Waiting on user input
[02:24:29.326][ ✔ ]:  User input received
[02:24:29.326][ ✔ ]:  ───────────────── STARTING INTERROGATION SEQUENCE ─────────────────
[02:24:29.326][ ✦ ]:  FEATURE LEVEL 7
[02:24:29.326][ ✔ ]:  Stage 1 sequence initiated
[02:24:29.326][ ✔ ]:  Removing stale blobs
[02:24:30.347][ ✔ ]:  Using default value of boot.sh
[02:24:30.349][ ✔ ]:  Stage 2 sequence initiated
[02:24:30.998][ ✔ ]:  Using default value of 12
[02:24:30.998][ ✔ ]:  Stage 3 sequence initiated
[02:24:32.992][ ✔ ]:  Using default value of 2
[02:24:32.992][ ✔ ]:  Stage 4 sequence initiated
[02:24:34.335][ ✔ ]:  Stage 4 sequence initiated
[02:24:34.337][ ✦ ]:  Custom value requested, setting up
[02:24:35.391][ ✔ ]:  Custom value was set to 4
[02:24:35.392][ ✔ ]:  Stage 5 sequence initiated
[02:24:36.532][ ✔ ]:  Using default value of Haswell-noTSX
[02:24:36.533][ ✔ ]:  Stage 6 sequence initiated
[02:24:37.467][ ✔ ]:  Using default value of +ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check
[02:24:37.467][ ✔ ]:  Stage 7 sequence initiated
[02:24:38.880][ ✔ ]:  Stage 7 sequence initiated
[02:24:38.883][ ✦ ]:  Custom value requested, setting up
[02:24:38.883][ ➜ ]:  Waiting for user input
[02:24:46.543][ ✔ ]:  User input received
[02:24:46.543][ ✔ ]:  Custom value was set to 8
[02:24:46.543][ ✔ ]:  Stage 8 sequence initiated
[02:24:48.509][ ✔ ]:  Using default value of 80G
[02:24:48.509][ ✔ ]:  Stage 9 sequence initiated
[02:24:49.667][ ✔ ]:  Will set disk up as an SSD
[02:24:49.667][ ✔ ]:  Stage 10 sequence initiated
[02:24:50.723][ ✔ ]:  Using default value of vmxnet3
[02:24:50.723][ ✔ ]:  Stage 11 sequence initiated
[02:24:51.393][ ✔ ]:  Using default value of 00:16:cb:00:21:09
[02:24:51.393][ ✔ ]:  Stage 12 sequence initiated
[02:24:58.646][ ✦ ]:  Arming download mechanism
[02:24:58.646][ ✔ ]:  Downloader armed, will be triggered by AP flow
[02:24:58.646][ ✔ ]:  Stage 13 sequence initiated
[02:25:00.209][ ✔ ]:  Using default value of 1280x720
[02:25:00.209][ ✔ ]:  Stage 14 sequence initiated
[02:25:01.064][ ✔ ]:  Using default value of True
[02:25:01.064][ ✔ ]:  Interrogation complete, displaying summary and AP autoflow sliproad
[02:25:03.758][ ✦ ]:  Handoff started, user preferences saved
[02:25:03.758][ ✔ ]:  ───────────────── STARTING AUTOPILOT AUTOFLOW ─────────────────
[02:25:03.758][ ✦ ]:  Here we go!
[02:25:05.762][ ✔ ]:  Updating status UI
[02:25:08.762][ ✦ ]:  STARTING PREPARE PHASE
[02:25:08.764][ ✔ ]:  Updating status UI
[02:25:08.764][ ✦ ]:  Setting up environment
[02:25:08.766][ ✔ ]:  Copied baseConfig into live working file
[02:25:09.766][ ✦ ]:  Setting up OpenCore image
[02:25:09.766][ ✦ ]:  Selecting appropriate OpenCore image
[02:25:09.766][ ✔ ]:  Selected NEW OpenCore image
[02:25:09.766][ ✦ ]:  Copying OpenCore image in place
[02:25:09.777][ ✔ ]:  OpenCore image copied
[02:25:09.777][ ✦ ]:  Copying OVMF code into place
[02:25:09.782][ ✦ ]:  Copying OVMF vars for resolution 1280x720
[02:25:09.783][ ✔ ]:  OVMF files copied
[02:25:09.783][ ✦ ]:  Creating local OVMF variable store
[02:25:09.785][ ✦ ]:  Performing integrity check
[02:25:09.785][ ✔ ]:  Integrity check PASSED
[02:25:09.785][ ✔ ]:  Updated stage status, handing off to next stage
[02:25:09.785][ ✔ ]:  Updating status UI
[02:25:09.785][ ✦ ]:  STARTING INTEGRITY PHASE
[02:25:09.788][ ✔ ]:  Updating status UI
[02:25:13.788][ ✔ ]:  Integrity check PASSED
[02:25:13.788][ ✔ ]:  Updated stage status, handing off to next stage
[02:25:13.788][ ✔ ]:  Updating status UI
[02:25:13.788][ ✦ ]:  STARTING GENERATION PHASE
[02:25:13.792][ ✦ ]:  Working directory was captured as /home/dvdmuckle/Documents/ultimate-macOS-KVM
[02:25:13.792][ ✔ ]:  Updating status UI
[02:25:13.792][ ✦ ]:  Scanning for file conflict
[02:25:17.792][ ⚠ ]:  Existing file with name boot.sh detected, asking the user
[02:27:03.608][ ⚠ ]:  Overwriting boot.sh
[02:27:03.608][ ✔ ]:  Updating status UI
[02:27:03.608][ ✦ ]:  Beginning variable injection
[02:27:03.608][ ✦ ]:  Checking disk type
[02:27:03.608][ ⚠ ]:  Disk type is SSD, modifying rotation rate
[02:27:03.608][ ✔ ]:  Rotation rate updated
[02:27:03.608][ ✔ ]:  Variable injection complete
[02:27:03.608][ ✦ ]:  Stamping with ULTMOS version
[02:27:03.608][ ✔ ]:  Marked working script as using ULTMOS v0.11.0
[02:27:03.608][ ✦ ]:  Stamping with feature level
[02:27:03.608][ ✔ ]:  Marked working script as feature level 7
[02:27:03.608][ ✦ ]:  Checking if Discord rich presence is available
[02:27:04.576][ ✔ ]:  Discord rich presence is available, will enable in script
[02:27:04.576][ ✦ ]:  Adding OS ID marker
[02:27:04.576][ ✦ ]:  Setting up BaseSystem image attachment
[02:27:04.576][ ✦ ]:  Writing changes
[02:27:04.576][ ✔ ]:  Changes written to file
[02:27:04.576][ ✦ ]:  Performing integrity check
[02:27:04.576][ ✔ ]:  Integrity check PASSED
[02:27:04.576][ ✔ ]:  Updated stage status, handing off to next stage
[02:27:04.576][ ✔ ]:  Updating status UI
[02:27:05.576][ ✦ ]:  Checking XML creation preferences
[02:27:05.576][ ✔ ]:  XML creation requested, WILL be generating XML
[02:27:05.584][ ✔ ]:  Updating status UI
[02:27:05.584][ ✦ ]:  Pointing XML conversion tool to live script
[02:27:05.584][ ✦ ]:  Preparing live working XML
[02:27:05.586][ ✔ ]:  Base XML ready for live working
[02:27:05.586][ ✦ ]:  Parsing XML
[02:27:05.586][ ⚠ ]:  XML conversion tool APC integration doesn't support blob caching yet
[02:27:05.586][ ✦ ]:  Converting to XML format
[02:27:05.586][ ⚠ ]:  Virtual disk type is SSD, modifying rotation rate
[02:27:05.586][ ✔ ]:  Rotation rate updated
[02:27:05.586][ ✔ ]:  Converted to XML structure
[02:27:05.586][ ✦ ]:  Writing changes
[02:27:05.586][ ✔ ]:  Changes written to file
[02:27:07.587][ ✔ ]:  Updated stage status, handing off to next stage
[02:27:07.587][ ✔ ]:  Updating status UI
[02:27:10.587][ ✔ ]:  User requested a new macOS recovery image, arming downloader
[02:27:10.587][ ✦ ]:  STARTING REMOTE RECOVERY PHASE
[02:27:10.590][ ✔ ]:  Updating status UI
[02:27:12.590][ ✦ ]:  Setting target OS to 12
[02:27:12.590][ ✔ ]:  OS ID is valid, sending to dlosx script
[02:27:35.954][ ✦ ]:  Checking BaseSystem with a size of 3220185088
[02:27:35.954][ ✔ ]:  Integrity check PASSED
[02:27:35.954][ ✔ ]:  Updated stage status, handing off to next stage
[02:27:35.954][ ✔ ]:  Updating status UI
[02:27:38.955][ ✔ ]:  User requested a new HDD file, generation will go ahead
[02:27:38.955][ ✦ ]:  STARTING HARDDISK PHASE
[02:27:38.959][ ✔ ]:  Updating status UI
[02:27:40.959][ ✦ ]:  Scanning for file conflict
[02:27:40.959][ ✦ ]:  Generating hard disk image file
[02:27:43.967][ ✔ ]:  Hard disk image file generation verified
[02:27:43.967][ ✔ ]:  Updated stage status, handing off to next stage
[02:27:43.968][ ✔ ]:  Updating status UI
[02:27:45.968][ ✦ ]:  STARTING APPLY PHASE
[02:27:45.974][ ✔ ]:  Updating status UI
[02:27:47.974][ ✔ ]:  Integrity check PASSED
[02:27:47.974][ ✦ ]:  Dumping contents of baseConfig to memory
[02:27:47.974][ ✦ ]:  Stripping warning headers
[02:27:47.974][ ✦ ]:  Generating epoch timestamp
[02:27:47.974][ ✔ ]:  Epoch timestamped as 1708154867
[02:27:47.974][ ✦ ]:  Writing to file
[02:27:47.974][ ✔ ]:  Header verification complete
[02:27:47.974][ ✦ ]:  Moving working file into place
[02:27:47.977][ ✔ ]:  Moved working file into boot.sh successfully
[02:27:47.977][ ✔ ]:  Updated stage status, handing off to next stage
[02:27:47.977][ ✔ ]:  Updating status UI
[02:27:49.977][ ✦ ]:  STARTING PERMISSIONS PHASE
[02:27:49.983][ ✔ ]:  Updating status UI
[02:27:51.984][ ✦ ]:  Setting execute permissions
[02:27:51.985][ ✦ ]:  Setting readwrite permissions
[02:27:51.986][ ✔ ]:  Permissons set for new user files
[02:27:51.986][ ✔ ]:  Updated stage status, handing off to next stage
[02:27:51.986][ ✔ ]:  Updating status UI
[02:27:53.992][ ✔ ]:  Updating status UI
[02:27:53.992][ ✦ ]:  STARTING CLEANUP PHASE
[02:27:54.992][ ✦ ]:  Copying current session blobs into user backdir
[02:27:54.994][ ✦ ]:  Marking blobs as stale
[02:27:54.994][ ✦ ]:  Moving blobs into stale folder
[02:27:54.996][ ✔ ]:  Blob cleanup complete
[02:27:54.996][ ✔ ]:  Updated stage status, handing off to next stage
[02:27:54.996][ ✔ ]:  Updating status UI
[02:27:55.996][ ✦ ]:  Stopping timer
[02:27:57.999][ ✦ ]:  Updating variable definition
[02:27:58.002][ ✔ ]:  Timer was stopped with a recorded time of 172 seconds in live mode
[02:27:58.002][ ✔ ]:  AutoPilot stages complete, displaying user summary screen
[02:27:58.002][ ✔ ]:  ───────────────── AUTOPILOT COMPLETE! SESSION TIME WAS 172 SEC ─────────────────
[02:27:58.002][ ✦ ]:  XML generation was part of AP flow, offering import experience
[02:27:58.002][ ➜ ]:  Waiting for user input
[02:29:54.518][ ✔ ]:  User input received
[02:29:54.518][ ✦ ]:  Handing off to XML importer experience flow
[02:29:54.518][ ☠ ]:  bye
[02:29:54.518][ ☠ ]:  ───────────────── END OF LOGFILE ─────────────────
ULTMOS AUTOPILOT LOG 17-02-2024 02:53:44
──────────────────────────────────────────────────────────────
[02:53:44.574][ ✦ ]:  ULTMOS v0.11.0
[02:53:44.574][ ✦ ]:   
[02:53:44.574][ ✦ ]:  Name       : AutoPilot
[02:53:44.574][ ✦ ]:  File       : autopilot.py
[02:53:44.574][ ✦ ]:  Identifier : APC
[02:53:44.574][ ✦ ]:  Vendor     : Coopydood
[02:53:44.574][ ✦ ]:   
[02:53:44.574][ ✦ ]:  Logging to ./logs/APC_RUN_17-02-2024_02-53-44.log
[02:53:44.860][ ✔ ]:  Discord rich presence connected
[02:53:44.860][ ✦ ]:  Displaying menu
[02:53:44.860][ ✔ ]:  Menu displayed
[02:53:44.860][ ➜ ]:  Waiting on user input
[02:53:46.002][ ✔ ]:  User input received
[02:53:46.002][ ✔ ]:  ───────────────── STARTING INTERROGATION SEQUENCE ─────────────────
[02:53:46.002][ ✦ ]:  FEATURE LEVEL 7
[02:53:46.002][ ✔ ]:  Stage 1 sequence initiated
[02:53:46.002][ ✔ ]:  Removing stale blobs
[02:53:47.061][ ✔ ]:  Using default value of boot.sh
[02:53:47.064][ ✔ ]:  Stage 2 sequence initiated
[02:53:48.138][ ✔ ]:  Using default value of 12
[02:53:48.138][ ✔ ]:  Stage 3 sequence initiated
[02:53:49.326][ ✔ ]:  Using default value of 2
[02:53:49.326][ ✔ ]:  Stage 4 sequence initiated
[02:53:50.322][ ✔ ]:  Stage 4 sequence initiated
[02:53:50.325][ ✦ ]:  Custom value requested, setting up
[02:53:50.934][ ✔ ]:  Custom value was set to 4
[02:53:50.934][ ✔ ]:  Stage 5 sequence initiated
[02:53:51.972][ ✔ ]:  Using default value of Haswell-noTSX
[02:53:51.972][ ✔ ]:  Stage 6 sequence initiated
[02:53:52.489][ ✔ ]:  Using default value of +ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check
[02:53:52.489][ ✔ ]:  Stage 7 sequence initiated
[02:53:53.821][ ✔ ]:  Stage 7 sequence initiated
[02:53:53.823][ ✦ ]:  Custom value requested, setting up
[02:53:53.824][ ➜ ]:  Waiting for user input
[02:53:54.622][ ✔ ]:  User input received
[02:53:54.622][ ✔ ]:  Custom value was set to 8
[02:53:54.622][ ✔ ]:  Stage 8 sequence initiated
[02:53:55.490][ ✔ ]:  Using default value of 80G
[02:53:55.490][ ✔ ]:  Stage 9 sequence initiated
[02:53:56.480][ ✔ ]:  Will set disk up as an SSD
[02:53:56.480][ ✔ ]:  Stage 10 sequence initiated
[02:53:57.447][ ✔ ]:  Using default value of vmxnet3
[02:53:57.447][ ✔ ]:  Stage 11 sequence initiated
[02:53:58.385][ ✔ ]:  Using default value of 00:16:cb:00:21:09
[02:53:58.385][ ✔ ]:  Stage 12 sequence initiated
[02:54:00.111][ ✦ ]:  Arming download mechanism
[02:54:00.111][ ✔ ]:  Downloader armed, will be triggered by AP flow
[02:54:00.111][ ✔ ]:  Stage 13 sequence initiated
[02:54:01.826][ ✔ ]:  Using default value of 1280x720
[02:54:01.826][ ✔ ]:  Stage 14 sequence initiated
[02:54:03.066][ ✔ ]:  Using default value of True
[02:54:03.066][ ✔ ]:  Interrogation complete, displaying summary and AP autoflow sliproad
[02:54:04.659][ ✦ ]:  Handoff started, user preferences saved
[02:54:04.659][ ✔ ]:  ───────────────── STARTING AUTOPILOT AUTOFLOW ─────────────────
[02:54:04.659][ ✦ ]:  Here we go!
[02:54:06.662][ ✔ ]:  Updating status UI
[02:54:09.662][ ✦ ]:  STARTING PREPARE PHASE
[02:54:09.668][ ✔ ]:  Updating status UI
[02:54:09.668][ ✦ ]:  Setting up environment
[02:54:09.669][ ✔ ]:  Copied baseConfig into live working file
[02:54:10.669][ ✦ ]:  Setting up OpenCore image
[02:54:10.670][ ⚠ ]:  Existing OpenCore image found
[02:54:10.670][ ✦ ]:  Backing up existing image to ./boot/17-02-2024_02-54-10
[02:54:10.672][ ✔ ]:  Existing image backed up to ./boot/17-02-2024_02-54-10
[02:54:12.672][ ✦ ]:  Selecting appropriate OpenCore image
[02:54:12.672][ ✔ ]:  Selected NEW OpenCore image
[02:54:12.672][ ✦ ]:  Copying OpenCore image in place
[02:54:12.683][ ✔ ]:  OpenCore image copied
[02:54:12.683][ ✦ ]:  Copying OVMF code into place
[02:54:12.688][ ✦ ]:  Copying OVMF vars for resolution 1280x720
[02:54:12.695][ ✔ ]:  OVMF files copied
[02:54:12.695][ ✦ ]:  Creating local OVMF variable store
[02:54:12.696][ ✦ ]:  Performing integrity check
[02:54:12.696][ ✔ ]:  Integrity check PASSED
[02:54:12.696][ ✔ ]:  Updated stage status, handing off to next stage
[02:54:12.696][ ✔ ]:  Updating status UI
[02:54:12.696][ ✦ ]:  STARTING INTEGRITY PHASE
[02:54:12.702][ ✔ ]:  Updating status UI
[02:54:16.702][ ✔ ]:  Integrity check PASSED
[02:54:16.702][ ✔ ]:  Updated stage status, handing off to next stage
[02:54:16.702][ ✔ ]:  Updating status UI
[02:54:16.702][ ✦ ]:  STARTING GENERATION PHASE
[02:54:16.708][ ✦ ]:  Working directory was captured as /home/dvdmuckle/Documents/ultimate-macOS-KVM
[02:54:16.708][ ✔ ]:  Updating status UI
[02:54:16.708][ ✦ ]:  Scanning for file conflict
[02:54:20.708][ ⚠ ]:  Existing file with name boot.sh detected, asking the user
[02:54:24.518][ ⚠ ]:  Overwriting boot.sh
[02:54:24.518][ ✔ ]:  Updating status UI
[02:54:24.518][ ✦ ]:  Beginning variable injection
[02:54:24.518][ ✦ ]:  Checking disk type
[02:54:24.518][ ⚠ ]:  Disk type is SSD, modifying rotation rate
[02:54:24.518][ ✔ ]:  Rotation rate updated
[02:54:24.518][ ✔ ]:  Variable injection complete
[02:54:24.518][ ✦ ]:  Stamping with ULTMOS version
[02:54:24.518][ ✔ ]:  Marked working script as using ULTMOS v0.11.0
[02:54:24.518][ ✦ ]:  Stamping with feature level
[02:54:24.518][ ✔ ]:  Marked working script as feature level 7
[02:54:24.518][ ✦ ]:  Checking if Discord rich presence is available
[02:54:25.469][ ✔ ]:  Discord rich presence is available, will enable in script
[02:54:25.469][ ✦ ]:  Adding OS ID marker
[02:54:25.469][ ✦ ]:  Setting up BaseSystem image attachment
[02:54:25.469][ ✦ ]:  Writing changes
[02:54:25.469][ ✔ ]:  Changes written to file
[02:54:25.469][ ✦ ]:  Performing integrity check
[02:54:25.469][ ✔ ]:  Integrity check PASSED
[02:54:25.469][ ✔ ]:  Updated stage status, handing off to next stage
[02:54:25.469][ ✔ ]:  Updating status UI
[02:54:26.470][ ✦ ]:  Checking XML creation preferences
[02:54:26.470][ ✔ ]:  XML creation requested, WILL be generating XML
[02:54:26.475][ ✔ ]:  Updating status UI
[02:54:26.475][ ✦ ]:  Pointing XML conversion tool to live script
[02:54:26.476][ ✦ ]:  Preparing live working XML
[02:54:26.477][ ✔ ]:  Base XML ready for live working
[02:54:26.477][ ✦ ]:  Parsing XML
[02:54:26.477][ ⚠ ]:  XML conversion tool APC integration doesn't support blob caching yet
[02:54:26.477][ ✦ ]:  Converting to XML format
[02:54:26.477][ ⚠ ]:  Virtual disk type is SSD, modifying rotation rate
[02:54:26.477][ ✔ ]:  Rotation rate updated
[02:54:26.477][ ✔ ]:  Converted to XML structure
[02:54:26.478][ ✦ ]:  Writing changes
[02:54:26.478][ ✔ ]:  Changes written to file
[02:54:28.478][ ✔ ]:  Updated stage status, handing off to next stage
[02:54:28.478][ ✔ ]:  Updating status UI
[02:54:31.478][ ✔ ]:  User requested a new macOS recovery image, arming downloader
[02:54:31.478][ ✦ ]:  STARTING REMOTE RECOVERY PHASE
[02:54:31.484][ ✔ ]:  Updating status UI
[02:54:33.484][ ✦ ]:  Setting target OS to 12
[02:54:33.484][ ✔ ]:  OS ID is valid, sending to dlosx script
[02:54:56.665][ ✦ ]:  Checking BaseSystem with a size of 3220185088
[02:54:56.665][ ✔ ]:  Integrity check PASSED
[02:54:56.665][ ✔ ]:  Updated stage status, handing off to next stage
[02:54:56.665][ ✔ ]:  Updating status UI
[02:54:59.665][ ✔ ]:  User requested a new HDD file, generation will go ahead
[02:54:59.665][ ✦ ]:  STARTING HARDDISK PHASE
[02:54:59.672][ ✔ ]:  Updating status UI
[02:55:01.672][ ✦ ]:  Scanning for file conflict
[02:55:01.674][ ⚠ ]:  Existing file with name HDD.qcow2 detected, asking the user
[02:55:01.674][ ➜ ]:  Waiting for user input
[02:55:33.953][ ✔ ]:  User input received
[02:55:33.959][ ⚠ ]:  Deleting HDD.qcow2
[02:55:33.960][ ✦ ]:  STARTING HARDDISK PHASE
[02:55:33.962][ ✔ ]:  Updating status UI
[02:55:35.963][ ✦ ]:  Scanning for file conflict
[02:55:35.963][ ✦ ]:  Generating hard disk image file
[02:55:38.971][ ✔ ]:  Hard disk image file generation verified
[02:55:38.971][ ✔ ]:  Updated stage status, handing off to next stage
[02:55:38.971][ ✔ ]:  Updating status UI
[02:55:40.971][ ✔ ]:  Hard disk image file generation verified
[02:55:40.971][ ✔ ]:  Updated stage status, handing off to next stage
[02:55:40.971][ ✔ ]:  Updating status UI
[02:55:42.972][ ✦ ]:  STARTING APPLY PHASE
[02:55:42.977][ ✔ ]:  Updating status UI
[02:55:44.977][ ✔ ]:  Integrity check PASSED
[02:55:44.978][ ✦ ]:  Dumping contents of baseConfig to memory
[02:55:44.978][ ✦ ]:  Stripping warning headers
[02:55:44.978][ ✦ ]:  Generating epoch timestamp
[02:55:44.978][ ✔ ]:  Epoch timestamped as 1708156544
[02:55:44.978][ ✦ ]:  Writing to file
[02:55:44.978][ ✔ ]:  Header verification complete
[02:55:44.978][ ✦ ]:  Moving working file into place
[02:55:44.981][ ✔ ]:  Moved working file into boot.sh successfully
[02:55:44.981][ ✔ ]:  Updated stage status, handing off to next stage
[02:55:44.981][ ✔ ]:  Updating status UI
[02:55:46.981][ ✦ ]:  STARTING PERMISSIONS PHASE
[02:55:46.988][ ✔ ]:  Updating status UI
[02:55:48.989][ ✦ ]:  Setting execute permissions
[02:55:48.990][ ✦ ]:  Setting readwrite permissions
[02:55:48.991][ ✔ ]:  Permissons set for new user files
[02:55:48.991][ ✔ ]:  Updated stage status, handing off to next stage
[02:55:48.991][ ✔ ]:  Updating status UI
[02:55:50.997][ ✔ ]:  Updating status UI
[02:55:50.997][ ✦ ]:  STARTING CLEANUP PHASE
[02:55:51.997][ ✦ ]:  Copying current session blobs into user backdir
[02:55:51.999][ ✦ ]:  Marking blobs as stale
[02:55:51.999][ ✦ ]:  Moving blobs into stale folder
[02:55:52.000][ ✔ ]:  Blob cleanup complete
[02:55:52.000][ ✔ ]:  Updated stage status, handing off to next stage
[02:55:52.000][ ✔ ]:  Updating status UI
[02:55:53.001][ ✦ ]:  Stopping timer
[02:55:55.003][ ✦ ]:  Updating variable definition
[02:55:55.006][ ✔ ]:  Timer was stopped with a recorded time of 108 seconds in live mode
[02:55:55.006][ ✔ ]:  AutoPilot stages complete, displaying user summary screen
[02:55:55.006][ ✔ ]:  ───────────────── AUTOPILOT COMPLETE! SESSION TIME WAS 108 SEC ─────────────────
[02:55:55.006][ ✦ ]:  XML generation was part of AP flow, offering import experience
[02:55:55.006][ ➜ ]:  Waiting for user input
[02:55:56.614][ ✔ ]:  User input received
[02:55:56.615][ ✦ ]:  Handing off to XML importer experience flow
[02:55:56.615][ ☠ ]:  bye
[02:55:56.615][ ☠ ]:  ───────────────── END OF LOGFILE ─────────────────

Additional Information

No response

Coopydood commented 9 months ago

Hi, many thanks for such a detailed report. I'll look into this ASAP.

Has everything else worked okay for you?

dvdmuckle commented 9 months ago

Having a bit of an issue on installing MacOS itself to the VM, but I think that's from trying to use Sonoma (14). Gonna use Monterey (12) instead.

dvdmuckle commented 9 months ago

I fixed the error by both setting the initial deffinition of detectChoice to detectChoice = "1", as well as changing one of the casts from an int to a str. It looks like every other deffinition of detectChoice uses a cast to str. However, one other thing I noticed is it looks like the boot.xml is attempted to be imported twice? The first time it works fine, the second it says something about converting the boot.sh to a boot.xml. I think the second import is what I want, as the boot.sh has some arguments in it needed to get the VM booted properly, as when running the VM after the first import, it boot loops back to the bootloader.

Coopydood commented 9 months ago

Successfully reproduced. Fix in progress.

Coopydood commented 9 months ago

Pushed a prelim fix to the dev branch.

Please have a look and see if that fixes the issue. It's a relatively big change I've made so it should fix other issues too. Thanks.

dvdmuckle commented 9 months ago

Looks like that fixed it! Managed to get MacOS 12 all setup and working fine. Thanks for the quick fix!

Coopydood commented 9 months ago

Awesome! Glad to hear it :)

I ended up revamping the AutoPilot XML conversion mechanism so it hands the process off to the dedicated XML converter script instead of doing it as part of the AutoPilot script. This should yield other benefits such as not having to update 2 versions of the same script!

if you ever need help with Sonoma, always feel free to ask here or on discord.

thanks again for reporting and using the project 🙂

Coopydood commented 9 months ago

Also meant to say- both yourself and this issue will be credited in the changelog on release :)