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:
parent
99b66bddd0
commit
54bae608cf
|
|
@ -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)."
|
||||
|
|
|
|||
Loading…
Reference in New Issue