Compressed ramdisk support

This commit is contained in:
Nick Chan committed 2023-10-30 17:37:46 +08:00
1 parent f2ac3ae8d7
commit 6f30ad8314
8 files changed
+30 -14

No files matched your search

+1
View File
@@ -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
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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;
+14 -3
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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;
+2 -2
View File
@@ -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) {
+7 -3
View File
@@ -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)