You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Android_boot_image_editor/boot.mk

94 lines
3.3 KiB
Makefile

.DEFAULT_GOAL := flat
SHELL := /bin/bash
WORK_DIR := unzip_boot
help:
@echo "flat : boot.subimg -> unzip_boot/*"
@echo "boot.img : unsigned boot image"
@echo "boot.subimg : signed boot image"
@echo "addon : (recovery only) add additional tools"
.PHONY: flat
flat:
rm -fr $(WORK_DIR)
mkdir -p $(WORK_DIR)/root
abootimg -x boot.subimg $(WORK_DIR)/bootimg.cfg $(this_kernel) $(this_ramdisk).gz
gzip -c -d $(this_ramdisk).gz > $(this_ramdisk)
rm $(this_ramdisk).gz
cd $(WORK_DIR)/root && \
cpio -i -F ../ramdisk.img
@rm $(WORK_DIR)/ramdisk.img
@echo && echo "===================================" && file $(WORK_DIR)/* && echo "==================================="
kernel_cmdline := "$(shell grep -Po '(?<=cmdline = ).*' $(WORK_DIR)/bootimg.cfg)"
this_root := $(WORK_DIR)/root
this_kernel := $(WORK_DIR)/kernel
this_ramdisk := $(WORK_DIR)/ramdisk.img
ifeq '$(TARGET_PRODUCT)' ''
$(warning NON-android)
this_verity_key := tools/security/verity
else
$(warning android)
this_verity_key := build/target/product/security/verity
endif
.INTERMEDIATE: $(this_ramdisk).gz boot.img
$(this_ramdisk).gz: $(this_root)
mkbootfs $< | gzip > $@
boot.img: $(this_ramdisk).gz $(this_kernel)
mkbootimg \
--kernel $(this_kernel) \
--ramdisk $(this_ramdisk).gz \
--cmdline "$(shell echo $(kernel_cmdline))" \
--base 0x01000000 \
--output $@
boot.subimg: boot.img
$(call signer,/boot,$<,$@)
define signer
boot_signer $(1) $(2) $(this_verity_key).pk8 $(this_verity_key).x509.pem $(3)
endef
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
real_mkfile_path := $(shell readlink $(mkfile_path))
libs := libc.so libcrypto.so libcutils.so libm.so libselinux.so libstdc++.so libpcre.so liblog.so libnetutils.so libsysutils.so libutils.so libbacktrace.so libstlport.so libgccdemangle.so libunwind.so libunwind-ptrace.so
bins := toolbox sh linker netcfg logd logcat
addon: | unzip_boot/root/system/bin
addon: | unzip_boot/root/system/lib
addon: INITRC := unzip_boot/root/init.recovery.marvellberlin.rc
addon:
#initrc
echo "service console /system/bin/sh" > $(INITRC)
echo " console" >> $(INITRC)
echo " user root" >> $(INITRC)
echo " group root" >> $(INITRC)
echo >> $(INITRC)
echo "service logd /system/bin/logd" >> $(INITRC)
echo " socket logd stream 0666 logd logd" >> $(INITRC)
echo " socket logdr seqpacket 0666 logd logd" >> $(INITRC)
echo " socket logdw dgram 0222 logd logd" >> $(INITRC)
echo " seclabel u:r:logd:s0" >> $(INITRC)
#recovery
#cp out/target/product/$(TARGET_PRODUCT)/system/bin/recovery unzip_boot/root/sbin/
#@cp -v out/target/product/$(TARGET_PRODUCT)/obj/EXECUTABLES/recovery_intermediates/recovery unzip_boot/root/sbin/
#bin
@$(foreach item,$(bins), \
cp -v out/target/product/$(TARGET_PRODUCT)/system/bin/$(item) unzip_boot/root/system/bin/; $(newline))
#lib
@$(foreach item,$(libs), \
cp -v out/target/product/$(TARGET_PRODUCT)/system/lib/$(item) unzip_boot/root/system/lib/; $(newline))
#@cp -v out/target/product/$(TARGET_PRODUCT)/system/etc/sepolicy.recovery unzip_boot/root/sepolicy
@cp -v out/target/product/$(TARGET_PRODUCT)/obj/ETC/sepolicy.recovery_intermediates/sepolicy.recovery unzip_boot/root/sepolicy
unzip_boot/root/system/bin:
mkdir $@
unzip_boot/root/system/lib:
mkdir $@
#service console /system/bin/sh
# console
# user root
# group root