- Added isofs module to boot configurations for both UEFI (GRUB) and Legacy BIOS (Syslinux) to enable ISO9660 filesystem support. - Updated boot parameters to improve USB delay and debugging capabilities for better hardware compatibility.
85 lines
2.4 KiB
Bash
Executable File
85 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# Simple script to create bootable USB from extracted ISO files
|
|
|
|
set -e
|
|
|
|
USB_DEVICE="${1:-/dev/disk4}"
|
|
ISO_FILE="${2:-/Users/dorian/Projects/archy/image-recipe/results/archipelago-3.19-hp-prodesk-uefi-x86_64.iso}"
|
|
|
|
echo "╔════════════════════════════════════════════════════════╗"
|
|
echo "║ Create Bootable USB from ISO ║"
|
|
echo "╚════════════════════════════════════════════════════════╝"
|
|
echo ""
|
|
echo "📀 ISO: $(basename $ISO_FILE)"
|
|
echo "💾 USB: $USB_DEVICE"
|
|
echo ""
|
|
|
|
# Check if USB is formatted and mounted
|
|
USB_MOUNT=$(diskutil info "${USB_DEVICE}s1" 2>/dev/null | grep "Mount Point" | awk '{print $3}' || echo "")
|
|
|
|
if [ -z "$USB_MOUNT" ]; then
|
|
echo "❌ USB not mounted. Please format it first:"
|
|
echo " sudo diskutil eraseDisk FAT32 ALPINE MBR $USB_DEVICE"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ USB mounted at: $USB_MOUNT"
|
|
echo ""
|
|
|
|
# Extract ISO to temp directory
|
|
echo "📦 Extracting ISO..."
|
|
TEMP_DIR="/tmp/alpine-extract-$$"
|
|
mkdir -p "$TEMP_DIR"
|
|
7z x "$ISO_FILE" -o"$TEMP_DIR" -y >/dev/null
|
|
|
|
# Copy to USB
|
|
echo "📋 Copying to USB..."
|
|
rsync -av --progress "$TEMP_DIR/" "$USB_MOUNT/"
|
|
|
|
# Fix bootloader names for USB
|
|
echo "🔧 Configuring bootloader..."
|
|
cd "$USB_MOUNT/boot/syslinux"
|
|
if [ -f isolinux.bin ]; then
|
|
mv isolinux.bin syslinux.bin
|
|
echo " ✓ Renamed isolinux.bin → syslinux.bin"
|
|
fi
|
|
if [ -f isolinux.cfg ]; then
|
|
mv isolinux.cfg syslinux.cfg
|
|
echo " ✓ Renamed isolinux.cfg → syslinux.cfg"
|
|
fi
|
|
|
|
# Update config file
|
|
if [ -f syslinux.cfg ]; then
|
|
sed -i '' 's/isolinux/syslinux/g' syslinux.cfg
|
|
echo " ✓ Updated syslinux.cfg"
|
|
fi
|
|
|
|
# Sync
|
|
echo "🔄 Syncing..."
|
|
cd /
|
|
sync
|
|
sleep 2
|
|
|
|
# Unmount
|
|
echo "📤 Unmounting USB..."
|
|
diskutil unmount "$USB_MOUNT"
|
|
|
|
# Install MBR
|
|
if [ -f "$TEMP_DIR/boot/syslinux/mbr.bin" ]; then
|
|
echo "🚀 Installing MBR..."
|
|
sudo dd if="$TEMP_DIR/boot/syslinux/mbr.bin" of="$USB_DEVICE" bs=440 count=1 conv=notrunc 2>/dev/null
|
|
echo " ✓ MBR installed"
|
|
fi
|
|
|
|
# Clean up
|
|
rm -rf "$TEMP_DIR"
|
|
|
|
echo ""
|
|
echo "✅ Bootable USB created successfully!"
|
|
echo ""
|
|
echo "📋 Next steps:"
|
|
echo " 1. Safely eject: diskutil eject $USB_DEVICE"
|
|
echo " 2. Boot HP ProDesk from USB"
|
|
echo " 3. BIOS: Legacy mode, Secure Boot OFF"
|
|
echo ""
|