Ubuntu Touch & postmarketOS Installation from macOS Tahoe 26.2
The OnePlus 6 (codename: enchilada) and OnePlus 6T (codename: fajita) are excellent candidates for mobile Linux due to their Snapdragon 845 processor and strong community support. This guide covers installation of both Ubuntu Touch and postmarketOS from a Mac running macOS Tahoe 26.2.
Best for: Users wanting a polished, daily-driver experience
Limitations: Fingerprint reader not working, partial offline charging
Current Version: 20.04 Focal OTA-11 (November 2025)
Best for: Tinkerers who want a true Linux experience
Limitations: More technical, firmware dependencies
Current Version: v25.12 (December 2025)
brew install --cask android-platform-toolsbrew install --cask ubports-installerIf your OnePlus 6 is running Android 10 or later, you must downgrade to OxygenOS 9 before installing either Linux OS.
Select your preferred user interface:
Latest Phosh Images (January 2026):
20260126-1815-postmarketOS-v25.12-phosh-25-oneplus-enchilada-boot.img.xz (23.4 MB)20260126-1815-postmarketOS-v25.12-phosh-25-oneplus-enchilada.img.xz (810.5 MB)If you don't have Homebrew installed, first install it:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Then install the required tools:
# Install Android platform tools (ADB and Fastboot)
brew install --cask android-platform-tools
# Install UBports Installer (for Ubuntu Touch)
brew install --cask ubports-installer
# Verify installation
adb --version
fastboot --version
1Download Platform Tools
Download the macOS ZIP from developer.android.com
2Extract and Configure PATH
# Extract to a permanent location
unzip platform-tools-latest-darwin.zip -d ~/Library/Android/
# Add to your shell profile (~/.zshrc for Tahoe)
echo 'export PATH="$HOME/Library/Android/platform-tools:$PATH"' >> ~/.zshrc
# Reload shell configuration
source ~/.zshrc
# Verify
adb --version
3Download UBports Installer
Download the .dmg file from GitHub Releases and drag to Applications.
Go to Settings → About Phone → Build Number to check your OxygenOS version. If you're on Android 10 or later, you must downgrade to OxygenOS 9 first.
1Boot into Fastboot Mode
Power off your phone completely. Then hold Volume Up + Power until you see the Fastboot screen.
Alternative: With USB debugging enabled, run: adb reboot bootloader
2Connect to Mac and Verify Connection
fastboot devices
You should see a device ID followed by "fastboot". If not, check your USB cable and connection.
3Unlock the Bootloader
fastboot oem unlock
On your phone, use the volume keys to highlight "Unlock the bootloader" and press Power to confirm.
The phone will wipe and reboot. This is normal.
4Re-enable Developer Options
After the phone reboots, go through initial setup (you can skip most things), then re-enable Developer Options and USB Debugging as before.
If your phone is running Android 10+, you must downgrade:
1Launch UBports Installer
Open the UBports Installer from your Applications folder.
2Connect Your Phone
Connect your OnePlus 6 via USB. Make sure USB Debugging is enabled.
3Select Your Device
The installer should automatically detect "OnePlus 6 (enchilada)". If not, select it manually from the list.
4Select Channel
Choose Stable for the best experience. Development builds are available but may have bugs.
5Follow On-Screen Instructions
The installer will guide you through the process, including rebooting to fastboot mode and flashing the necessary files.
6Wait for Installation
The process takes 10-15 minutes. Don't disconnect your phone until complete.
1Download Required Files
twrp-3.5.2_9-0-enchilada.img2Boot TWRP (Do NOT Flash)
# Boot to fastboot mode first
adb reboot bootloader
# Boot TWRP temporarily (important: use 'boot', not 'flash')
fastboot boot twrp-3.5.2_9-0-enchilada.img
fastboot boot NOT fastboot flash. Permanently flashing TWRP can cause issues.
3Push and Install Ubuntu Touch
# Push the Ubuntu Touch ZIP to the device
adb push ubuntu-touch-*.zip /sdcard/
# In TWRP, go to Install and select the ZIP file
1Open the Web Flasher
Go to https://flash.postmarketos.org/ in Chrome or another Chromium-based browser.
2Boot to Fastboot Mode
adb reboot bootloader
Or power off and hold Volume Up + Power.
3Connect and Flash
147147
1Download postmarketOS Images
Download both files from the official images page:
*-boot.img.xz*-oneplus-enchilada.img.xz2Decompress the Images
# On macOS, use unxz or The Unarchiver
unxz 20260126-1815-postmarketOS-v25.12-phosh-25-oneplus-enchilada-boot.img.xz
unxz 20260126-1815-postmarketOS-v25.12-phosh-25-oneplus-enchilada.img.xz
3Boot to Fastboot Mode
adb reboot bootloader
4Flash the Images
# Erase dtbo partition first
fastboot erase dtbo
# Flash the boot image
fastboot flash boot 20260126-1815-postmarketOS-v25.12-phosh-25-oneplus-enchilada-boot.img
# Flash the system image to userdata
fastboot flash userdata 20260126-1815-postmarketOS-v25.12-phosh-25-oneplus-enchilada.img
# Reboot
fastboot reboot
sudofastboot reboot between commands1Set Up a Linux VM
Use UTM (for Apple Silicon) or VirtualBox to create an Alpine Linux or Ubuntu VM. Make sure to pass through USB devices.
2Install pmbootstrap in the VM
# Alpine/postmarketOS
apk add pmbootstrap
# Ubuntu/Debian
apt install pmbootstrap
# Or from source
git clone https://gitlab.postmarketos.org/postmarketOS/pmbootstrap.git
cd pmbootstrap
ln -s "$PWD/pmbootstrap.py" ~/.local/bin/pmbootstrap
3Initialize and Flash
# Initialize pmbootstrap
pmbootstrap init
# Select: oneplus-enchilada, phosh, edge
# Flash with encryption
pmbootstrap install --fde
pmbootstrap flasher flash_kernel
pmbootstrap flasher flash_rootfs
The OnePlus 6 supports A/B slots, allowing you to install Android on one slot and Linux on another.
The OnePlus 6 has two system slots (A and B). You can:
# Check current slot
fastboot getvar current-slot
# Switch to slot A (Android)
fastboot --set-active=a
# Switch to slot B (Linux)
fastboot --set-active=b
# Reboot
fastboot reboot
For detailed dual-boot instructions, see the postmarketOS Dual Booting Wiki.
147147 (change immediately!)usersudo apk update && sudo apk upgradepasswdFor VoLTE support on postmarketOS, additional configuration is required. See the postmarketOS Wiki for detailed instructions.
| Problem | Solution |
|---|---|
| "waiting for any device" | Try sudo fastboot devices, different USB cable, or different port |
| Phone not detected in ADB | Re-enable USB debugging, try "Revoke USB debugging authorizations" and reconnect |
| Boot loop after flashing | Boot to fastboot mode and re-flash images, or restore OxygenOS |
| UBports Installer stuck | Close installer, run adb kill-server, then restart installer |
| Web flasher not working | Use Chrome/Chromium (Firefox doesn't support WebUSB) |
| No cellular signal | Ensure you downgraded to OxygenOS 9 before installing Linux OS |
Restore to Android:
# Download OxygenOS full ROM
# Boot to fastboot mode
adb reboot bootloader
# Flash recovery and boot using MSMDownloadTool or local upgrade method
Re-flash Linux OS:
# Boot to fastboot
adb reboot bootloader
# or hold Volume Up + Power
# Re-run the flash commands or use the web flasher again
Last Updated: March 26, 2026
Guide Version: 2026.1
This guide is provided as-is. Always refer to official documentation for the most current information.