Compare commits

..
Author SHA1 Message Date
Nick Chan e61ae40291 2023-03-15 15:56:16 +08:00
Nick Chan 48bd5dccc2 2023-03-15 09:23:29 +08:00
Nick Chan 310e0313d3 2023-03-15 09:08:19 +08:00
Nick Chan 0b95d8ad44 fix build jbinit 2023-03-15 09:04:54 +08:00
Tom E 91d17c2422 this SUCKS 2023-03-14 11:03:48 -04:00
Tom E aad7a4bc05 directory issue 2023-03-14 10:26:22 -04:00
Tom E 2e483568b0 the fix 2023-03-14 09:28:14 -04:00
Tom E a74c5a1236 fix: dumb mistake 2023-03-14 08:14:32 -04:00
Tom E 131bba04b6 need libssl headers too 2023-03-14 07:51:43 -04:00
Tom E 20f5c3c987 fix: install llvm 2023-03-14 07:38:13 -04:00
Nick Chan 07578558a2 2023-03-14 19:30:55 +08:00
Nick Chan e811c9c0f9 update submodules 2023-03-14 19:11:07 +08:00
Nick Chan 98a9310d25 Update build.yml 2023-03-14 18:05:24 +08:00
Nick Chan 7439d7f9eb Update build.yml 2023-03-14 18:01:22 +08:00
Nick Chan fc77488b6d Update build.yml 2023-03-14 17:53:49 +08:00
Nick Chan 8590c9a054 Update build.yml 2023-03-14 17:47:33 +08:00
Nick Chan fcc34b920d Update build.yml 2023-03-14 17:44:32 +08:00
Nick Chan 2133f2f94f Update build.yml 2023-03-14 17:42:15 +08:00
Nick Chan aace97112f fix checkra1n-kpf-pongo uplaod 2023-03-14 17:32:42 +08:00
Nick Chan df68b2910e kpf action changes 2023-03-14 17:29:39 +08:00
Nick Chan 8a912898c9 build things in one action (WILL fail) 2023-03-14 17:21:59 +08:00
38 changed files with 365 additions and 274 deletions

No files matched your search

+279 -112
View File
@@ -44,6 +44,236 @@ jobs:
localDir: 'ready/'
remoteDir: '/palera1n/artifacts/c-rewrite'
build-loader:
runs-on: macos-12
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Get loader commit
run: echo "LOADER_COMMIT=$(git -C src/loader rev-parse HEAD)" >> $GITHUB_ENV
- name: Cache compile
id: loader_cache
uses: actions/cache@v3
with:
path: src/loader/packages
key: loader-${{ env.LOADER_COMMIT }}
- name: Install dependencies (packages)
if: steps.loader_cache.outputs.cache-hit != 'true'
run: |
curl -LO https://github.com/ProcursusTeam/ldid/releases/download/v2.1.5-procursus7/ldid_macosx_x86_64
sudo install -m755 ldid_macosx_x86_64 /usr/local/bin/ldid
- name: Compile
if: steps.loader_cache.outputs.cache-hit != 'true'
run: make -C src/loader
- name: Upload loader
uses: actions/upload-artifact@v3
with:
name: palera1n.ipa
path: src/loader/packages/palera1n.ipa
retention-days: 1
build-binpack:
needs: build-loader
runs-on: macos-12
steps:
- name: Cache Procursus
uses: actions/cache@v3
id: procache
with:
path: |
~/__cache
key: ${{ runner.os }}-procursus
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Get binpack commit
run: echo "BINPACK_COMMIT=$(git -C src/binpack rev-parse HEAD)" >> $GITHUB_ENV
- name: Cache binpack.tgz
uses: actions/cache@v3
id: binpack_cache
with:
path: src/jbinit/binpack.tgz
key: binpack-${{ env.BINPACK_COMMIT }}
- name: Download loader
uses: actions/download-artifact@v3
with:
name: palera1n.ipa
path: src/jbinit/palera1n.ipa
- name: Checkout Procursus
if: steps.binpack_cache.outputs.cache-hit != 'true'
uses: actions/checkout@v3
with:
repository: ProcursusTeam/Procursus
path: src/Procursus
- name: Setup Procursus Bootstrap (install)
if: steps.procache.outputs.cache-hit != 'true' && steps.binpack_cache.outputs.cache-hit != 'true'
run: |
wget https://apt.procurs.us/bootstraps/big_sur/bootstrap-darwin-amd64.tar.zst
sudo gtar --preserve-permissions -xkf ./bootstrap-darwin-amd64.tar.zst -C /
echo '/opt/procursus/sbin:/opt/procursus/bin' >> $GITHUB_PATH
PATH=/opt/procursus/sbin:/opt/procursus/bin:$PATH sudo /opt/procursus/bin/apt update
sudo /opt/procursus/bin/apt -V full-upgrade -y || :
sudo /opt/procursus/bin/apt install asciidoc autoconf autoconf-archive automake autopoint bash bison cmake docbook-xml docbook-xsl fakeroot findutils flex file gawk git gnupg gpgrt-tools groff gzip ldid libtool libltdl-dev llvm make ncurses-bin openssl patch pkg-config po4a python3 sed tar triehash wget xz-utils zstd -y
- name: Add Procursus to PATH
if: steps.binpack_cache.outputs.cache-hit != 'true'
run: |
echo '/opt/procursus/sbin:/opt/procursus/bin' >> $GITHUB_PATH
- name: Setup Procursus Bootstrap (cache)
if: steps.procache.outputs.cache-hit == 'true' && steps.binpack_cache.outputs.cache-hit != 'true'
run: |
sudo mkdir -p ~/__cache/procursus/var/cache/apt/archives/partial ~/__cache/procursus/var/lib/apt/lists/partial
sudo rsync -aP ~/__cache/procursus /opt
sudo /opt/procursus/bin/apt update
sudo /opt/procursus/bin/apt --allow-downgrades -V dist-upgrade -y
sudo /opt/procursus/bin/apt --allow-downgrades -V dist-upgrade -y
- name: Build binpack
if: steps.binpack_cache.outputs.cache-hit != 'true'
run: |
cd src/binpack
gmake MEMO_CFVER=1800 MEMO_PREFIX=/cores/binpack MEMO_TARGET=iphoneos-arm64 binpack
cd ../..
- name: Process binpack.tar into binpack.tgz
if: steps.binpack_cache.outputs.cache-hit != 'true'
run: |
cd src/jbinit
cp ../binpack/build_strap/iphoneos-arm64/1800/binpack.tar .
sudo tar --preserve-permissions -xf binpack.tar
sudo cp -R cores/binpack .
sudo chown $UID:$GID .
sudo mkdir -p binpack/Library/LaunchDaemons
sudo sed 's|/binpack|/cores/binpack|' binpack/usr/share/dropbear.plist.example | sudo tee binpack/Library/LaunchDaemons/dropbear.plist
sudo rm -rf binpack/usr/share/dropbear.plist.example
sudo plutil -convert binary1 binpack/Library/LaunchDaemons/dropbear.plist
sudo chown 0:0 binpack/Library/LaunchDaemons/dropbear.plist
sudo gchmod 755 -R binpack/Library
sudo gchmod 644 binpack/Library/LaunchDaemons/dropbear.plist
tar -zcf binpack.tgz binpack
cd ../..
- name: Generate binpack.dmg
run: |
cd src/jbinit
sudo gmake binpack.dmg
cd ../..
- name: Upload binpack
uses: actions/upload-artifact@v3
with:
name: binpack.dmg
path: src/jbinit/binpack.dmg
retention-days: 1
- name: Copy Procursus to Cache Location
run: |
sudo mkdir -p ~/__cache
sudo rsync -aP /opt/procursus ~/__cache
sudo rm -rf ~/__cache/procursus/var/cache/apt/archives/partial ~/__cache/procursus/var/lib/apt/lists/partial ~/__cache/procursus/Library/dpkg/triggers/Lock
build-jbinit:
runs-on: macos-12
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Get jbinit commit
run: echo "JBINIT_COMMIT=$(git -C src/jbinit rev-parse HEAD)" >> $GITHUB_ENV
- name: Cache jbinit
uses: actions/cache@v3
id: jbinit_cache
with:
path: src/jbinit/ramdisk.dmg
key: jbinit-${{ env.JBINIT_COMMIT }}
- name: Download dependencies
if: steps.jbinit_cache.cache_hit != 'true'
run: |
brew install make coreutils
curl -LO https://github.com/ProcursusTeam/ldid/releases/download/v2.1.5-procursus7/ldid_macosx_x86_64
sudo install -m755 ldid_macosx_x86_64 /usr/local/bin/ldid
- name: Build jbinit
if: steps.jbinit_cache.cache_hit != 'true'
run: |
cd src/jbinit
git submodule update --init --recursive
sudo cp -a $(xcrun -sdk macosx --show-sdk-path)/usr/include/{xpc,{launch,bootstrap}.h} $(xcrun -sdk iphoneos --show-sdk-path)/usr/include
sudo sed -i.bak -Ee 's/API_UNAVAILABLE\(.*\)//g' $(xcrun -sdk iphoneos --show-sdk-path)//System/Library/Frameworks/CoreFoundation.framework/Headers/CFUserNotification.h
sudo sed -i.bak -e 's/;}/;/g' $(xcrun -sdk iphoneos --show-sdk-path)//System/Library/Frameworks/CoreFoundation.framework/Headers/CFUserNotification.h
sudo sed -i.bak -e 's/__UNAVAILABLE_PUBLIC_IOS;/;/g' $(xcrun -sdk iphoneos --show-sdk-path)/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h
ruby -e "File.write(ARGV[0], File.read(ARGV[0]).gsub(ARGV[1]) { ARGV[2] })" $(xcrun -sdk iphoneos --show-sdk-path)/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h '__API_DEPRECATED_WITH_REPLACEMENT("kIOMainPortDefault", macos(10.0, 12.0)) __API_UNAVAILABLE(ios, watchos, tvos);' '__API_DEPRECATED_WITH_REPLACEMENT("kIOMainPortDefault", macos(10.0, 12.0)) /*__API_UNAVAILABLE(ios, watchos, tvos)*/;'
sudo chown $UID:$GID .
sudo gmake -j$(sysctl -n hw.ncpu) ramdisk.dmg
- name: Upload ramdisk
uses: actions/upload-artifact@v3
with:
name: ramdisk.dmg
path: src/jbinit/ramdisk.dmg
retention-days: 1
build-kpf:
runs-on: ubuntu-20.04
steps:
- name: Install toolchain
run: |
echo 'deb https://assets.checkra.in/debian /' | sudo tee /etc/apt/sources.list.d/checkra1n.list
sudo apt-key adv --fetch-keys https://assets.checkra.in/debian/archive.key
sudo apt-get update
sudo apt-get install -y ld64 cctools-strip
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 0
submodules: true
- name: Get Pongo commit
run: echo "PONGO_COMMIT=$(git -C src/PongoOS rev-parse HEAD)" >> $GITHUB_ENV
- name: Voodoo magic
id: voodoo
uses: actions/cache@v2
with:
key: ${{ github.event_name }}-${{ env.PONGO_COMMIT }}-${{ github.run_id }}
restore-keys: |
pongo-${{ env.PONGO_COMMIT }}-
pongo-
path: |
src/PongoOS/**
- name: Compile
run: |
cd src/PongoOS
EMBEDDED_CC='clang-10' EMBEDDED_AR='llvm-ar-10' EMBEDDED_RANLIB='llvm-ranlib-10' DEV_BUILD=1 make build/checkra1n-kpf-pongo
- name: Upload checkra1n-kpf-pongo
uses: actions/upload-artifact@v3
with:
name: checkra1n-kpf-pongo
path: src/PongoOS/build/checkra1n-kpf-pongo
retention-days: 1
build-darwin:
strategy:
matrix:
@@ -61,6 +291,7 @@ jobs:
os: iphoneos
minos: 7.0
runs-on: macos-12
needs: [build-loader, build-jbinit, build-binpack, build-kpf]
env:
MBEDTLS_VERSION: 3.3.0
READLINE_VERSION: 8.2
@@ -85,6 +316,24 @@ jobs:
- name: Download dependencies (embedded binaries)
run: |
echo "SDK=$(xcrun -sdk ${{ matrix.os }} --show-sdk-path)" >> $GITHUB_ENV
- name: Download binpack.dmg
uses: actions/download-artifact@v3
with:
name: binpack.dmg
path: src/palera1n/binpack.dmg
- name: Download ramdisk.dmg
uses: actions/download-artifact@v3
with:
name: ramdisk.dmg
path: src/palera1n/ramdisk.dmg
- name: Download checkra1n-kpf-pongo
uses: actions/download-artifact@v3
with:
name: checkra1n-kpf-pongo
path: src/palera1n/checkra1n-kpf-pongo
- name: Download dependencies (source code)
run: |
@@ -351,18 +600,6 @@ jobs:
runs-on: macos-latest
needs: build-darwin
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Procursus
uses: beerpiss/[email protected]
with:
packages: sed coreutils
cache: true
mirror: 'https://procursus.itsnebula.net/'
- name: Download all Darwin artifacts
uses: actions/download-artifact@v3
@@ -381,79 +618,6 @@ jobs:
zip -r9 ready/palera1n-ios.dSYM.zip palera1n-iphoneos-arm64.dSYM
zip -r9 ready/palera1n-macos.dSYM.zip palera1n-macos.dSYM
- name: Build debs
run: |
make -j$(sysctl -n hw.ncpu) docs
version=$(git describe --dirty --tags --abbrev=7 | sed 's|^v||')
# Darwin x86_64
mkdir -p stage/DEBIAN
mkdir -p stage/opt/procursus/bin
mkdir -p stage/opt/procursus/usr/share/man/man1
cp packaging/control.macosx stage/DEBIAN/control
gsed 's|@DEB_ARCH@|darwin-amd64|g' -i stage/DEBIAN/control
gsed "s|@DEB_VERSION@|$version|g" -i stage/DEBIAN/control
ginstall -Dm644 ready/palera1n-macos-x86_64 stage/opt/procursus/bin/palera1n
ginstall -Dm644 docs/palera1n.1 stage/opt/procursus/usr/share/man/man1/palera1n.1
chmod +x stage/opt/procursus/bin/palera1n
dpkg-deb -Zzstd -b stage palera1n_${version}_darwin-amd64.deb
mv palera1n*.deb ready/
rm -rf stage
# Darwin arm64
mkdir -p stage/DEBIAN
mkdir -p stage/opt/procursus/bin
mkdir -p stage/opt/procursus/usr/share/man/man1
cp packaging/control.macosx stage/DEBIAN/control
gsed 's|@DEB_ARCH@|darwin-arm64|g' -i stage/DEBIAN/control
gsed "s|@DEB_VERSION@|$version|g" -i stage/DEBIAN/control
ginstall -Dm644 ready/palera1n-macos-arm64 stage/opt/procursus/bin/palera1n
ginstall -Dm644 docs/palera1n.1 stage/opt/procursus/usr/share/man/man1/palera1n.1
chmod +x stage/opt/procursus/bin/palera1n
dpkg-deb -Zzstd -b stage palera1n_${version}_darwin-arm64.deb
mv palera1n*.deb ready/
rm -rf stage
# iPhoneOS
mkdir -p stage/DEBIAN
mkdir -p stage/usr/bin
mkdir -p stage/usr/share/man/man1
cp packaging/control stage/DEBIAN/control
gsed 's|@DEB_ARCH@|iphoneos-arm|g' -i stage/DEBIAN/control
gsed "s|@DEB_VERSION@|$version|g" -i stage/DEBIAN/control
ginstall -Dm644 ready/palera1n-ios stage/usr/bin/palera1n
ginstall -Dm644 docs/palera1n.1 stage/usr/share/man/man1/palera1n.1
chmod +x stage/usr/bin/palera1n
dpkg-deb -Zzstd -b stage palera1n_${version}_iphoneos-arm.deb
mv palera1n*.deb ready/
rm -rf stage
# iPhoneOS (rootless)
mkdir -p stage/DEBIAN
mkdir -p stage/var/jb/usr/bin
mkdir -p stage/var/jb/usr/share/man/man1
cp packaging/control stage/DEBIAN/control
gsed 's|@DEB_ARCH@|iphoneos-arm64|g' -i stage/DEBIAN/control
gsed "s|@DEB_VERSION@|$version|g" -i stage/DEBIAN/control
ginstall -Dm644 ready/palera1n-ios stage/var/jb/usr/bin/palera1n
ginstall -Dm644 docs/palera1n.1 stage/var/jb/usr/share/man/man1/palera1n.1
chmod +x stage/var/jb/usr/bin/palera1n
dpkg-deb -Zzstd -b stage palera1n_${version}_iphoneos-arm64.deb
mv palera1n*.deb ready/
rm -rf stage
- name: Upload artifact
if: ${{ github.event_name != 'pull_request' }}
uses: wangyucode/[email protected]
@@ -476,6 +640,7 @@ jobs:
- armel-linux-musleabi
- aarch64-linux-musl
runs-on: ubuntu-latest
needs: [build-loader, build-jbinit, build-binpack, build-kpf]
env:
MBEDTLS_VERSION: 3.3.0
LIBUSB_VERSION: 1.0.26
@@ -494,7 +659,7 @@ jobs:
- name: Install build dependencies (packages)
run: |
sudo apt-get remove -y libssl-dev libreadline-dev
sudo apt-get install -y pkg-config autoconf automake autopoint mandoc
sudo apt-get install -y pkg-config autoconf automake autopoint
sudo pip3 install jsonschema jinja2
- name: Download toolchain checksum
@@ -514,6 +679,24 @@ jobs:
run: |
curl -LO https://musl.cc/${{ matrix.triple }}-cross.tgz
- name: Download binpack.dmg
uses: actions/download-artifact@v3
with:
name: binpack.dmg
path: src/palera1n/binpack.dmg
- name: Download ramdisk.dmg
uses: actions/download-artifact@v3
with:
name: ramdisk.dmg
path: src/palera1n/ramdisk.dmg
- name: Download checkra1n-kpf-pongo
uses: actions/download-artifact@v3
with:
name: checkra1n-kpf-pongo
path: src/palera1n/checkra1n-kpf-pongo
- name: Setup environment
run: |
tar -xf ${{ matrix.triple }}-cross.tgz
@@ -522,19 +705,15 @@ jobs:
case ${{ matrix.triple }} in
i486-linux-musl)
echo "CHECKRA1N_NAME=linux-x86" >> $GITHUB_ENV
echo "ARCH_NAME=i386" >> $GITHUB_ENV
;;
x86_64-linux-musl)
echo "CHECKRA1N_NAME=linux-x86_64" >> $GITHUB_ENV
echo "ARCH_NAME=amd64" >> $GITHUB_ENV
;;
armel-linux-musleabi)
echo "CHECKRA1N_NAME=linux-armel" >> $GITHUB_ENV
echo "ARCH_NAME=armel" >> $GITHUB_ENV
;;
aarch64-linux-musl)
echo "CHECKRA1N_NAME=linux-arm64" >> $GITHUB_ENV
echo "ARCH_NAME=arm64" >> $GITHUB_ENV
;;
esac
echo "PKG_CONFIG_PATH=$(pwd)/sysroot/usr/local/lib/pkgconfig" >> $GITHUB_ENV
@@ -548,7 +727,6 @@ jobs:
echo "CROSS_COMPILE=${{ matrix.triple }}-" >> $GITHUB_ENV
mkdir -p $(pwd)/sysroot/usr/local/lib
ln -sf $(pwd)/sysroot/usr/local/lib{,64}
- name: Download dependencies (source code)
run: |
curl -LOOOOOOO \
@@ -742,27 +920,6 @@ jobs:
mv src/palera1n ready/palera1n-${{ env.CHECKRA1N_NAME }}
tar -zcf ready/dep_root_${{ matrix.triple }}.tgz dep_root
- name: Build debs
run: |
version=$(git describe --dirty --tags --abbrev=7 | sed 's|^v||')
make -j$(nproc) docs
mkdir -p stage/DEBIAN
mkdir -p stage/usr/bin
mkdir -p stage/usr/share/man/man1
cp packaging/control stage/DEBIAN/control
sed 's|@DEB_ARCH@|${{ env.ARCH_NAME }}|g' -i stage/DEBIAN/control
sed "s|@DEB_VERSION@|$version|g" -i stage/DEBIAN/control
install -Dm644 ready/palera1n-${{ env.CHECKRA1N_NAME }} stage/usr/bin/palera1n
install -Dm644 docs/palera1n.1 stage/usr/share/man/man1/palera1n.1
chmod +x stage/usr/bin/palera1n
dpkg-deb -b stage palera1n_${version}_${{ env.ARCH_NAME }}.deb
mv palera1n*.deb ready/
rm -rf stage
- name: Upload artifact
if: ${{ github.event_name != 'pull_request' }}
uses: wangyucode/[email protected]
@@ -775,3 +932,13 @@ jobs:
dryRun: false
localDir: 'ready/'
remoteDir: '/palera1n/artifacts/c-rewrite'
delete-artifacts:
runs-on: ubuntu-latest
needs: [darwin-dist, build-Linux]
steps:
- name: Delete all artifacts on GitHub
uses: geekyeggo/delete-artifact@v2
with:
name: '*'
failOnError: false
+6 -7
View File
@@ -7,18 +7,17 @@ contrib/
.vscode
checkra1n*
payload.c
src/palera1n
src/palera1n/palera1n
!xxd-embedded.h
src/binpack.dmg
src/ramdisk.dmg
src/xxd-*.c
src/palera1n/binpack.dmg
src/palera1n/ramdisk.dmg
src/palera1n/xxd-*.c
.DS_Store
!palera1n.1
palera1n.1.html
Payload
docs/*.html
build
src/*.dmg.c
src/palera1n/*.dmg.c
.idea
src/stage2/
src/libcheckra1nhelper.dylib*
src/palera1n/libcheckra1nhelper.dylib*
+12
View File
@@ -0,0 +1,12 @@
[submodule "src/PongoOS"]
path = src/PongoOS
url = [email protected]:plooshi/PongoOS.git
[submodule "src/jbinit"]
path = src/jbinit
url = [email protected]:palera1n/jbinit.git
[submodule "src/loader"]
path = src/loader
url = [email protected]:palera1n/loader.git
[submodule "src/binpack"]
path = src/binpack
url = [email protected]:palera1n/binpack.git
+7 -13
View File
@@ -1,4 +1,4 @@
NAME = Tumbleweed
NAME = The Beginning of the End
SRC = $(shell pwd)
DEP = $(SRC)/dep_root
@@ -6,7 +6,7 @@ STRIP = strip
CC ?= cc
CFLAGS += -I$(DEP)/include -I$(SRC)/include -I$(SRC)
CFLAGS += -Wall -Wextra -DPALERAIN_VERSION=\"2.0.0\" -Wall -Wextra -Wno-unused-parameter
CFLAGS += -Wno-unused-variable -I$(SRC)/src -std=c99 -pedantic-errors -D_C99_SOURCE -D_POSIX_C_SOURCE=200112L -D_DARWIN_C_SOURCE
CFLAGS += -Wno-unused-variable -I$(SRC)/src/palera1n -std=c99 -pedantic-errors -D_C99_SOURCE -D_POSIX_C_SOURCE=200112L -D_DARWIN_C_SOURCE
LIBS += $(DEP)/lib/libimobiledevice-1.0.a $(DEP)/lib/libirecovery-1.0.a $(DEP)/lib/libusbmuxd-2.0.a
LIBS += $(DEP)/lib/libimobiledevice-glue-1.0.a $(DEP)/lib/libplist-2.0.a -pthread
ifeq ($(TARGET_OS),)
@@ -51,30 +51,24 @@ CFLAGS += -DBAKERAIN_DEVELOPE_R="\"$(BAKERAIN_DEVELOPE_R)\""
endif
BUILD_DATE := $(shell LANG=C date)
BUILD_NUMBER := $(shell git rev-list --count HEAD)
BUILD_TAG := $(shell git describe --dirty --tags --abbrev=7)
BUILD_WHOAMI := $(shell whoami)
BUILD_BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
BUILD_COMMIT := $(shell git rev-parse HEAD)
CFLAGS += -DBUILD_STYLE="\"$(BUILD_STYLE)\"" -DBUILD_DATE="\"$(BUILD_DATE)\""
CFLAGS += -DBUILD_WHOAMI="\"$(BUILD_WHOAMI)\"" -DBUILD_TAG="\"$(BUILD_TAG)\""
CFLAGS += -DBUILD_NUMBER="\"$(BUILD_NUMBER)\"" -DBUILD_BRANCH="\"$(BUILD_BRANCH)\""
CFLAGS += -DBUILD_COMMIT="\"$(BUILD_COMMIT)\""
CFLAGS += -DBUILD_STYLE="\"$(BUILD_STYLE)\"" -DBUILD_DATE="\"$(BUILD_DATE)\"" -DBUILD_WHOAMI=\"$(BUILD_WHOAMI)\" -DBUILD_TAG=\"$(BUILD_TAG)\"
export SRC DEP CC CFLAGS LDFLAGS LIBS TARGET_OS DEV_BUILD BUILD_DATE BUILD_TAG BUILD_WHOAMI BUILD_STYLE BUILD_NUMBER BUILD_BRANCH
export SRC DEP CC CFLAGS LDFLAGS LIBS TARGET_OS DEV_BUILD BUILD_DATE BUILD_TAG BUILD_WHOAMI BUILD_STYLE
all: palera1n
palera1n: download-deps
$(MAKE) -C src
$(MAKE) -C src/palera1n
clean:
$(MAKE) -C src clean
$(MAKE) -C src/palera1n clean
$(MAKE) -C docs clean
download-deps:
$(MAKE) -C src checkra1n-macos checkra1n-linux-arm64 checkra1n-linux-armel checkra1n-linux-x86 checkra1n-linux-x86_64 checkra1n-kpf-pongo ramdisk.dmg binpack.dmg
$(MAKE) -C src/palera1n checkra1n-macos checkra1n-linux-arm64 checkra1n-linux-armel checkra1n-linux-x86 checkra1n-linux-x86_64 checkra1n-kpf-pongo ramdisk.dmg binpack.dmg
docs:
$(MAKE) -C docs
+15 -36
View File
@@ -2,14 +2,16 @@
.\" Copyright (c) 2023 Nick Chan
.\" SPDX-License-Identifier: MIT
.\"
.Dd "20 March 2023"
.Dd "06 February 2023"
.Dt "Nick Chan utilities manual" 1 "palera1n"
.Dt palera1n 1
.Os
.Sh NAME
.Nm palera1n
.Nd iOS 15.0-16.3.1 arm64 iOS/iPadOS jailbreaking tool
.Sh SYNOPSIS
.Nm
.Op Fl cCdDEfhIlLnpRsSvV
.Op Fl BcdDEfhlnLOpRsvVI
.Op Fl e Ar Boot arguments
.Op Fl k Ar Pongo image
.Op Fl o Ar overlay file
@@ -46,11 +48,8 @@ On iOS 16, the passcode must be off since restore, and
from settings app counts as a restore.
A backup may be used in this case.
.Pp
In the remainder of this document, the term "iOS" and "iPadOS" will be used interchangably
as the difference is negligible as far as the jailbreak is concerened.
.Pp
.Sh SUPPORTED DEVICES
As described above, arm64 iOS 15.0-16.3.1 devices are supported, here is an explicit
As described above, arm64 iOS/iPadOS 15.0-16.3.1 devices are supported, here is an explicit
list of supported devicecs:
.Bl -tag -compact
@@ -104,13 +103,11 @@ is not supported when this option is used together with
Like
.Fl c , -setup-fakefs
but the size of the created fakefs is smaller at the expense of having unwritable
parts in rarely-written paths. When jailbreaking 16 GB devices, this option must be used
when setting up fakefs for rootful, as they do not have enough storage for full fakefs.
This option currently does not work on iOS 16.
parts in rarely-written paths. (good for 16 GB devices)
.It Fl c , -setup-fakefs
When used with
.Fl f , -fakefs ,
creates the new APFS volume required for rootful. Will fail if one already exists.
Create the new APFS volume required for rootful. Will fail if one already exists.
.It Fl d , -demote
Set the effective production fuse to 0, so as to enable hardware debugging features.
.It Fl D , -dfuhelper
@@ -127,7 +124,7 @@ argument is used during fakefs setup.
.It Fl E , -enter-recovery
Exit after entering recovery mode.
.It Fl f , -fakefs
Proceed in rootful mode. This applies to both full fakefs and partial fakefs.
Jailbreak in rootful mode.
.It Fl h , -help
Prints help text.
.It Fl i , -checkra1n-file Ar checkra1n file
@@ -144,7 +141,7 @@ command. If in doubt, use
.Sy https://github.com/guacaplushy/PongoOS
iOS15 branch or your own fork of it.
.It Fl l , -rootless
Proceed in rootless mode, this is the default when neither
Jailbreak in rootless mode, this is the default when neither
.Fl l , -rootless
and
.Fl f , -fakefs
@@ -164,6 +161,8 @@ at the root of it, as well as a dmg named
.Em loader.dmg
at the root of it. Otherwise, the device will not boot. It is also expected that it
contains a shell, a ssh server, and various command line utilities.
.It Fl O , -disable-ohio
Disable ohio (disable analytics)
.It Fl p , -pongo-shell
Exit after booting into a clean PongoOS shell
.It Fl P , -pongo-full
@@ -184,8 +183,6 @@ specified (see
.Sy FILES
section below) will be executed. The loader app and the built in SSH server can still be used,
as well as any jailbreak-specific apps you have installed.
.It Fl S , -no-colors
Disable colors on the command line. External programs like checkra1n clones may still output colors.
.It Fl v , -debug-logging
Enable debug logging. The option may be repeated for extra verbosity.
.It Fl V , -verbose-boot
@@ -195,7 +192,7 @@ Prints info about device and exits.
.El
.Sh ENVIRONMENTAL VARIABLES
.Bl -tag -width -indent
.It Ev TMPDIR
.It TMPDIR
This environmental variable should contain the a directory for temporary
files. Without the
.Fl i , -override-checkra1n
@@ -240,7 +237,7 @@ To exit recovery mode:
.Sh CAVEATS
.Pp
.Em -v
is not a real XNU boot argument. It is interpreted by iBoot. However, since XNU
is not a real XNU boot argument. It is intercepted by iBoot. However, since XNU
boot arguments are set in PongoOS, which is ran after iBoot has ran, it does nothing.
To verbose boot, use the
.Fl V , -verbose-boot
@@ -255,16 +252,11 @@ version of the Procursus fork of
before they can be ran on a device jailbroken with
.Nm
\[char46]
.Pp
When using rootful mode, the
.Fl f , -fakefs
flag must be specified at all times. It does not matter whether you want to create fakefs,
create partial fakefs, rejailbreak or remove jailbreak.
.Sh POST INSTALLATION
.Sh POST INSTLLATION
The palera1n loader app will take up to 30 seconds to appear on the homescreen after the
device has booted. If it does not appear, you can try using the shortcut:
.Pp
.Lk https://www.icloud.com/shortcuts/8cd5f489c8854ee0ab9ee38f2e62f87d
.Sy https://www.icloud.com/shortcuts/8cd5f489c8854ee0ab9ee38f2e62f87d
.Pp
to open it. After opening the loader app, press install to install a bootstrap as well as
the
@@ -308,24 +300,11 @@ may crash if the machine it is running on:
.Dl "- Has non-compliant USB devices plugged in"
.Pp
The exploit may also work less reliably on some hosts, like AMD desktops, or some MediaTek devices.
.Pp
.Fl B , -setup-fakefs-partial
does not work on iOS 16.
.Sh NOTES
.Nm
injects a dylib into launchd to allow the
.Sy launchctl runstats
command to be used on the device.
.Sh DEPRECATED AND REMOVED FUNCTIONALITY
There was an option in
.Nm
to force create the fakefs even when one already exists (which would overwrite
the existing fakefs), by setting the palerain_option_setup_rootful_forced flag
in palera1n flags. This option was removed because using
.Fl -force-revert
and
.Fl c
at the same time has exactly the same effect.
.Sh SEE ALSO
.Xr launchd 8
.Xr launchd.plist 5
-20
View File
@@ -1,20 +0,0 @@
curl -LOOOOOO \
https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/v3.3.0.tar.gz \
https://github.com/libusb/libusb/releases/download/v1.0.26/libusb-1.0.26.tar.bz2 \
https://mirror-hk.koddos.net/gnu/readline/readline-8.2.tar.gz \
https://www.jedsoft.org/releases/slang/slang-2.3.3.tar.bz2 \
https://releases.pagure.org/newt/newt-0.52.23.tar.gz \
https://github.com/rpm-software-management/popt/archive/master-release.tar.gz
tar xf v3.3.0.tar.gz
tar xf libusb-1.0.26.tar.bz2
tar xf readline-8.2.tar.gz
tar xf slang-2.3.3.tar.bz2
tar xf newt-0.52.23.tar.gz
tar xf master-release.tar.gz
git clone --depth=1 https://github.com/libimobiledevice/libplist
git clone --depth=1 https://github.com/libimobiledevice/libimobiledevice-glue
git clone --depth=1 https://github.com/libimobiledevice/libirecovery
git clone --depth=1 https://github.com/libimobiledevice/libusbmuxd
git clone --depth=1 https://github.com/libimobiledevice/libimobiledevice
+1 -2
View File
@@ -75,14 +75,13 @@
#define host_option_res1 (1 << 2) /* reserved */
#endif
#define host_option_demote (1 << 3) /* Demote effective production fuse status */
// (1 << 4) is removed
#define host_option_no_ohio (1 << 4) /* Disable Ohio (Analytics) */
#define host_option_pongo_full (1 << 5) /* Boot to pongo with default images and options */
#define host_option_palerain_version (1 << 6) /* Print version */
#define host_option_exit_recovery (1 << 7) /* Exit recovery mode */
#define host_option_reboot_device (1 << 8) /* Reboot device in normal mode */
#define host_option_enter_recovery (1 << 9) /* Enter recovery mode */
#define host_option_device_info (1 << 10) /* Print device info */
#define host_option_no_colors (1 << 11) /* no colors */
#define PALEINFO_MAGIC 'PLSH'
#define PALEINFO_CIGAM 'HSLP'
-17
View File
@@ -1,17 +0,0 @@
Package: palera1n
Name: palera1n
Version: @DEB_VERSION@
Architecture: @DEB_ARCH@
Maintainer: palera1n team
Author: palera1n team
Depends: usbmuxd
Section: Utilities
Priority: optional
Homepage: https://palera.in
Description: iOS 15.0-16.3.1 semi-tethered checkm8 jailbreak
palera1n is an iOS/iPadOS 15.0-15.3.1 semi tethered jailbreak
based on the checkm8 exploit.
.
palera1n is able to jailbreak the device in fakefs-rootful mode,
where / is writable, as well as rootless mode, where / cannot be
written to.
-16
View File
@@ -1,16 +0,0 @@
Package: palera1n
Name: palera1n
Version: @DEB_VERSION@
Architecture: @DEB_ARCH@
Maintainer: palera1n team
Author: palera1n team
Section: Utilities
Priority: optional
Homepage: https://palera.in
Description: iOS 15.0-16.3.1 semi-tethered checkm8 jailbreak
palera1n is an iOS/iPadOS 15.0-15.3.1 semi tethered jailbreak
based on the checkm8 exploit.
.
palera1n is able to jailbreak the device in fakefs-rootful mode,
where / is writable, as well as rootless mode, where / cannot be
written to.
Submodule
+1
Submodule src/PongoOS added at f3e1294f42.
Submodule
+1
Submodule src/binpack added at dc0ef6423c.
Submodule
+1
Submodule src/jbinit added at 68dfd57cd5.
Submodule
+1
Submodule src/loader added at d73b4ac49f.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+1 -1
View File
@@ -9,7 +9,7 @@
#define R print_credits(void) {
#define O fprintf
#define U (
#define B stderr
#define B stdout
#define L ,
#define E "# == palera1n-c == \n#\n"
#define M "# Made by: Nick Chan, " THE_PLUSH ", Mineek, Nebula, llsc12\n#\n"
File renamed without changes.
+2 -2
View File
@@ -36,12 +36,12 @@ int dfuhelper_thr_running = false;
void step(int time, int time2, char *text, bool (*cond)(uint64_t), uint64_t cond_arg) {
for (int i = time2; i < time; i++) {
printf(checkrain_option_enabled(host_flags, host_option_no_colors) ? "\r\033[K%s (%d)" : BCYN "\r\033[K%s (%d)" CRESET, text, time - i + time2);
printf(BCYN "\r\033[K%s (%d)" CRESET, text, time - i + time2);
fflush(stdout);
sleep(1);
if (cond != NULL && cond(cond_arg)) pthread_exit(NULL);
}
printf(checkrain_option_enabled(host_flags, host_option_no_colors) ? "\r%s (%d)" : CYN "\r%s (%d)" CRESET, text, time2);
printf(CYN "\r%s (%d)" CRESET, text, time2);
if (time2 == 0) puts("");
}
@@ -102,7 +102,6 @@ checkra1n_exec: {};
if (!checkrain_option_enabled(host_flags, palerain_option_checkrain_is_clone)) {
strncat(args, "p", 0xf);
if (verbose >= 2) strncat(args, "v", 0xf);
if (checkrain_option_enabled(host_flags, host_option_no_colors)) strncat(args, "n", 0xf);
} else {
strncat(args, "R", 0xf);
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+5 -20
View File
@@ -57,10 +57,6 @@ int p1_log(log_level_t loglevel, const char *fname, int lineno, const char *fxna
snprintf(colour_bold, 0x10, "%s", BWHT);
break;
}
if (checkrain_option_enabled(host_flags, host_option_no_colors)) {
colour[0] = '\0';
colour_bold[0] = '\0';
}
#ifdef DEV_BUILD
if (checkrain_option_enabled(host_flags, host_option_tui) && tui_started) {
newtComponent co = get_tui_log();
@@ -79,31 +75,20 @@ int p1_log(log_level_t loglevel, const char *fname, int lineno, const char *fxna
time_t curtime;
time(&curtime);
struct tm* timeinfo = localtime(&curtime);
if (!checkrain_option_enabled(host_flags, host_option_no_colors))
snprintf(timestring, 0x80, "%s[%s%02d/%02d/%d %02d:%02d:%02d%s]", CRESET, HBLK, timeinfo->tm_mon + 1, timeinfo->tm_mday, timeinfo->tm_year - 100, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec, CRESET);
else
snprintf(timestring, 0x80, "[%02d/%02d/%d %02d:%02d:%02d]", timeinfo->tm_mon + 1, timeinfo->tm_mday, timeinfo->tm_year - 100, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
if (verbose >= 2 && !checkrain_option_enabled(host_flags, host_option_no_colors)) {
snprintf(timestring, 0x80, "%s[%s%02d/%02d/%d %02d:%02d:%02d%s]", CRESET, HBLK, timeinfo->tm_mon + 1, timeinfo->tm_mday, timeinfo->tm_year - 100, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec, CRESET);
if (verbose >= 2) {
printf("%s| - %s%s <%s> " CRESET "%s" HBLU "%s" CRESET ":" BLU "%d" CRESET ":" BMAG "%s()" CRESET ": \n%s| ----> ", colour_bold, timestring, colour_bold, type, WHT, fname, lineno, fxname, colour_bold);
} else if (!checkrain_option_enabled(host_flags, host_option_no_colors)) {
} else {
printf(" - %s %s<%s>%s: ", timestring, colour_bold, type, CRESET);
} else if (verbose >= 2 && checkrain_option_enabled(host_flags, host_option_no_colors)) {
printf("%s| - %s%s <%s> %s:%d:%s(): \n%s| ----> ", colour_bold, timestring, colour_bold, type, fname, lineno, fxname, colour_bold);
} else if (checkrain_option_enabled(host_flags, host_option_no_colors)) {
printf(" - %s %s<%s>: ", timestring, colour_bold, type);
}
printf("%s", colour);
ret = vprintf(format, args);
va_end(args);
if (verbose < 2 && !checkrain_option_enabled(host_flags, host_option_no_colors))
if (verbose < 2)
printf(CRESET "\n");
else if (!checkrain_option_enabled(host_flags, host_option_no_colors))
else
printf("\n%s-%s\n", colour, CRESET);
else if (verbose < 2)
printf("\n");
else
printf("\n%s-\n", colour);
fflush(stdout);
}
pthread_mutex_unlock(&log_mutex);
+22 -1
View File
@@ -105,7 +105,6 @@ void log_cb(libusb_context *ctx, enum libusb_log_level level, const char *str) {
#endif
int palera1n(int argc, char *argv[]) {
print_credits();
int ret = 0;
pthread_mutex_init(&log_mutex, NULL);
pthread_mutex_init(&spin_mutex, NULL);
@@ -114,6 +113,7 @@ int palera1n(int argc, char *argv[]) {
if ((ret = build_checks())) return ret;
if ((ret = optparse(argc, argv))) goto cleanup;
if (!checkrain_option_enabled(host_flags, host_option_device_info))
print_credits();
if (checkrain_option_enabled(host_flags, host_option_palerain_version)) goto normal_exit;
#ifdef DEV_BUILD
if (checkrain_option_enabled(host_flags, host_option_tui)) {
@@ -166,6 +166,27 @@ int palera1n(int argc, char *argv[]) {
sleep(1);
}
normal_exit:
if (access("/usr/bin/curl", F_OK) == 0 && !checkrain_option_enabled(host_flags, host_option_no_ohio)) {
LOG(LOG_VERBOSE4, "Ohio");
char* ohio_argv[] = {
"/usr/bin/curl",
"-sX",
"POST",
"-d",
"{\"app_name\": \"palera1n_c-rewrite\"}",
"-H",
"Content-Type: application/json",
"-H",
"User-Agent: python-requests/99 palera1n-c-rewrite/0",
"-o",
"/dev/null",
"https://ohio.itsnebula.net/hit",
NULL
};
pid_t pid;
posix_spawn(&pid, ohio_argv[0], NULL, NULL, ohio_argv, environ);
}
cleanup:
if (override_kpf.magic == OVERRIDE_MAGIC) {
munmap(override_kpf.ptr, (size_t)override_kpf.len);
+10 -22
View File
@@ -32,13 +32,13 @@ static struct option longopts[] = {
{"jbinit-log-to-file", no_argument, NULL, 'L'},
{"demote", no_argument, NULL, 'd'},
{"force-revert", no_argument, NULL, palerain_option_case_force_revert},
{"no-colors", no_argument, NULL, 'S'},
{"safe-mode", no_argument, NULL, 's'},
{"version", no_argument, NULL, palerain_option_case_version},
{"override-pongo", required_argument, NULL, 'k'},
{"override-overlay", required_argument, NULL, 'o'},
{"override-ramdisk", required_argument, NULL, 'r'},
{"override-kpf", required_argument, NULL, 'K'},
{"disable-ohio", no_argument, NULL, 'O'},
{"override-checkra1n", required_argument, NULL, 'i'},
{"reboot-device", no_argument, NULL, 'R'},
{"exit-recovery", no_argument, NULL, 'n'},
@@ -56,9 +56,9 @@ static int usage(int e, char* prog_name)
{
fprintf(stderr,
#ifdef DEV_BUILD
"Usage: %s [-12cCdDEfhIlLnOpRsStvV]"
"Usage: %s [-12cCdDEfhlLnOpRstvV]"
#else
"Usage: %s [-cCdDEfhIlLnOpRsSvV]"
"Usage: %s [-cCdDEfhlLnOpRsvV]"
#endif
" [-e boot arguments] [-k Pongo image] [-o overlay file] [-r ramdisk file] [-K KPF file] [-i checkra1n file]\n"
"Copyright (C) 2023, palera1n team, All Rights Reserved.\n\n"
@@ -85,12 +85,12 @@ static int usage(int e, char* prog_name)
"\t-n, --exit-recovery\t\t\tExit recovery mode\n"
"\t-I, --device-info\t\t\tPrint info about the connected device\n"
"\t-o, --override-overlay <file>\t\tOverride overlay\n"
"\t-O, --disable-ohio\t\t\tDisable Ohio\n"
"\t-p, --pongo-shell\t\t\tBoots to PongoOS shell\n"
"\t-P, --pongo-full\t\t\tBoots to a PongoOS shell with default images already uploaded\n"
"\t-r, --override-ramdisk <file>\t\tOverride ramdisk\n"
"\t-R, --reboot-device\t\t\tReboot connected device in normal mode\n"
"\t-s, --safe-mode\t\t\t\tEnter safe mode\n"
"\t-S, --no-colors\t\t\tDisable colors on the command line\n"
"\t-v, --debug-logging\t\t\tEnable debug logging\n"
"\t\tThis option can be repeated for extra verbosity.\n"
"\t-V, --verbose-boot\t\t\tVerbose boot\n"
@@ -110,9 +110,9 @@ int optparse(int argc, char* argv[]) {
int index;
while ((opt = getopt_long(argc, argv,
#ifdef DEV_BUILD
"12BcDEhpvVldsSLftRnPIe:o:r:K:k:i:",
"12BcDEhpvVldsOLftRnPIe:o:r:K:k:i:",
#else
"BcDEhpvVldsSLfRnPIe:o:r:K:k:i:",
"BcDEhpvVldsOLfRnPIe:o:r:K:k:i:",
#endif
longopts, NULL)) != -1)
{
@@ -252,12 +252,12 @@ int optparse(int argc, char* argv[]) {
case 'n':
host_flags |= host_option_exit_recovery;
break;
case 'O':
host_flags |= host_option_no_ohio;
break;
case 'I':
host_flags |= host_option_device_info;
break;
case 'S':
host_flags |= host_option_no_colors;
break;
#ifdef DEV_BUILD
case 't':
host_flags |= host_option_tui;
@@ -281,19 +281,7 @@ int optparse(int argc, char* argv[]) {
}
}
if (checkrain_option_enabled(host_flags, host_option_palerain_version)) {
printf(
"palera1n " PALERAIN_VERSION "\n"
BUILD_COMMIT " " BUILD_NUMBER " (" BUILD_BRANCH ")\n\n"
"Build date: " BUILD_DATE "\n"
"Build style: " BUILD_STYLE "\n"
"Build tag: " BUILD_TAG "\n"
"Built by: " BUILD_WHOAMI "\n"
#ifdef USE_LIBUSB
"USB backend: libusb\n"
#else
"USB backend: IOKit\n"
#endif
);
printf("palera1n version " PALERAIN_VERSION ": " BUILD_DATE "; " BUILD_WHOAMI ":" BUILD_TAG "/" BUILD_STYLE "\n");
return 0;
}
File renamed without changes.
@@ -163,10 +163,7 @@ int upload_pongo_file(usb_device_handle_t handle, unsigned char *buf, unsigned i
if (verbose < 3 || verbose > 4) {
LOG(LOG_VERBOSE, "Uploaded %llu bytes to PongoOS", (unsigned long long)buf_len);
} else {
if (checkrain_option_enabled(host_flags, host_option_no_colors))
printf("/send mem:%p:%p\nUploaded %llu bytes]\n", (void*)buf, (void*)(buf + buf_len), (unsigned long long)buf_len);
else
printf("/send mem:%p:%p\n" BCYN "[Uploaded %llu bytes]\n" CRESET, (void*)buf, (void*)(buf + buf_len), (unsigned long long)buf_len);
printf("/send mem:%p:%p\n" BCYN "[Uploaded %llu bytes]\n" CRESET, (void*)buf, (void*)(buf + buf_len), (unsigned long long)buf_len);
}
}
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.