debian-galaxy-a20e/makefile

82 lines
3.8 KiB
Makefile
Raw Normal View History

2026-08-27 13:48:54 +00:00
.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"