.PHONY: all clean pack repack-ramdisk repack-boot create-zip WORK_DIR := $(PWD) BOOT_IMG := boot.img KERNEL_FILE := extracted_boot/kernel RAMDISK_DIR := ramdisk ROOTFS_DIR := debian_a20e OUTPUT_ZIP := debian_a20e.zip TEMP_DIR := temp_build # Sizes and offsets KERNEL_OFFSET := 0xE64800 RAMDISK_OFFSET := 0x1ED5800 all: create-zip repack-ramdisk: @echo "Repacking ramdisk..." @mkdir -p $(TEMP_DIR) @cd $(RAMDISK_DIR) && find . -print0 | cpio -0 -o -H newc | gzip > ../$(TEMP_DIR)/ramdisk.cpio.gz @echo "Ramdisk repacked: $(TEMP_DIR)/ramdisk.cpio.gz" repack-boot: repack-ramdisk @echo "Repacking boot.img..." @mkdir -p $(TEMP_DIR)/boot # Extract kernel @dd if=$(BOOT_IMG) bs=1 skip=$$(($(KERNEL_OFFSET))) count=$$(stat -f%z "$(KERNEL_FILE)" 2>/dev/null || stat -c%s "$(KERNEL_FILE)") of=$(TEMP_DIR)/boot/kernel 2>/dev/null || true # Copy repacked ramdisk @cp $(TEMP_DIR)/ramdisk.cpio.gz $(TEMP_DIR)/boot/ramdisk.cpio.gz # Repack with mkbootimg (u might need to adjust args based on original) @mkbootimg --kernel $(TEMP_DIR)/boot/kernel --ramdisk $(TEMP_DIR)/boot/ramdisk.cpio.gz --output $(TEMP_DIR)/boot.img --pagesize 2048 2>/dev/null || echo "mkbootimg not found, using original boot.img" @test -f $(TEMP_DIR)/boot.img || cp $(BOOT_IMG) $(TEMP_DIR)/boot.img @echo "Boot.img repacked" create-rootfs-tar: @echo "Creating rootfs tarball..." @mkdir -p $(TEMP_DIR) @cd $(ROOTFS_DIR) && tar czf ../$(TEMP_DIR)/system.tar.gz . 2>/dev/null || tar czf ../$(TEMP_DIR)/system.tar.gz --exclude=proc --exclude=sys . @echo "Rootfs tarball created" create-zip: repack-boot create-rootfs-tar @echo "Creating flashable zip..." @mkdir -p $(TEMP_DIR)/debian_rom # Copy META-INF (TWRP needs this) @mkdir -p $(TEMP_DIR)/debian_rom/META-INF/com/google/android @echo "ui_print(\"Installing Debian A20e...\");" > $(TEMP_DIR)/debian_rom/META-INF/com/google/android/update-binary @chmod +x $(TEMP_DIR)/debian_rom/META-INF/com/google/android/update-binary @echo "ui_print(\"Done\");" > $(TEMP_DIR)/debian_rom/META-INF/com/google/android/updater-script # Copy boot and rootfs @cp $(TEMP_DIR)/boot.img $(TEMP_DIR)/debian_rom/boot.img @cp $(TEMP_DIR)/system.tar.gz $(TEMP_DIR)/debian_rom/system.tar.gz # Create flash script @echo "#!/sbin/sh" > $(TEMP_DIR)/debian_rom/flash_debian.sh @echo "OUTFD=\$$2" >> $(TEMP_DIR)/debian_rom/flash_debian.sh @echo "PARTITION=\$$(getprop ro.boot.bootdevice)" >> $(TEMP_DIR)/debian_rom/flash_debian.sh @echo "ui_print \"Flashing boot.img...\" >&\$$OUTFD" >> $(TEMP_DIR)/debian_rom/flash_debian.sh @echo "dd if=/sdcard/debian_rom/boot.img of=/dev/block/bootdevice/by-name/boot" >> $(TEMP_DIR)/debian_rom/flash_debian.sh @echo "ui_print \"Formatting and extracting rootfs...\" >&\$$OUTFD" >> $(TEMP_DIR)/debian_rom/flash_debian.sh @echo "mkfs.ext4 /dev/block/mmcblk0p32" >> $(TEMP_DIR)/debian_rom/flash_debian.sh @echo "mount /dev/block/mmcblk0p32 /mnt/root" >> $(TEMP_DIR)/debian_rom/flash_debian.sh @echo "cd /mnt/root && tar xzf /sdcard/debian_rom/system.tar.gz" >> $(TEMP_DIR)/debian_rom/flash_debian.sh @echo "umount /mnt/root" >> $(TEMP_DIR)/debian_rom/flash_debian.sh @echo "ui_print \"Installation complete!\" >&\$$OUTFD" >> $(TEMP_DIR)/debian_rom/flash_debian.sh @chmod +x $(TEMP_DIR)/debian_rom/flash_debian.sh # Zip it up @cd $(TEMP_DIR)/debian_rom && zip -r ../../$(OUTPUT_ZIP) . -q @echo "Flashable zip created: $(OUTPUT_ZIP)" clean: @echo "Cleaning up..." @rm -rf $(TEMP_DIR) $(OUTPUT_ZIP) @echo "Done" help: @echo "Available targets:" @echo " make all - Build everything and create flashable zip" @echo " make repack-ramdisk - Repack ramdisk from ramdisk/ directory" @echo " make repack-boot - Repack boot.img" @echo " make create-zip - Create flashable TWRP zip" @echo " make clean - Clean up build artifacts" @echo " make help - Show this help message"