diff --git a/wget.install.script b/wget.install.script deleted file mode 100644 index c918793..0000000 --- a/wget.install.script +++ /dev/null @@ -1,224 +0,0 @@ -#!/usr/bin/bash - -# macOS KVM Installation Script with wget/curl support -# -# Quick Install (one-liner): -# curl -fsSL https://raw.githubusercontent.com/yourusername/OSX-KVM/master/install-macos-kvm.sh | bash -# -# Usage: ./install-macos-kvm.sh [OPTIONS] -# Options: -# --use-curl Use curl instead of wget for downloads -# --help Show this help message - -set -e # Exit on any error - -# Default settings -USE_CURL=false -INSTALL_DIR="$HOME/OSX-KVM" - -# Function to display help -show_help() { - echo "macOS KVM Installation Script" - echo "" - echo "Usage: $0 [OPTIONS]" - echo "" - echo "Options:" - echo " --use-curl Use curl instead of wget for downloads" - echo " --help Show this help message" - echo "" - echo "This script will:" - echo " 1. Clone the OSX-KVM repository" - echo " 2. Download macOS recovery image" - echo " 3. Convert BaseSystem.dmg to raw format" - echo " 4. Create macOS disk image (100GB)" - echo " 5. Set proper permissions for libvirt" - echo " 6. Launch macOS VM" -} - -# Function to check if command exists -command_exists() { - command -v "$1" >/dev/null 2>&1 -} - -# Function to download with fallback -download_file() { - local url="$1" - local output="$2" - - echo "Downloading: $url" - - if [ "$USE_CURL" = true ] && command_exists curl; then - echo "Using curl for download..." - curl -L -o "$output" "$url" - elif command_exists wget; then - echo "Using wget for download..." - wget -O "$output" "$url" - elif command_exists curl; then - echo "wget not found, falling back to curl..." - curl -L -o "$output" "$url" - else - echo "Error: Neither wget nor curl found. Please install one of them." - exit 1 - fi -} - -# Parse command line arguments -while [[ $# -gt 0 ]]; do - case $1 in - --use-curl) - USE_CURL=true - shift - ;; - --help) - show_help - exit 0 - ;; - *) - echo "Unknown option: $1" - echo "Use --help for usage information" - exit 1 - ;; - esac -done - -# Check for required commands -echo "Checking system requirements..." - -if ! command_exists git; then - echo "Error: git is required but not installed." - exit 1 -fi - -if ! command_exists qemu-img; then - echo "Error: qemu-img is required but not installed." - echo "Please install qemu-utils or qemu-system package" - exit 1 -fi - -# Check for download capability -if ! command_exists wget && ! command_exists curl; then - echo "Error: Neither wget nor curl found." - echo "Please install wget or curl to continue." - exit 1 -fi - -echo "✓ System requirements check passed" - -# Create installation directory if it doesn't exist -if [ -d "$INSTALL_DIR" ]; then - echo "Warning: $INSTALL_DIR already exists. Backing up to ${INSTALL_DIR}.backup" - mv "$INSTALL_DIR" "${INSTALL_DIR}.backup.$(date +%Y%m%d_%H%M%S)" -fi - -# Clone the repository -echo "Cloning OSX-KVM repository..." -git clone https://github.com/kholia/OSX-KVM.git "$INSTALL_DIR" -cd "$INSTALL_DIR" - -sudo apt-get install qemu-system uml-utilities virt-manager git \ - wget libguestfs-tools p7zip-full make dmg2img tesseract-ocr \ - tesseract-ocr-eng genisoimage vim net-tools screen -y - -sudo modprobe kvm; echo 1 | sudo tee /sys/module/kvm/parameters/ignore_msrs -sudo cp kvm_amd.conf /etc/modprobe.d/kvm.conf # for amd boxes only - -sudo usermod -aG kvm $(whoami) -sudo usermod -aG libvirt $(whoami) -sudo usermod -aG input $(whoami) - -# Download macOS recovery image -echo "Downloading macOS recovery image..." -if [ -f "fetch-macOS-v2.py" ]; then - python3 fetch-macOS-v2.py -else - echo "Warning: fetch-macOS-v2.py not found, attempting manual download..." - # Fallback download URLs for macOS recovery images - RECOVERY_URL="https://updates.cdn-apple.com/2019FallFCS/fullrestores/061-44998/B5A3E286-1C4A-11EA-99D4-864D6786AB92/BaseSystem.dmg" - download_file "$RECOVERY_URL" "BaseSystem.dmg" -fi - -# Convert BaseSystem.dmg to raw format -echo "Converting BaseSystem.dmg to raw format..." -if [ -f "BaseSystem.dmg" ]; then - qemu-img convert BaseSystem.dmg -O raw BaseSystem.img - echo "✓ BaseSystem.img created successfully" -else - echo "Error: BaseSystem.dmg not found" - exit 1 -fi - -# Create macOS disk image (100GB) -echo "Creating macOS disk image (100GB)..." -qemu-img create -f qcow2 macOS.qcow2 256G -echo "✓ macOS.qcow2 created successfully" - -# Create symlink for script compatibility -echo "Creating compatibility symlink..." -ln -sf macOS.qcow2 mac_hdd_ng.img - -# Fix permissions for libvirt -echo "Setting up permissions for libvirt..." -sudo chown libvirt-qemu:libvirt-qemu macOS.qcow2 2>/dev/null || { - echo "Warning: Could not change ownership to libvirt-qemu. You may need to run this manually:" - echo " sudo chown libvirt-qemu:libvirt-qemu $INSTALL_DIR/macOS.qcow2" -} - -sudo chmod 664 macOS.qcow2 2>/dev/null || { - echo "Warning: Could not change permissions. You may need to run this manually:" - echo " sudo chmod 664 $INSTALL_DIR/macOS.qcow2" -} - -# Fix directory permissions -sudo chmod 755 "$INSTALL_DIR" 2>/dev/null || { - echo "Warning: Could not change directory permissions. You may need to run this manually:" - echo " sudo chmod 755 $INSTALL_DIR" -} - -# Make scripts executable -echo "Making scripts executable..." -chmod +x *.sh - -# Check if OpenCore exists and build if necessary -if [ ! -f "OpenCore/OpenCore.qcow2" ]; then - echo "OpenCore not found, attempting to build..." - cd OpenCore - if [ -f "Makefile" ]; then - make - else - echo "Warning: Could not build OpenCore. You may need to build it manually." - fi - cd .. -fi - -echo "" -echo "🎉 Installation completed successfully!" -echo "" -echo "Next steps:" -echo "1. To start the macOS VM using the script:" -echo " cd $INSTALL_DIR && sudo ./OpenCore-Boot.sh" -echo "" -echo "2. To use with virt-manager:" -echo " - Import the provided libvirt XML configuration" -echo " - Start the VM through virt-manager interface" -echo "" -echo "3. During installation:" -echo " - Select 'macOS Base System' from OpenCore" -echo " - Use Disk Utility to format the 256GB drive" -echo " - Install macOS to the formatted drive" -echo "" -echo "Files created:" -echo " - BaseSystem.img (macOS installer)" -echo " - macOS.qcow2 (100GB virtual disk)" -echo " - mac_hdd_ng.img -> macOS.qcow2 (compatibility symlink)" -echo "" - -# Ask if user wants to start the VM now -read -p "Would you like to start the macOS VM now? (y/n): " -n 1 -r -echo -if [[ $REPLY =~ ^[Yy]$ ]]; then - echo "Starting macOS VM..." - sudo ./OpenCore-Boot.sh -else - echo "You can start the VM later by running:" - echo " cd $INSTALL_DIR && sudo ./OpenCore-Boot.sh" -fi diff --git a/wget.ubuntu.install.script b/wget.ubuntu.install.script new file mode 100644 index 0000000..cdac162 --- /dev/null +++ b/wget.ubuntu.install.script @@ -0,0 +1,178 @@ +#!/usr/bin/bash +# macOS KVM Installation Script for a brand-new Linux system +# Quick Install: curl -fsSL | bash + +set -e # Exit on any error + +# Default settings +USE_CURL=false +INSTALL_DIR="$HOME/OSX-KVM" + +# Function to display help +show_help() { + cat </dev/null 2>&1 +} + +# Function to install packages via apt +install_package() { + local pkg="$1" + if ! dpkg -s "$pkg" >/dev/null 2>&1; then + echo "Installing missing package: $pkg" + sudo apt-get install -y "$pkg" + fi +} + +# Function to download files +download_file() { + local url="$1" + local output="$2" + echo "Downloading: $url" + if [ "$USE_CURL" = true ] && command_exists curl; then + curl -L -o "$output" "$url" + elif command_exists wget; then + wget -O "$output" "$url" + elif command_exists curl; then + curl -L -o "$output" "$url" + else + echo "Error: Neither wget nor curl found. Please install one of them." + exit 1 + fi +} + +# Parse command line arguments +while [[ $# -gt 0 ]]; do + case $1 in + --use-curl) + USE_CURL=true + shift + ;; + --help) + show_help + exit 0 + ;; + *) + echo "Unknown option: $1" + show_help + exit 1 + ;; + esac +done + +echo "Updating package list..." +sudo apt-get update -y + +# Install required packages +REQUIRED_PKGS=(git wget curl python3 python3-pip qemu-system qemu-utils \ +uml-utilities virt-manager libguestfs-tools p7zip-full make dmg2img \ +tesseract-ocr tesseract-ocr-eng genisoimage vim net-tools screen) + +for pkg in "${REQUIRED_PKGS[@]}"; do + install_package "$pkg" +done + +echo "✓ All required packages installed" + +# Check system commands +for cmd in git qemu-img wget curl python3 make dmg2img; do + if ! command_exists "$cmd"; then + echo "Error: $cmd is required but not installed." + exit 1 + fi +done + +echo "✓ System commands verified" + +# Create installation directory +if [ -d "$INSTALL_DIR" ]; then + echo "Warning: $INSTALL_DIR exists. Backing up to ${INSTALL_DIR}.backup" + mv "$INSTALL_DIR" "${INSTALL_DIR}.backup.$(date +%Y%m%d_%H%M%S)" +fi + +# Clone repository +echo "Cloning OSX-KVM repository..." +git clone https://github.com/kholia/OSX-KVM.git "$INSTALL_DIR" +cd "$INSTALL_DIR" + +# Setup KVM +sudo modprobe kvm +echo 1 | sudo tee /sys/module/kvm/parameters/ignore_msrs >/dev/null || true +[ -f kvm_amd.conf ] && sudo cp kvm_amd.conf /etc/modprobe.d/kvm.conf + +sudo usermod -aG kvm "$(whoami)" +sudo usermod -aG libvirt "$(whoami)" +sudo usermod -aG input "$(whoami)" + +# Download macOS recovery image +echo "Downloading macOS recovery image..." +if [ -f "fetch-macOS-v2.py" ]; then + python3 fetch-macOS-v2.py +else + RECOVERY_URL="https://updates.cdn-apple.com/2019FallFCS/fullrestores/061-44998/B5A3E286-1C4A-11EA-99D4-864D6786AB92/BaseSystem.dmg" + download_file "$RECOVERY_URL" "BaseSystem.dmg" +fi + +# Convert BaseSystem.dmg to raw format +echo "Converting BaseSystem.dmg to raw format..." +if [ -f "BaseSystem.dmg" ]; then + qemu-img convert BaseSystem.dmg -O raw BaseSystem.img + echo "✓ BaseSystem.img created successfully" +else + echo "Error: BaseSystem.dmg not found" + exit 1 +fi + +# Create macOS disk image +echo "Creating macOS disk image (256GB)..." +qemu-img create -f qcow2 macOS.qcow2 256G +ln -sf macOS.qcow2 mac_hdd_ng.img +echo "✓ Disk image created" + +# Set permissions for libvirt +sudo chown libvirt-qemu:libvirt-qemu macOS.qcow2 2>/dev/null || true +sudo chmod 664 macOS.qcow2 2>/dev/null || true +sudo chmod 755 "$INSTALL_DIR" 2>/dev/null || true + +# Make scripts executable +chmod +x *.sh + +# Build OpenCore if missing +if [ ! -f "OpenCore/OpenCore.qcow2" ]; then + echo "OpenCore not found, attempting to build..." + cd OpenCore || exit + [ -f "Makefile" ] && make || echo "Warning: Could not build OpenCore" + cd .. +fi + +echo "" +echo "🎉 Installation completed successfully!" +echo "Next steps:" +echo "1. Start macOS VM: cd $INSTALL_DIR && sudo ./OpenCore-Boot.sh" +echo "2. Use virt-manager: import XML, start VM" +echo "" + +# Prompt to start VM +read -p "Start macOS VM now? (y/n): " -n 1 -r +echo +[[ $REPLY =~ ^[Yy]$ ]] && sudo ./OpenCore-Boot.sh || echo "VM can be started later"