mirror of
https://github.com/sickcodes/Docker-OSX.git
synced 2025-06-29 21:12:47 +02:00
This monolithic commit represents a comprehensive overhaul of the application, transitioning from a Docker-OSX based system image creator to a sophisticated macOS USB Installer creation tool using `corpnewt/gibMacOS.py`. It also incorporates significant research and implementation for hardware compatibility, especially for NVIDIA GPUs on newer macOS via OpenCore Legacy Patcher (OCLP) preparation, and substantial UI/UX enhancements. **Core Architectural Changes:** 1. **Installer-Based Workflow with `gibMacOS`:** - `main_app.py`: Completely refactored. All Docker dependencies, UI components, and related logic have been removed. - I introduced a way to download official macOS installer assets directly from Apple via `gibMacOS.py`. The UI now reflects a two-step process: 1. Download macOS Assets, 2. Create USB Installer. - The USB writing process now consumes `macos_download_path` from `gibMacOS`. 2. **Platform-Specific USB Writer Modules (`usb_writer_*.py`) Refactored:** - **`usb_writer_linux.py`:** Creates a comprehensive macOS installer. - Uses `sgdisk` for GPT partitioning (EFI FAT32, Main HFS+). - Employs `7z` to extract BaseSystem HFS image from downloaded assets. - Writes BaseSystem image to USB via `dd`. - Copies essential installer files (`BaseSystem.dmg`/`.chunklist`, `InstallInfo.plist`, `InstallAssistant.pkg`/`InstallESD.dmg`, `AppleDiagnostics.dmg`, `boot.efi`) to standard locations within a created `Install macOS [VersionName].app` structure on the USB. - Sets up OpenCore EFI from `EFI_template_installer`, including conditional `config.plist` enhancement via `plist_modifier.py`. - Includes logic to emit determinate `rsync` progress (though UI display in `main_app.py` was blocked by difficulties). - **`usb_writer_macos.py`:** Mirrors Linux writer functionality using native macOS tools (`diskutil`, `hdiutil`, `7z`, `dd`, `rsync`/`cp`, `bless`). Creates a full installer with custom OpenCore EFI. - **`usb_writer_windows.py`:** - Automates EFI partition setup (`diskpart`) and OpenCore EFI placement (from template + `plist_modifier.py`, using `robocopy`). - Extracts BaseSystem HFS image using `7z`. - Provides detailed, enhanced guidance for you to manually: 1. Write the `BaseSystem.hfs` to the main USB partition using "dd for Windows" (includes disk number, path, partition info). 2. Copy other installer assets to the HFS+ partition using third-party tools or another OS. 3. **`plist_modifier.py` (OpenCore `config.plist` Enhancement):** - Expanded hardware mappings for Intel Alder Lake iGPUs (including headless logic if dGPU detected), audio codecs (prioritizing detected names), and Ethernet kexts. - Refined NVIDIA GTX 970 (Maxwell) `boot-args` logic: - `nvda_drv=1` for High Sierra. - For Mojave+: `amfi_get_out_of_my_way=0x1` (OCLP prep), and `nv_disable=1` if an iGPU is present and primary; otherwise, no `nv_disable=1` to allow GTX 970 VESA boot. - Creates a `config.plist.backup` before modifications. 4. **`linux_hardware_info.py` (Hardware Detection - Linux Host):** - Added `get_audio_codecs()` to detect audio codec names from `/proc/asound/`, improving `layout-id` accuracy for `plist_modifier.py`. 5. **`EFI_template_installer`:** - `config-template.plist` significantly improved with robust, generic defaults for modern systems (Alder Lake friendly) and for `plist_modifier.py`. - Directory structure for kexts, drivers, ACPI defined with placeholders. 6. **UI/UX Enhancements (`main_app.py`):** - Status bar features a QTimer-driven text-based spinner for active operations. - Implemented determinate `QProgressBar` for `gibMacOS` downloads. - Centralized UI state management (`_set_ui_busy`, `update_all_button_states`). - Improved lifecycle and error/completion signal handling. - Privilege checks implemented before USB writing. - Windows USB detection improved using PowerShell/WMI to populate a selectable list. 7. **Documentation (`README.md`):** - Completely rewritten with "Skyscope" branding and project vision. - Details the new `gibMacOS`-based installer workflow. * Explains the NVIDIA GPU support strategy (guiding you to OCLP for post-install acceleration on newer macOS). * Comprehensive prerequisites (including `gibMacOS.py` setup, `7z`, platform tools like `hfsprogs` and `apfs-fuse` build info for Debian). * Updated usage instructions and current limitations. * Version updated to 1.1.0. **Known Issue/Stuck Point:** - Persistent difficulties prevented the full integration of determinate `rsync` progress display in `main_app.py`. While `usb_writer_linux.py` emits the data, I could not reliably update `main_app.py` to use it for the progress bar. This change represents a foundational shift to a more flexible and direct method of macOS installer creation and incorporates many advanced configuration and usability features. |
||
---|---|---|
.. | ||
BOOT | ||
OC |