Created
June 12, 2022 01:22
-
-
Save semenko/3de2c6135687a40bd55fb3dec1411706 to your computer and use it in GitHub Desktop.
Generate NTFS image for Xbox OSU updater
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -x | |
# By Nick Semenkovich https://nick.semenkovich.com | |
# | |
# Largely derived from: | |
# https://gist.github.com/kumbasar/49906cb704ce9213c972a3e008c74c0c | |
# I found myself needing to update an Xbox S via USB (with the Offline System Update OSU1 patch) | |
# See: https://support.xbox.com/en-US/help/hardware-network/console/system-update-solution/offline-system-update | |
# | |
# Unfortunately, making an NTFS filesystem on OS X is hard without disabling System Integrity Protection (SIP) | |
# and installing third party / semi-sketch software & extensions. | |
# | |
# Instead, you can use a remote linux machine (I bet Google Cloud Shell would work for free for this), | |
# and generate an image, then write that image to a flash drive on OS X. | |
# Download OSU | |
wget -O osu1.zip https://www.xbox.com/xboxone/osu1 | |
image="osu1.img" | |
label="osu" | |
mntdir=`mktemp -d` | |
# This will be roughly 7GB -- it must be larger than the osu1.zip contents | |
sudo dd status=progress if=/dev/zero of=$image bs=4M count=1750 && sync | |
echo 'type=7' | sudo sfdisk $image | |
LOOPMOUNT=`sudo losetup --partscan --show --find ${image}` | |
echo $LOOPMOUNT | |
sudo mkfs.ntfs -Q -v -F -L ${label} ${LOOPMOUNT}p1 | |
sudo mount ${LOOPMOUNT}p1 ${mntdir} | |
# Extract OSU1 into the tmpdir | |
unzip osu1.zip -d ${mntdir} | |
# Unmount everything | |
sudo umount ${mntdir} | |
sudo losetup -d ${LOOPMOUNT} | |
# NOTE: | |
# Now you need to write this on OS X to the flash drive | |
# Roughly: | |
# 0. Copy the file to your local mac ($ scp -C remote-machine:osu1.img .) | |
# 1. Plug in a flash drive | |
# 2. Find its path ($ mount ) | |
# 3. Ensure it's unmounted ($ sudo diskutil unmount /Volumes/FLASHNAME/) | |
# 4. Write the image ($ sudo dd if=osu1.img of=/dev/diskNN bs=4M && sync) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment