Update CREATE-ISO-macOS.command feat(script): add create-iso-macOS.sh to generate macOS installer ISO for Proxmox VE

- Added an interactive Bash script to generate a macOS install ISO from an .app installer
- Designed for use in Proxmox VE virtual machines
- Performs validation for root privileges, target directory, and installer path
- Automates DMG creation, mounting, installation media injection, and ISO conversion
- Includes colored output for improved UX during interactive execution
- Final output is a .iso file ready to be attached as a CD-ROM in Proxmox (IDE or VirtIO)
This commit is contained in:
Oritorius(Denis Rykov) 2025-07-10 00:02:43 +05:00 committed by GitHub
parent 99b66bddd0
commit 54bae608cf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 69 additions and 22 deletions

View File

@ -1,34 +1,81 @@
#!/bin/bash
#
# Script: create-iso-macOS
# Goal: create "ISO" file for use in the Proxmox VE Environment
# Script: create-iso-macOS.sh
# Goal: Create macOS ISO-like image for use in Proxmox VE
#
# Author: Gabriel Luchina
# https://luchina.com.br
# 20211116T2245
# https://luchina.com.br
# Updated: 2025-04-06
#
# ANSI Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color
clear
echo -e "\nAutomate script for create \"ISO\" file of macOS Install in Proxmox VE Environament"
echo -e "BY: https://luchina.com.br"
echo -e "SUPPORT: https://osx-proxmox.com"
echo -e "${GREEN}Automate script for creating macOS Install ISO for Proxmox VE${NC}"
echo -e "BY: ${YELLOW}https://luchina.com.br ${NC}"
echo -e "SUPPORT: ${YELLOW}https://osx-proxmox.com ${NC}"
echo -n -e "\nPath to temporary files (work dir): "
read TEMPDIR
# Check for root
if [ "$EUID" -ne 0 ]; then
echo -e "${YELLOW}[!] Рекомендуется запускать от root для корректной работы.${NC}"
echo -e "Продолжить как обычный пользователь? (y/n)"
read -r answer
if [[ ! "$answer" =~ ^[Yy]$ ]]; then
echo "Выход."
exit 1
fi
fi
echo -n -e "Path to macOS Installation (.app) file: "
read APPOSX
# Ask for temp directory
read -p $'\n'"Введите путь к рабочей директории (work dir): " TEMPDIR
if [ ! -d "$TEMPDIR" ]; then
echo -e "${RED}[!] Указанная директория не существует.${NC}"
exit 1
fi
echo " "
# Ask for macOS app path
read -p "Введите путь к macOS Installer (.app): " APPOSX
if [ ! -d "$APPOSX" ]; then
echo -e "${RED}[!] Указанный .app файл не найден.${NC}"
exit 1
fi
## Core
cd ${TEMPDIR} > /dev/null 2> /dev/null
rm -rf macOS-install* > /dev/null 2> /dev/null
hdiutil create -o macOS-install -size 16g -layout GPTSPUD -fs HFS+J > /dev/null 2> /dev/null
hdiutil attach -noverify -mountpoint /Volumes/install_build macOS-install.dmg > /dev/null 2> /dev/null
sudo "${APPOSX}/Contents/Resources/createinstallmedia" --volume /Volumes/install_build --nointeraction
hdiutil detach -force "/Volumes/Install macOS"* > /dev/null 2> /dev/null && sleep 3s > /dev/null 2> /dev/null
hdiutil detach -force "/Volumes/Shared Support"* > /dev/null 2> /dev/null
mv macOS-install.dmg macOS-install.iso > /dev/null 2> /dev/null
cd "$TEMPDIR" || { echo -e "${RED}[!] Не могу перейти в указанную директорию.${NC}"; exit 1; }
echo " "
# Clean up previous files
echo -e "\n${YELLOW}[*] Очистка старых файлов...${NC}"
rm -rf macOS-install.dmg* > /dev/null 2>&1
# Create DMG
echo -e "${YELLOW}[*] Создание временного дискового образа...${NC}"
hdiutil create -o macOS-install.dmg -size 16g -layout GPTSPUD -fs HFS+J > /dev/null 2>&1
# Mount DMG
echo -e "${YELLOW}[*] Подключение образа...${NC}"
hdiutil verify macOS-install.dmg > /dev/null 2>&1
hdiutil mount macOS-install.dmg > /dev/null 2>&1
MOUNT_POINT="/Volumes/install_build"
# Run createinstallmedia
echo -e "${YELLOW}[*] Заливка macOS установщика в образ... Это может занять несколько минут.${NC}"
sudo "$APPOSX/Contents/Resources/createinstallmedia" --volume "$MOUNT_POINT" --nointeraction
# Unmount volumes
echo -e "${YELLOW}[*] Отключение томов...${NC}"
diskutil list | grep "Install macOS" | awk '{print $1}' | xargs -I {} hdiutil detach {} > /dev/null 2>&1
sleep 3
# Convert to ISO-style file
echo -e "${YELLOW}[*] Конвертация в формат ISO...${NC}"
mv macOS-install.dmg macOS-install.iso
# Final message
echo -e "\n${GREEN}[✓] Готово! Образ создан:${NC}"
echo "Файл: macOS-install.iso"
echo "Теперь вы можете загрузить его в Proxmox как CD-ROM (VirtIO или IDE)."