mirror of
https://github.com/luchina-gabriel/OSX-PROXMOX.git
synced 2026-09-25 20:47:01 +00:00
Compare commits
3
Commits
be1eb827c6
...
52433409c3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
52433409c3 | ||
|
|
f4e5385402 | ||
|
|
b107e428c5 |
@@ -42,9 +42,8 @@ OCVERSION="1.0.7"
|
|||||||
DEFAULT_VM_PREFIX="HACK-"
|
DEFAULT_VM_PREFIX="HACK-"
|
||||||
BASE_RAM_SIZE=4096
|
BASE_RAM_SIZE=4096
|
||||||
RAM_PER_CORE=512
|
RAM_PER_CORE=512
|
||||||
BASE_DISK_SIZE=64
|
BASE_DISK_SIZE=128
|
||||||
DISK_INCREMENT=8
|
MAX_CORES=32
|
||||||
MAX_CORES=16
|
|
||||||
DHCP_CONF_DIR="/etc/dhcp/dhcpd.d"
|
DHCP_CONF_DIR="/etc/dhcp/dhcpd.d"
|
||||||
NETWORK_INTERFACES_FILE="/etc/network/interfaces"
|
NETWORK_INTERFACES_FILE="/etc/network/interfaces"
|
||||||
DHCP_USER="dhcpd"
|
DHCP_USER="dhcpd"
|
||||||
@@ -407,29 +406,38 @@ create_vm() {
|
|||||||
fi
|
fi
|
||||||
if [[ "$OSX_PLATFORM" == "AMD" ]]; then
|
if [[ "$OSX_PLATFORM" == "AMD" ]]; then
|
||||||
if [[ "$version_name" =~ ^(Ventura|Sonoma|Sequoia|Tahoe)$ ]]; then
|
if [[ "$version_name" =~ ^(Ventura|Sonoma|Sequoia|Tahoe)$ ]]; then
|
||||||
cpu_args="-cpu Cascadelake-Server,vendor=GenuineIntel,+invtsc,-pcid,-hle,-rtm,-avx512f,-avx512dq,-avx512cd,-avx512bw,-avx512vl,-avx512vnni,-spec-ctrl,kvm=on,vmware-cpuid-freq=on"
|
cpu_args="-cpu Skylake-Client-v4,vendor=GenuineIntel,+invtsc,+hypervisor,-pcid,-hle,-rtm,-avx512f,-avx512dq,-avx512cd,-avx512bw,-avx512vl,-avx512vnni,-spec-ctrl,kvm=on,vmware-cpuid-freq=on"
|
||||||
else
|
else
|
||||||
cpu_args="-cpu Penryn,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc,+ssse3,+sse4.2,+popcnt,+avx,+avx2,+aes,+fma,+bmi1,+bmi2,+xsave,+xsaveopt,check"
|
cpu_args="-cpu Penryn,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc,+ssse3,+sse4.2,+popcnt,+avx,+avx2,+aes,+fma,+bmi1,+bmi2,+xsave,+xsaveopt,check"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
cpu_args="-cpu host,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc"
|
cpu_args="-cpu Skylake-Client-v4,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc,+vmx,vmware-cpuid-freq=on"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check QEMU version and append hotplug fix if 6.1 or newer
|
# Check QEMU version and append hotplug fix if 6.1 or newer
|
||||||
local qemu_version=$(qemu-system-x86_64 --version | awk '/version/ {print $4}' | cut -d'(' -f1)
|
local qemu_version=$(qemu-system-x86_64 --version | awk '/version/ {print $4}' | cut -d'(' -f1)
|
||||||
version_compare "$qemu_version" "6.1" && device_args="$device_args -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off"
|
version_compare "$qemu_version" "6.1" && device_args="$device_args -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off"
|
||||||
|
|
||||||
|
# CD-ROM bus: High Sierra (10.13) and Mojave (10.14) use sata0 as the system
|
||||||
|
# disk, so their CD-ROMs stay on IDE to avoid colliding with it.
|
||||||
|
local cdrom_boot cdrom_recovery
|
||||||
|
if [[ "$version_name" =~ ^(High\ Sierra|Mojave)$ ]]; then
|
||||||
|
cdrom_boot="ide0"; cdrom_recovery="ide2"
|
||||||
|
else
|
||||||
|
cdrom_boot="sata0"; cdrom_recovery="sata2"
|
||||||
|
fi
|
||||||
|
|
||||||
qm create "$vm_id" \
|
qm create "$vm_id" \
|
||||||
--agent 1 --args "$device_args $cpu_args" --autostart 0 \
|
--agent 1 --args "$device_args $cpu_args" --autostart 0 \
|
||||||
--balloon 0 --bios ovmf --boot "order=sata0;$disk_type" \
|
--balloon 0 --bios ovmf --boot "order=${cdrom_boot};$disk_type" \
|
||||||
--cores "$core_count" --description "Hackintosh VM - $version_name" \
|
--cores "$core_count" --description "Hackintosh VM - $version_name" \
|
||||||
--efidisk0 "${storage}:4" --machine q35 --memory "$ram_size" \
|
--efidisk0 "${storage}:4" --machine q35 --memory "$ram_size" \
|
||||||
--name "$vm_name" --net0 "vmxnet3,bridge=$bridge" --numa 0 \
|
--name "$vm_name" --net0 "vmxnet3,bridge=$bridge" --numa 0 \
|
||||||
--onboot 0 --ostype other --sockets 1 --start 0 --tablet 1 \
|
--onboot 0 --ostype other --sockets 1 --start 0 --tablet 1 \
|
||||||
--vga vmware --vmgenid 1 --scsihw virtio-scsi-pci \
|
--vga vmware --vmgenid 1 --scsihw virtio-scsi-pci \
|
||||||
--"$disk_type" "${storage}:${disk_size},cache=none,discard=on" \
|
--"$disk_type" "${storage}:${disk_size},cache=none,discard=on" \
|
||||||
--sata0 "${storage_iso}:iso/${iso_file},media=cdrom,cache=unsafe,size=96M" \
|
--"$cdrom_boot" "${storage_iso}:iso/${iso_file},media=cdrom,cache=unsafe,size=96M" \
|
||||||
--sata2 "${storage_iso}:iso/recovery-${version_name,,}.iso,media=cdrom,cache=unsafe,size=${iso_size}" >>"$logfile" 2>&1 || log_and_exit "Failed to create VM" "$logfile"
|
--"$cdrom_recovery" "${storage_iso}:iso/recovery-${version_name,,}.iso,media=cdrom,cache=unsafe,size=${iso_size}" >>"$logfile" 2>&1 || log_and_exit "Failed to create VM" "$logfile"
|
||||||
sed -i 's/media=cdrom/media=disk/' "/etc/pve/qemu-server/$vm_id.conf" >>"$logfile" 2>&1 || log_and_exit "Failed to update VM config" "$logfile"
|
sed -i 's/media=cdrom/media=disk/' "/etc/pve/qemu-server/$vm_id.conf" >>"$logfile" 2>&1 || log_and_exit "Failed to update VM config" "$logfile"
|
||||||
|
|
||||||
display_and_log "VM ($vm_name) created successfully" "$logfile"
|
display_and_log "VM ($vm_name) created successfully" "$logfile"
|
||||||
@@ -1229,7 +1237,7 @@ configure_network_bridge() {
|
|||||||
configure_macos_vm() {
|
configure_macos_vm() {
|
||||||
local macopt=$1
|
local macopt=$1
|
||||||
local nextid=$2
|
local nextid=$2
|
||||||
local version_name version board_id model_id iso_size disk_type opt=$3
|
local version_name version board_id model_id iso_size disk_type
|
||||||
IFS='|' read -r version_name version board_id model_id iso_size disk_type <<< "$macopt"
|
IFS='|' read -r version_name version board_id model_id iso_size disk_type <<< "$macopt"
|
||||||
local default_vm_name="${DEFAULT_VM_PREFIX}$(echo "$version_name" | tr -s ' ' | sed 's/^[ ]*//;s/[ ]*$//;s/[ ]/-/g' | tr '[:lower:]' '[:upper:]' | sed 's/-*$//')"
|
local default_vm_name="${DEFAULT_VM_PREFIX}$(echo "$version_name" | tr -s ' ' | sed 's/^[ ]*//;s/[ ]*$//;s/[ ]/-/g' | tr '[:lower:]' '[:upper:]' | sed 's/-*$//')"
|
||||||
validate_vm_name "$default_vm_name" || log_and_exit "Invalid default VM name: $default_vm_name" "${LOGDIR}/main-menu.log"
|
validate_vm_name "$default_vm_name" || log_and_exit "Invalid default VM name: $default_vm_name" "${LOGDIR}/main-menu.log"
|
||||||
@@ -1259,7 +1267,7 @@ configure_macos_vm() {
|
|||||||
done
|
done
|
||||||
|
|
||||||
# Disk Size
|
# Disk Size
|
||||||
default_disk_size=$((BASE_DISK_SIZE + (opt > 6 ? 2 : opt == 4 ? 1 : 0) * DISK_INCREMENT))
|
local default_disk_size=$BASE_DISK_SIZE
|
||||||
while true; do
|
while true; do
|
||||||
read -rp "Disk size (GB) [default: $default_disk_size]: " SIZEDISK
|
read -rp "Disk size (GB) [default: $default_disk_size]: " SIZEDISK
|
||||||
SIZEDISK=${SIZEDISK:-$default_disk_size}
|
SIZEDISK=${SIZEDISK:-$default_disk_size}
|
||||||
@@ -1437,7 +1445,7 @@ main_menu() {
|
|||||||
[[ -z "$OPT" || "$OPT" -eq 0 ]] && exit
|
[[ -z "$OPT" || "$OPT" -eq 0 ]] && exit
|
||||||
|
|
||||||
if [[ ${MACOS_CONFIG[$OPT]} ]]; then
|
if [[ ${MACOS_CONFIG[$OPT]} ]]; then
|
||||||
configure_macos_vm "${MACOS_CONFIG[$OPT]}" "$NEXTID" "$OPT"
|
configure_macos_vm "${MACOS_CONFIG[$OPT]}" "$NEXTID"
|
||||||
else
|
else
|
||||||
case $OPT in
|
case $OPT in
|
||||||
200) add_no_subscription_repo ;;
|
200) add_no_subscription_repo ;;
|
||||||
@@ -1461,7 +1469,6 @@ set_isodir
|
|||||||
if [ ! -f "${ISODIR}/${OPENCORE_ISO}" ]; then
|
if [ ! -f "${ISODIR}/${OPENCORE_ISO}" ]; then
|
||||||
update_opencore_iso "0"
|
update_opencore_iso "0"
|
||||||
fi
|
fi
|
||||||
sleep 2
|
|
||||||
OSX_PLATFORM=$(detect_cpu_platform)
|
OSX_PLATFORM=$(detect_cpu_platform)
|
||||||
[[ ! -e /etc/pve/qemu-server/.osx-proxmox ]] && setup_prerequisites
|
[[ ! -e /etc/pve/qemu-server/.osx-proxmox ]] && setup_prerequisites
|
||||||
main_menu
|
main_menu
|
||||||
|
|||||||
Reference in New Issue
Block a user