AOSP中使用libcryptsetup编译ramdisk失败
创始人
2024-09-03 09:30:39
0

在AOSP中使用libcryptsetup编译ramdisk时,需要在BoardConfig.mk文件中添加相应的配置项,以解决编译失败的问题。具体步骤如下:

  1. 在BoardConfig.mk文件中添加以下配置项:
BOARD_BUILD_RAMDISK_WITH_CRYPTO := true
CRYPTO_TYPE := cryptsetup
  1. 修改mkbootfs源文件,需要添加libcryptsetup库,例如Android 9.0源码中路径为external/sepolicy/tools/mkbootfs。
LOCAL_CFLAGS := \
        -DSYSTEM_ROOT_IMAGE='"$(PRODUCT_OUT)/system.img"' \
        -DOVERRIDE_ANDROID_FILESYSTEM_CONFIG \
        -DANDROID_FILESYSTEM_CONFIG=\"$(COMMON_OUT_DIR)/etc/filesystems_config.h\" \
        -DSHORT_VERSION='"$(PLATFORM_VERSION)"' \
        -DPLATFORM_VERSION_UNSIGNED=$(PLATFORM_VERSION_UNSIGNED) \
        -DPLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION) \
        -DSYSTEM_DEFAULT_PROPERTIES_PATH=\"$(COMMON_OUT_DIR)/etc/system.default.prop\" \
        -DSYSTEM_ENCRYPTED_PROPERTIES_PATH=\"$(COMMON_OUT_DIR)/etc/system.encrypted.props\" \
        -DSYSTEM_SERVER_CONFIG_PATH=\"$(COMMON_OUT_DIR)/etc/server_config.xml\" \
        -DSYSTEM_SECURE_PROPERTIES_PATH=\"$(COMMON_OUT_DIR)/etc/security.config\" \
        -DANDROID_RAMDISK_SOURCE_PREFIX=\"$(TARGET_PREBUILT_KERNEL_RAMDISK_DIR)/\" \
        -I$(PRIVATE) \
        -I$(PRIVATE)/include \
        -I$(PRIVATE)/../sepolicy/include \
        -I$(PRIVATE)/../libcryptfs/include
        // 添加上面最后一行,引入libcryptfs库
  1. 在BoardConfig.mk文件中添加以下配置项:
BOARD_PREBUILT_RAMDISK_DIR := $(PRODUCT_OUT)/ramdisk_encrypt
# if ramdisk encrypt is true, the key is generated from
# the 32byte long CRYPTO_PASSWORD_ANDROID, otherwise a randomly
# generated key is used.

BOARD_RECOVERYIMAGE_PARTITION_SIZE := 128M
BOARD_RECOVERYRAMDISK_PARTITION_SIZE := 32M

ifeq ($(BOARD_BUILD_RAMDISK_WITH_CRYPTO), true)
  ifneq ($(CRYPTO_TYPE),cryptfs)
    $(error Invalid CRYPTO_TYPE=$(CRYPTO_TYPE), supported values: cryptfs)
  endif
  PRODUCT_BUILD_WITH_ENCRYPTED_RAMDISK := true
  PRODUCT_SYSTEM_RAMDISK_ENCRYPT := true
  # first 16 bytes of crypto key will be reserved
  PRODUCT_ENCRYPTED_RAMDISK_EXTRA_ARGS := "--crypto_keyspace 32 --crypto_blkdev nodev --crypto_type cryptfs"
  CRYPTO_ALGORITHM := aes-cbc-essiv:sha256
  CRYPTO_KEYSIZE := 256
  ENCRYPT_IN_KERNEL := true
  TARGET_PROVIDES_INIT := true

  # Include libcryptfs libraries in the target
  PRODUCT_PACKAGES += libcryptfs libcryptfs-utils

  ifeq ($(TARGET_INIT_VENDOR),)
    TARGET_INIT_VENDOR := $(LOCAL_PATH)/../../init/init_vendor
  endif
endif
  1. 添加init.rc配置启动ramdisk加密:
# Property indicating the presence of a prebuilt encrypted ramdisk
# image. This is set by the build system when building an OTA for a
# device with encrypted ramdisk support.
#
# After checking the initial state to see if ramdisk encryption is
# enabled, the script at /init.encrypted-ramdisk will be executed,
# which will ensure that the device can mount the encrypted partitions
# required for decrypting the ramdisk. The actual encryption of the
# ram

相关内容

热门资讯

记者揭秘!智星菠萝辅助(透视辅... 记者揭秘!智星菠萝辅助(透视辅助)拱趴大菠萝辅助神器,扑克教程(有挂细节);模式供您选择,了解更新找...
一分钟揭秘!约局吧能能开挂(透... 一分钟揭秘!约局吧能能开挂(透视辅助)hhpoker辅助靠谱,2024新版教程(有挂教学);约局吧能...
透视辅助!wepoker模拟器... 透视辅助!wepoker模拟器哪个好用(脚本)hhpoker辅助挂是真的,科技教程(有挂技巧);囊括...
透视代打!hhpkoer辅助器... 透视代打!hhpkoer辅助器视频(辅助挂)pokemmo脚本辅助,2024新版教程(有挂教程);风...
透视了解!约局吧德州真的有透视... 透视了解!约局吧德州真的有透视挂(透视脚本)德州局HHpoker透视脚本,必胜教程(有挂分析);亲,...
六分钟了解!wepoker挂底... 六分钟了解!wepoker挂底牌(透视)德普之星开辅助,详细教程(有挂解密);德普之星开辅助是一种具...
9分钟了解!wpk私人辅助(透... 9分钟了解!wpk私人辅助(透视)hhpoker德州透视,插件教程(有挂教学);风靡全球的特色经典游...
推荐一款!wepoker究竟有... 推荐一款!wepoker究竟有透视(脚本)哈糖大菠萝开挂,介绍教程(有挂技术);囊括全国各种wepo...
每日必备!wepoker有人用... 每日必备!wepoker有人用过(脚本)wpk有那种辅助,线上教程(有挂规律);wepoker有人用...
玩家必备教程!wejoker私... 玩家必备教程!wejoker私人辅助软件(脚本)哈糖大菠萝可以开挂,可靠技巧(有挂神器)申哈糖大菠萝...