Optimize install of OSX-PROXMOX

This commit is contained in:
Gabriel Luchina
2026-09-02 18:38:39 -03:00
parent b0b88d8986
commit 978dbee98d
2 changed files with 40 additions and 5 deletions
+27 -3
View File
@@ -65,10 +65,34 @@ log_message "Installing git..."
apt-get install -y git >> "$LOG_FILE" 2>&1
check_status "Failed to install git"
# Clone repository
log_message "Cloning OSX-PROXMOX repository..."
git clone --recurse-submodules https://github.com/luchina-gabriel/OSX-PROXMOX.git /root/OSX-PROXMOX >> "$LOG_FILE" 2>&1
# Download repository (latest version only, without full history)
REPO_URL="https://github.com/luchina-gabriel/OSX-PROXMOX.git"
REPO_DIR="/root/OSX-PROXMOX"
# Shallow + partial + sparse checkout: fetches only the files the setup needs.
# The OpenCore ISO is left out on purpose - the setup downloads it into the ISO
# storage on its own, so checking it out here would just duplicate ~96 MB.
clone_latest_only() {
git clone --depth 1 --filter=blob:none --sparse "$REPO_URL" "$REPO_DIR" &&
git -C "$REPO_DIR" sparse-checkout set tools
}
log_message "Downloading OSX-PROXMOX repository (latest version only)..."
if ! clone_latest_only >> "$LOG_FILE" 2>&1; then
log_message "Partial clone unavailable. Falling back to shallow clone..."
rm -rf "$REPO_DIR"
git clone --depth 1 "$REPO_URL" "$REPO_DIR" >> "$LOG_FILE" 2>&1
check_status "Failed to clone repository"
fi
# Download submodules (GenSMBIOS) at their pinned revision only
log_message "Downloading submodules..."
if ! git -C "$REPO_DIR" submodule update --init --depth 1 >> "$LOG_FILE" 2>&1; then
log_message "Shallow submodule fetch failed. Retrying with full history..."
git -C "$REPO_DIR" submodule deinit -f --all >> "$LOG_FILE" 2>&1 || true
git -C "$REPO_DIR" submodule update --init --force >> "$LOG_FILE" 2>&1
check_status "Failed to download submodules"
fi
# Ensure directory exists and setup is executable
if [ -f "/root/OSX-PROXMOX/setup" ]; then
+12 -1
View File
@@ -220,6 +220,16 @@ ensure_base64_xxd_dependency() {
fi
}
# Function to ensure wget is installed
ensure_wget_dependency() {
local logfile="${LOGDIR}/wget-dependency.log"
if ! command -v wget >/dev/null 2>&1; then
display_and_log "Installing wget..." "$logfile"
apt-get update >>"$logfile" 2>&1 || log_and_exit "Failed to update apt" "$logfile"
apt-get install -y wget >>"$logfile" 2>&1 || log_and_exit "Failed to install wget" "$logfile"
fi
}
# Function to set ISODIR based on selected ISO storage
set_isodir() {
local logfile="${LOGDIR}/iso-storage-detection.log"
@@ -328,7 +338,7 @@ detect_cpu_platform() {
# Function to setup prerequisites
setup_prerequisites() {
local logfile="${LOGDIR}/prerequisites-setup.log"
cp "${SCRIPT_DIR}/EFI/"*.iso "$ISODIR" || log_and_exit "Failed to copy EFI files" "$logfile"
# The OpenCore ISO is already provisioned in ISODIR by update_opencore_iso at startup
printf "alias osx-setup='%s/setup'\n" "$SCRIPT_DIR" >> /root/.bashrc
printf "LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8\n" > /etc/environment
printf "set mouse-=a\n" > ~/.vimrc
@@ -862,6 +872,7 @@ update_opencore_iso() {
iso_path="${ISODIR}/${OPENCORE_ISO}"
oc_json_path="${ISODIR}/.smbios.json"
ensure_wget_dependency
rm -f "$iso_path" >>"$logfile" 2>&1
if ! wget -q -O "$iso_path" "$iso_url" >>"$logfile" 2>&1; then
log_and_exit "Failed to download OpenCore ISO" "$logfile"