diff --git a/.gitignore b/.gitignore index 058486e..9e6e726 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ src/palera1n !xxd-embedded.h src/binpack.dmg src/ramdisk.dmg +src/ramdisk.dmg.lzma src/xxd-*.c .DS_Store !palera1n.1 diff --git a/Makefile b/Makefile index b972b5d..a1b96a8 100644 --- a/Makefile +++ b/Makefile @@ -62,7 +62,7 @@ CFLAGS += -DBUILD_WHOAMI="\"$(BUILD_WHOAMI)\"" -DBUILD_TAG="\"$(BUILD_TAG)\"" CFLAGS += -DBUILD_NUMBER="\"$(BUILD_NUMBER)\"" -DBUILD_BRANCH="\"$(BUILD_BRANCH)\"" CFLAGS += -DBUILD_COMMIT="\"$(BUILD_COMMIT)\"" -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 SHELL TARGET_OS DEV_BUILD BUILD_DATE BUILD_TAG BUILD_WHOAMI BUILD_STYLE BUILD_NUMBER BUILD_BRANCH all: palera1n diff --git a/include/xxd-embedded.h b/include/xxd-embedded.h index 027a4d6..8ac0617 100644 --- a/include/xxd-embedded.h +++ b/include/xxd-embedded.h @@ -11,8 +11,8 @@ extern unsigned int checkra1n_len; extern unsigned char checkra1n_kpf_pongo[]; extern unsigned int checkra1n_kpf_pongo_len; -extern unsigned char ramdisk_dmg[]; -extern unsigned int ramdisk_dmg_len; +extern unsigned char ramdisk_dmg_lzma[]; +extern unsigned int ramdisk_dmg_lzma_len; extern unsigned char binpack_dmg[]; extern unsigned int binpack_dmg_len; diff --git a/src/Makefile b/src/Makefile index 6316800..3b35254 100644 --- a/src/Makefile +++ b/src/Makefile @@ -18,9 +18,9 @@ BUILD_OPTIONS += FORCE_HELPER endif ifneq ($(NO_RAMDISK),1) -OBJECTS += xxd-ramdisk.dmg.o +OBJECTS += xxd-ramdisk.dmg.lzma.o else -CFLAGS += -DNO_RAMDISK +CFLAGS += -DNO_RAMDISK -DRAMDISK_COMPRESSED_SIZE=\"0\" BUILD_OPTIONS += NO_RAMDISK endif ifneq ($(NO_KPF),1) @@ -122,6 +122,14 @@ endif xxd-%.c: % xxd -iC $< > $@ +ifneq ($(NO_RAMDISK),1) +pongo_helper.o: pongo_helper.c $(wildcard ../include/*.h) ramdisk.dmg + $(CC) -c $(CFLAGS) -DRAMDISK_UNCOMPRESSED_SIZE="\"$$(wc -c < ramdisk.dmg | tr -d ' ')\"" $< +else +pongo_helper.o: pongo_helper.c $(wildcard ../include/*.h) + $(CC) -c $(CFLAGS) $< +endif + %.o: %.c $(wildcard ../include/*.h) $(CC) -c $(CFLAGS) $< @@ -139,6 +147,9 @@ libcheckra1nhelper.dylib: chkstk.S checkra1n-kpf-pongo: curl -LO https://cdn.nickchan.lol/palera1n/artifacts/kpf/iOS15/checkra1n-kpf-pongo +ramdisk.dmg.lzma: ramdisk.dmg + xz --format=lzma -vf6ekT 0 ramdisk.dmg + ramdisk.dmg: curl -LO https://cdn.nickchan.lol/palera1n/c-rewrite/deps/ramdisk.dmg @@ -149,6 +160,6 @@ Pongo.bin: curl -LO https://cdn.nickchan.lol/palera1n/artifacts/kpf/iOS15/Pongo.bin clean: - rm -rf *.o palera1n checkra1n checkra1n.c palera1n.dSYM libcheckra1nhelper.dylib + rm -rf *.o palera1n checkra1n checkra1n.c palera1n.dSYM ramdisk.dmg.lzma libcheckra1nhelper.dylib .PHONY: all clean diff --git a/src/fake_embedded.c b/src/fake_embedded.c index 5571605..17dd279 100644 --- a/src/fake_embedded.c +++ b/src/fake_embedded.c @@ -6,8 +6,8 @@ unsigned int checkra1n_kpf_pongo_len = 0; #endif #ifdef NO_RAMDISK -unsigned char* ramdisk_dmg = NULL; -unsigned int ramdisk_dmg_len = 0; +unsigned char* ramdisk_dmg_lzma = NULL; +unsigned int ramdisk_dmg_lzma_len = 0; #endif #ifdef NO_CHECKRAIN diff --git a/src/main.c b/src/main.c index 6b1b324..7908664 100644 --- a/src/main.c +++ b/src/main.c @@ -37,7 +37,7 @@ char xargs_cmd[0x270] = "xargs ", palerain_flags_cmd[0x30] = "deadbeef"; extern char** environ; niarelap_file_t* kpf_to_upload_1 = &checkra1n_kpf_pongo; -niarelap_file_t* ramdisk_to_upload_1 = &ramdisk_dmg; +niarelap_file_t* ramdisk_to_upload_1 = &ramdisk_dmg_lzma; niarelap_file_t* overlay_to_upload_1 = &binpack_dmg; niarelap_file_t** kpf_to_upload = &kpf_to_upload_1; diff --git a/src/optparse.c b/src/optparse.c index 7f151ca..6631c97 100644 --- a/src/optparse.c +++ b/src/optparse.c @@ -207,7 +207,7 @@ int optparse(int argc, char* argv[]) { return 1; break; case 'r': - if (override_file(&override_ramdisk, ramdisk_to_upload, &ramdisk_dmg_len, optarg)) + if (override_file(&override_ramdisk, ramdisk_to_upload, &ramdisk_dmg_lzma_len, optarg)) return 1; break; case 'K': @@ -331,7 +331,7 @@ int optparse(int argc, char* argv[]) { LOG(LOG_VERBOSE4, "kpf override ptr %p -> %p", override_kpf.orig_ptr, **kpf_to_upload); } if (override_ramdisk.magic == OVERRIDE_MAGIC) { - LOG(LOG_VERBOSE4, "ramdisk override length %u -> %u", override_ramdisk.orig_len, ramdisk_dmg_len); + LOG(LOG_VERBOSE4, "ramdisk override length %u -> %u", override_ramdisk.orig_len, ramdisk_dmg_lzma_len); LOG(LOG_VERBOSE4, "ramdisk override ptr %p -> %p", override_ramdisk.orig_ptr, **ramdisk_to_upload); } if (override_overlay.magic == OVERRIDE_MAGIC) { diff --git a/src/pongo_helper.c b/src/pongo_helper.c index fd4d5c1..47323b9 100644 --- a/src/pongo_helper.c +++ b/src/pongo_helper.c @@ -49,12 +49,16 @@ void *pongo_usb_callback(stuff_t *arg) { issue_pongo_command(handle, "rootfs"); } #ifdef NO_RAMDISK - if (ramdisk_dmg_len != 0) + if (ramdisk_dmg_lzma_len != 0) #endif { strncat(xargs_cmd, " rootdev=md0", 0x270 - strlen(xargs_cmd) - 1); - upload_pongo_file(handle, **ramdisk_to_upload, ramdisk_dmg_len); - issue_pongo_command(handle, "ramdisk"); + upload_pongo_file(handle, **ramdisk_to_upload, ramdisk_dmg_lzma_len); + if (&(**ramdisk_to_upload) == &ramdisk_dmg_lzma) + issue_pongo_command(handle, "ramdisk " RAMDISK_UNCOMPRESSED_SIZE); + else { + issue_pongo_command(handle, "ramdisk"); + } } #ifdef NO_OVERLAY if (binpack_dmg_len != 0)