Adding boot-debug.img and ramdisk-debug.img
The two new debugging images adds additional files based on
boot.img and ramdisk.img/ramdisk-recovery.img, respectively.
File /force_debuggable is to trigger special logic in /init to load an
userdebug version of sepolicy and an additional property file from this
ramdisk to allow adb root, if the device is unlocked.
It's intentional to skip signing for boot-debug.img, as it can
only be used if the device is unlocked, where verification error
is allowed.
Those debugging images allows adb root on user build
system.img, vendor.img, product.img, etc. This can facilitate more
automated testings on user builds and is helpful to narrow down the
delta between what's being tested v.s. what's being shipped.
Bug: 126493225
Test: `make dist`, checks both boot-debug.img and ramdisk-debug.img
are in $OUT/ and out/dist.
Test: `make dist`, checks installed-files-ramdisk-debug.{json,txt} are
in out/dist.
Test: `system/core/mkbootimg/unpack_bootimg.py --boot_img $OUT/boot-debug.img`,
checks the extracted out/ramdisk is as expected
Test: Run `gunzip -c ramdisk | cpio -idm` for the ramdisk extracted from
$OUT/boot-debug.img and $OUT/boot.img, respectively.
Then compare the root dirs of both, e.g.,
`diff -rq --no-dereference ./ramdisk ./ramdisk-debug`
Test: `make ramdisk_debug-nodeps` and `make bootimage_debug-nodeps`
Change-Id: I30137c3caef91805d9143d404e5e4d06c0fccc30
Merged-In: I30137c3caef91805d9143d404e5e4d06c0fccc30
(cherry picked from commit 0013f55ef4
)
This commit is contained in:
parent
19ecb76b7b
commit
d82a1549f1
5 changed files with 124 additions and 0 deletions
100
core/Makefile
100
core/Makefile
|
@ -1990,6 +1990,106 @@ ifneq ($(BOARD_NAND_SPARE_SIZE),)
|
|||
$(error MTD device is no longer supported and thus BOARD_NAND_SPARE_SIZE is deprecated.)
|
||||
endif
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# the debug ramdisk, which is the original ramdisk plus additional
|
||||
# files: force_debuggable, adb_debug.prop and userdebug sepolicy.
|
||||
# When /force_debuggable is present, /init will load userdebug sepolicy
|
||||
# and property files to allow adb root, if the device is unlocked.
|
||||
|
||||
ifdef BUILDING_RAMDISK_IMAGE
|
||||
BUILT_DEBUG_RAMDISK_TARGET := $(PRODUCT_OUT)/ramdisk-debug.img
|
||||
INSTALLED_DEBUG_RAMDISK_TARGET := $(BUILT_DEBUG_RAMDISK_TARGET)
|
||||
|
||||
INTERNAL_DEBUG_RAMDISK_FILES := $(filter $(TARGET_DEBUG_RAMDISK_OUT)/%, \
|
||||
$(ALL_GENERATED_SOURCES) \
|
||||
$(ALL_DEFAULT_INSTALLED_MODULES))
|
||||
|
||||
# Note: TARGET_DEBUG_RAMDISK_OUT will be $(PRODUCT_OUT)/debug_ramdisk/first_stage_ramdisk,
|
||||
# if BOARD_USES_RECOVERY_AS_BOOT is true. Otherwise, it will be $(PRODUCT_OUT)/debug_ramdisk.
|
||||
# But the root dir of the ramdisk to build is always $(PRODUCT_OUT)/debug_ramdisk.
|
||||
my_debug_ramdisk_root_dir := $(PRODUCT_OUT)/debug_ramdisk
|
||||
|
||||
INSTALLED_FILES_FILE_DEBUG_RAMDISK := $(PRODUCT_OUT)/installed-files-ramdisk-debug.txt
|
||||
INSTALLED_FILES_JSON_DEBUG_RAMDISK := $(INSTALLED_FILES_FILE_DEBUG_RAMDISK:.txt=.json)
|
||||
$(INSTALLED_FILES_FILE_DEBUG_RAMDISK): .KATI_IMPLICIT_OUTPUTS := $(INSTALLED_FILES_JSON_DEBUG_RAMDISK)
|
||||
$(INSTALLED_FILES_FILE_DEBUG_RAMDISK): DEBUG_RAMDISK_ROOT_DIR := $(my_debug_ramdisk_root_dir)
|
||||
|
||||
# Cannot just depend on INTERNAL_DEBUG_RAMDISK_FILES like other INSTALLED_FILES_FILE_* rules.
|
||||
# Because ramdisk-debug.img will rsync from either ramdisk.img or ramdisk-recovery.img.
|
||||
# Need to depend on the built ramdisk-debug.img, to get a complete list of the installed files.
|
||||
$(INSTALLED_FILES_FILE_DEBUG_RAMDISK) : $(INSTALLED_DEBUG_RAMDISK_TARGET)
|
||||
$(INSTALLED_FILES_FILE_DEBUG_RAMDISK) : $(INTERNAL_DEBUG_RAMDISK_FILES) $(FILESLIST)
|
||||
echo Installed file list: $@
|
||||
mkdir -p $(dir $@)
|
||||
rm -f $@
|
||||
$(FILESLIST) $(DEBUG_RAMDISK_ROOT_DIR) > $(@:.txt=.json)
|
||||
build/make/tools/fileslist_util.py -c $(@:.txt=.json) > $@
|
||||
|
||||
# ramdisk-debug.img will rsync the content from either ramdisk.img or ramdisk-recovery.img,
|
||||
# depending on whether BOARD_USES_RECOVERY_AS_BOOT is set or not.
|
||||
ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true)
|
||||
my_debug_ramdisk_sync_dir := $(TARGET_RECOVERY_ROOT_OUT)
|
||||
else
|
||||
my_debug_ramdisk_sync_dir := $(TARGET_RAMDISK_OUT)
|
||||
endif # BOARD_USES_RECOVERY_AS_BOOT
|
||||
|
||||
$(INSTALLED_DEBUG_RAMDISK_TARGET): DEBUG_RAMDISK_SYNC_DIR := $(my_debug_ramdisk_sync_dir)
|
||||
$(INSTALLED_DEBUG_RAMDISK_TARGET): DEBUG_RAMDISK_ROOT_DIR := $(my_debug_ramdisk_root_dir)
|
||||
# We should have just depended on ramdisk.img or ramdisk-recovery.img.
|
||||
# But ramdisk-recovery.img is not a make target, so let's depend on the boot.img directly.
|
||||
$(INSTALLED_DEBUG_RAMDISK_TARGET): $(INSTALLED_BOOTIMAGE_TARGET)
|
||||
$(INSTALLED_DEBUG_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_DEBUG_RAMDISK_FILES) | $(MINIGZIP)
|
||||
$(call pretty,"Target debug ram disk: $@")
|
||||
mkdir -p $(TARGET_DEBUG_RAMDISK_OUT)
|
||||
touch $(TARGET_DEBUG_RAMDISK_OUT)/force_debuggable
|
||||
rsync -a $(DEBUG_RAMDISK_SYNC_DIR)/* $(DEBUG_RAMDISK_ROOT_DIR)
|
||||
$(MKBOOTFS) -d $(TARGET_OUT) $(DEBUG_RAMDISK_ROOT_DIR) | $(MINIGZIP) > $@
|
||||
|
||||
.PHONY: ramdisk_debug-nodeps
|
||||
ramdisk_debug-nodeps: DEBUG_RAMDISK_SYNC_DIR := $(my_debug_ramdisk_sync_dir)
|
||||
ramdisk_debug-nodeps: DEBUG_RAMDISK_ROOT_DIR := $(my_debug_ramdisk_root_dir)
|
||||
ramdisk_debug-nodeps: $(MKBOOTFS) | $(MINIGZIP)
|
||||
echo "make $@: ignoring dependencies"
|
||||
mkdir -p $(TARGET_DEBUG_RAMDISK_OUT)
|
||||
touch $(TARGET_DEBUG_RAMDISK_OUT)/force_debuggable
|
||||
rsync -a $(DEBUG_RAMDISK_SYNC_DIR)/* $(DEBUG_RAMDISK_ROOT_DIR)
|
||||
$(MKBOOTFS) -d $(TARGET_OUT) $(DEBUG_RAMDISK_ROOT_DIR) | $(MINIGZIP) > $(INSTALLED_DEBUG_RAMDISK_TARGET)
|
||||
|
||||
my_debug_ramdisk_sync_dir :=
|
||||
my_debug_ramdisk_root_dir :=
|
||||
|
||||
endif # BUILDING_RAMDISK_IMAGE
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# the boot-debug.img, which is the kernel plus ramdisk-debug.img
|
||||
#
|
||||
# Note: it's intentional to skip signing for boot-debug.img, because it
|
||||
# can only be used if the device is unlocked with verification error.
|
||||
ifneq ($(strip $(TARGET_NO_KERNEL)),true)
|
||||
|
||||
INSTALLED_DEBUG_BOOTIMAGE_TARGET := $(PRODUCT_OUT)/boot-debug.img
|
||||
|
||||
# Replace ramdisk.img in $(MKBOOTIMG) ARGS with ramdisk-debug.img to build boot-debug.img
|
||||
ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true)
|
||||
INTERNAL_DEBUG_BOOTIMAGE_ARGS := $(subst $(recovery_ramdisk),$(INSTALLED_DEBUG_RAMDISK_TARGET), $(INTERNAL_RECOVERYIMAGE_ARGS))
|
||||
else
|
||||
INTERNAL_DEBUG_BOOTIMAGE_ARGS := $(subst $(INSTALLED_RAMDISK_TARGET),$(INSTALLED_DEBUG_RAMDISK_TARGET), $(INTERNAL_BOOTIMAGE_ARGS))
|
||||
endif
|
||||
|
||||
# Depends on original boot.img and ramdisk-debug.img, to build the new boot-debug.img
|
||||
$(INSTALLED_DEBUG_BOOTIMAGE_TARGET): $(MKBOOTIMG) $(INSTALLED_BOOTIMAGE_TARGET) $(INSTALLED_DEBUG_RAMDISK_TARGET)
|
||||
$(call pretty,"Target boot debug image: $@")
|
||||
$(MKBOOTIMG) $(INTERNAL_DEBUG_BOOTIMAGE_ARGS) $(INTERNAL_MKBOOTIMG_VERSION_ARGS) $(BOARD_MKBOOTIMG_ARGS) --output $@
|
||||
$(call assert-max-image-size,$@,$(BOARD_BOOTIMAGE_PARTITION_SIZE))
|
||||
|
||||
.PHONY: bootimage_debug-nodeps
|
||||
bootimage_debug-nodeps: $(MKBOOTIMG)
|
||||
echo "make $@: ignoring dependencies"
|
||||
$(MKBOOTIMG) $(INTERNAL_DEBUG_BOOTIMAGE_ARGS) $(INTERNAL_MKBOOTIMG_VERSION_ARGS) $(BOARD_MKBOOTIMG_ARGS) --output $(INSTALLED_DEBUG_BOOTIMAGE_TARGET)
|
||||
$(call assert-max-image-size,$(INSTALLED_DEBUG_BOOTIMAGE_TARGET),$(BOARD_BOOTIMAGE_PARTITION_SIZE))
|
||||
|
||||
endif # TARGET_NO_KERNEL
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# system image
|
||||
#
|
||||
|
|
|
@ -236,6 +236,12 @@ ifeq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
|
|||
TARGET_COPY_OUT_RAMDISK := $(TARGET_COPY_OUT_ROOT)
|
||||
endif
|
||||
|
||||
###########################################
|
||||
# Now we can substitute with the real value of TARGET_COPY_OUT_DEBUG_RAMDISK
|
||||
ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true)
|
||||
TARGET_COPY_OUT_DEBUG_RAMDISK := debug_ramdisk/first_stage_ramdisk
|
||||
endif
|
||||
|
||||
###########################################
|
||||
# Configure whether we're building the system image
|
||||
BUILDING_SYSTEM_IMAGE := true
|
||||
|
|
|
@ -1171,7 +1171,9 @@ dont_bother_goals := out \
|
|||
onod odmimage-nodeps \
|
||||
systemotherimage-nodeps \
|
||||
ramdisk-nodeps \
|
||||
ramdisk_debug-nodeps \
|
||||
bootimage-nodeps \
|
||||
bootimage_debug-nodeps \
|
||||
recoveryimage-nodeps \
|
||||
vbmetaimage-nodeps \
|
||||
product-graph dump-products
|
||||
|
|
|
@ -225,6 +225,7 @@ TARGET_COPY_OUT_DATA := data
|
|||
TARGET_COPY_OUT_ASAN := $(TARGET_COPY_OUT_DATA)/asan
|
||||
TARGET_COPY_OUT_OEM := oem
|
||||
TARGET_COPY_OUT_RAMDISK := ramdisk
|
||||
TARGET_COPY_OUT_DEBUG_RAMDISK := debug_ramdisk
|
||||
TARGET_COPY_OUT_ROOT := root
|
||||
TARGET_COPY_OUT_RECOVERY := recovery
|
||||
# The directory used for optional partitions depend on the BoardConfig, so
|
||||
|
@ -840,6 +841,7 @@ TARGET_OUT_COVERAGE := $(PRODUCT_OUT)/coverage
|
|||
|
||||
TARGET_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RAMDISK)
|
||||
TARGET_RAMDISK_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)
|
||||
TARGET_DEBUG_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DEBUG_RAMDISK)
|
||||
|
||||
TARGET_ROOT_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ROOT)
|
||||
TARGET_ROOT_OUT_BIN := $(TARGET_ROOT_OUT)/bin
|
||||
|
|
14
core/main.mk
14
core/main.mk
|
@ -1429,6 +1429,9 @@ endif
|
|||
.PHONY: ramdisk
|
||||
ramdisk: $(INSTALLED_RAMDISK_TARGET)
|
||||
|
||||
.PHONY: ramdisk_debug
|
||||
ramdisk_debug: $(INSTALLED_DEBUG_RAMDISK_TARGET)
|
||||
|
||||
.PHONY: systemtarball
|
||||
systemtarball: $(INSTALLED_SYSTEMTARBALL_TARGET)
|
||||
|
||||
|
@ -1475,6 +1478,9 @@ superimage_empty: $(INSTALLED_SUPERIMAGE_EMPTY_TARGET)
|
|||
.PHONY: bootimage
|
||||
bootimage: $(INSTALLED_BOOTIMAGE_TARGET)
|
||||
|
||||
.PHONY: bootimage_debug
|
||||
bootimage_debug: $(INSTALLED_DEBUG_BOOTIMAGE_TARGET)
|
||||
|
||||
.PHONY: vbmetaimage
|
||||
vbmetaimage: $(INSTALLED_VBMETAIMAGE_TARGET)
|
||||
|
||||
|
@ -1487,6 +1493,8 @@ droidcore: $(filter $(HOST_OUT_ROOT)/%,$(modules_to_install)) \
|
|||
$(INSTALLED_SYSTEMIMAGE_TARGET) \
|
||||
$(INSTALLED_RAMDISK_TARGET) \
|
||||
$(INSTALLED_BOOTIMAGE_TARGET) \
|
||||
$(INSTALLED_DEBUG_RAMDISK_TARGET) \
|
||||
$(INSTALLED_DEBUG_BOOTIMAGE_TARGET) \
|
||||
$(INSTALLED_RECOVERYIMAGE_TARGET) \
|
||||
$(INSTALLED_VBMETAIMAGE_TARGET) \
|
||||
$(INSTALLED_USERDATAIMAGE_TARGET) \
|
||||
|
@ -1511,6 +1519,8 @@ droidcore: $(filter $(HOST_OUT_ROOT)/%,$(modules_to_install)) \
|
|||
$(INSTALLED_FILES_JSON_SYSTEMOTHER) \
|
||||
$(INSTALLED_FILES_FILE_RAMDISK) \
|
||||
$(INSTALLED_FILES_JSON_RAMDISK) \
|
||||
$(INSTALLED_FILES_FILE_DEBUG_RAMDISK) \
|
||||
$(INSTALLED_FILES_JSON_DEBUG_RAMDISK) \
|
||||
$(INSTALLED_FILES_FILE_ROOT) \
|
||||
$(INSTALLED_FILES_JSON_ROOT) \
|
||||
$(INSTALLED_FILES_FILE_RECOVERY) \
|
||||
|
@ -1631,6 +1641,10 @@ else # TARGET_BUILD_APPS
|
|||
$(call dist-for-goals, droidcore, \
|
||||
$(INSTALLED_FILES_FILE_RAMDISK) \
|
||||
$(INSTALLED_FILES_JSON_RAMDISK) \
|
||||
$(INSTALLED_FILES_FILE_DEBUG_RAMDISK) \
|
||||
$(INSTALLED_FILES_JSON_DEBUG_RAMDISK) \
|
||||
$(INSTALLED_DEBUG_RAMDISK_TARGET) \
|
||||
$(INSTALLED_DEBUG_BOOTIMAGE_TARGET) \
|
||||
)
|
||||
endif
|
||||
|
||||
|
|
Loading…
Reference in a new issue