82 lines
3.8 KiB
Makefile
82 lines
3.8 KiB
Makefile
.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"
|