├── .github └── workflows │ ├── download.yml │ └── download-latest.yml └── README.md /.github/workflows/download.yml: -------------------------------------------------------------------------------- 1 | name: Tahoe Beta 1 Recovery Image 2 | 3 | on: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | build: 8 | runs-on: macos-latest 9 | steps: 10 | - uses: actions/checkout@v4 11 | 12 | - name: Download macOS Installer 13 | run: | 14 | curl -L -o /tmp/InstallAssistant.pkg https://swcdn.apple.com/content/downloads/26/20/082-55599-A_UZPH7KLA4Q/fddo2aezqd7xchfjwh4244kwixjsut4boc/InstallAssistant.pkg 15 | 16 | - name: Install the assistant 17 | run: | 18 | sudo installer -pkg /tmp/InstallAssistant.pkg -target / 19 | 20 | - name: Generate macOS Installer 21 | run: | 22 | sudo hdiutil create -o /tmp/Tahoe -size 20000m -volname 'Tahoe' -layout SPUD -fs HFS+J 23 | sudo hdiutil attach /tmp/Tahoe.dmg -noverify -mountpoint /Volumes/Tahoe 24 | sleep 10 25 | sudo /Applications/'Install macOS Beta'.app/Contents/Resources/createinstallmedia --volume /Volumes/Tahoe --nointeraction 26 | cp -R '/Volumes/Install macOS Beta/BaseSystem' /tmp/BaseSystem 27 | 28 | - name: Upload com.apple.recovery.boot 29 | uses: actions/upload-artifact@v4 30 | with: 31 | name: com.apple.recovery.boot 32 | path: /tmp/BaseSystem/* 33 | compression-level: 9 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # A workflow file that generates macOS Tahoe recovery image 2 | 3 | ### Full installer downloaded straight from Apple and then recover image is extracted 4 | 5 | ## 🚨Updates🚨 6 | 7 | I renamed `Generate macOS Tahoe Recovery Image` workflow to `Tahoe Beta 1 Recovery Image`, this will always generate the recovery image for the first beta of Tahoe. 8 | 9 | But if you are looking for the latest beta recovery image run `Tahoe Beta (latest) Recovery Image` 10 | 11 | # Why you may need this ? 12 | 13 | Without the recovery image, you need to be on macOS to install Tahoe. Since there's no stable release yet, no official recovery images are available either. 14 | This repo will fetch the full beta installer and zip what you need to have in order to install Tahoe from recovery. 15 | 16 | # How to use this ? 17 | 18 | Fork this repo and run `Generate macOS Tahoe Recovery Image` worflow. 19 | 20 | Once done you will have com.apple.recovery.boot.zip artifact 21 | 22 | Unzip it and you will have com.apple.recovery.boot 23 | 24 | Continue with https://dortania.github.io/OpenCore-Install-Guide/installer-guide/windows-install.html 25 | 26 | or if you are on Linux https://dortania.github.io/OpenCore-Install-Guide/installer-guide/linux-install.html 27 | 28 | you can skip the Downloading macOS part as this repo will that for you 29 | 30 | ## ⚠️ Legal Notice & Disclaimer 31 | 32 | ## This project does not distribute, modify, or host any Apple software. 33 | 34 | - I do not own or claim ownership of any Apple software referenced or downloaded. 35 | 36 | - This project is for educational and personal use only. 37 | 38 | - No warranty or guarantee is provided—use at your own risk. 39 | 40 | - Apple, macOS, and related marks are trademarks of Apple Inc., registered in the U.S. and other countries. 41 | -------------------------------------------------------------------------------- /.github/workflows/download-latest.yml: -------------------------------------------------------------------------------- 1 | name: Tahoe Beta (latest) Recovery Image 2 | 3 | on: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | build: 8 | runs-on: macos-latest 9 | steps: 10 | - uses: actions/checkout@v4 11 | 12 | - name: Clone gibMacOS 13 | run: | 14 | git clone https://github.com/corpnewt/gibMacOS.git 15 | 16 | - name: Download macOS Installer (latest beta) 17 | run: | 18 | python ./gibMacOS/gibMacOS.py -c developer -v Tahoe -m 26 -o /tmp/Tahoe-beta-latest 19 | 20 | - name: Install the assistant 21 | run: | 22 | sudo installer -pkg /tmp/Tahoe-beta-latest/InstallAssistant.pkg -target / 23 | 24 | - name: Generate macOS Installer 25 | run: | 26 | INSTALLER=$(ls -d /Applications/Install*.app | head -n 1 || true) 27 | if [ ! -d "$INSTALLER" ]; then 28 | echo "Could not find Install macOS app in /Applications" 29 | ls -l /Applications 30 | exit 1 31 | fi 32 | SIZE_MB=$(du -sm "$INSTALLER" | cut -f1) 33 | 34 | # Add 40% headroom and ceil 35 | EXTRA=$(echo "($SIZE_MB * 0.4 + 0.999)/1" | bc) 36 | 37 | TOTAL_MB=$(( SIZE_MB + EXTRA )) 38 | 39 | echo "Installer size: $SIZE_MB MB" 40 | echo "Allocating DMG size: $TOTAL_MB MB" 41 | 42 | sudo hdiutil create -o /tmp/Tahoe -size ${TOTAL_MB}m -volname 'Tahoe' -layout SPUD -fs HFS+J 43 | sudo hdiutil attach /tmp/Tahoe.dmg -noverify -mountpoint /Volumes/Tahoe 44 | sleep 10 45 | sudo "$INSTALLER/Contents/Resources/createinstallmedia" --volume /Volumes/Tahoe --nointeraction 46 | 47 | # Detect created installer volume (it always starts with "Install") 48 | INSTALL_VOL=$(ls -d /Volumes/Install* | head -n 1 || true) 49 | if [ ! -d "$INSTALL_VOL" ]; then 50 | echo "Could not find installer volume in /Volumes" 51 | ls -l /Volumes 52 | exit 1 53 | fi 54 | echo "Found installer volume: $INSTALL_VOL" 55 | 56 | cp -R "$INSTALL_VOL/BaseSystem" /tmp/BaseSystem 57 | 58 | - name: Upload com.apple.recovery.boot 59 | uses: actions/upload-artifact@v4 60 | with: 61 | name: com.apple.recovery.boot 62 | path: /tmp/BaseSystem/* 63 | compression-level: 9 64 | --------------------------------------------------------------------------------