พาร์ติชันการเปิดเครื่องทั่วไป

ใน Android 12 รูปภาพ boot ทั่วไป ซึ่งเรียกว่า อิมเมจเคอร์เนลทั่วไป (GKI) มี Ramdisk ทั่วไปและเคอร์เนล GKI

สำหรับอุปกรณ์ที่เปิดตัวด้วย Android 13 ข้อกำหนดทั่วไป นำ ramdisk ออกจากรูปภาพ boot และวางไว้ใน init_boot แยกแล้ว รูปภาพ การเปลี่ยนแปลงนี้จะทำให้รูปภาพ boot เหลือเฉพาะ เคอร์เนล GKI

สำหรับการอัปเกรดอุปกรณ์ที่ใช้ Android 12 ต่อไป หรือเวอร์ชันเคอร์เนลที่เก่ากว่า RAM เดิมจะยังคงอยู่ที่เดิม ไม่จำเป็นต้องมีรูปภาพ init_boot รูปใหม่

หากต้องการสร้าง RAM ทั่วไป ให้ย้ายทรัพยากรเฉพาะผู้ให้บริการออกจาก RAM ดังนั้น RAM ทั่วไปจะมีเพียง init ระยะแรกและพร็อพเพอร์ตี้ ไฟล์ที่มีข้อมูลการประทับเวลา

ในอุปกรณ์ที่มีคุณสมบัติดังนี้

  • อย่าใช้พาร์ติชัน recovery เฉพาะ เนื่องจากบิตการกู้คืนทั้งหมดจะย้ายจาก ramdisk ทั่วไปเป็น vendor_boot ramdisk

  • ใช้พาร์ติชัน recovery โดยเฉพาะ ไม่มีการเปลี่ยนแปลงใน RAM ดิสก์ recovery ต้องใช้เนื่องจาก RAM ดิสก์ recovery เป็นแบบในตัว

สถาปัตยกรรม

แผนภาพต่อไปนี้แสดงสถาปัตยกรรมของอุปกรณ์ที่ใช้ Android 12 ขึ้นไป อุปกรณ์ที่เปิดตัวพร้อม Android 13 มีฟีเจอร์ใหม่ อิมเมจ init_boot ที่มี RAM ดิสก์ทั่วไป อุปกรณ์ที่อัปเกรดจาก Android 12 เป็น Android 13 ใช้สถาปัตยกรรมเดียวกันกับที่ใช้ Android 12

เปิดตัวด้วย Android 13 โดยไม่มีการกู้คืนเฉพาะ

เปิด/อัปเกรดอุปกรณ์, GKI, ไม่มีการกู้คืนเฉพาะ

รูปที่ 1 อุปกรณ์ที่เปิดตัวหรืออัปเกรดเป็น Android 13 โดยใช้ GKI ไม่มีการกู้คืนเฉพาะ

เปิดตัวด้วย Android 13 การกู้คืนแบบเฉพาะและ A/B (Ramdisk เฉพาะ)

เปิด/อัปเกรดอุปกรณ์, GKI, การกู้คืนแบบเฉพาะ และ A/B

รูปที่ 2 อุปกรณ์ที่เปิดตัวหรืออัปเกรดเป็น Android 13 ที่ใช้ GKI เฉพาะการกู้คืน และ A/B

ดูรูปนี้หากอุปกรณ์มีพาร์ติชัน recovery_a และ recovery_b

เปิดตัวด้วย Android 13 ซึ่งมีการกู้คืนเฉพาะที่ไม่ใช่ A/B (Ramdisk เฉพาะ)

เปิด/อัปเกรดอุปกรณ์, GKI, การกู้คืนแบบเฉพาะและไม่ใช่ A/B

รูปที่ 3 อุปกรณ์ที่เปิดตัวหรืออัปเกรดเป็น Android 13 ที่ใช้ GKI เฉพาะการกู้คืนที่ไม่ใช่ A/B

โปรดดูรูปนี้หากอุปกรณ์มีพาร์ติชันชื่อ recovery โดยไม่มี คำต่อท้ายช่องโฆษณา

เปิดตัวหรืออัปเกรดเป็น Android 12 โดยไม่มีการกู้คืนเฉพาะ

เปิด/อัปเกรดอุปกรณ์, GKI, ไม่มีการกู้คืนเฉพาะ

รูปที่ 4 อุปกรณ์ที่เปิดตัวหรืออัปเกรดเป็น Android 12 โดยใช้ GKI ไม่มีการกู้คืนเฉพาะ

เปิดหรืออัปเกรดเป็น Android 12 เฉพาะการกู้คืนระบบ A/B (Ramdisk เฉพาะ)

เปิด/อัปเกรดอุปกรณ์, GKI, การกู้คืนแบบเฉพาะ และ A/B

รูปที่ 5 อุปกรณ์ที่เปิดตัวหรืออัปเกรดเป็น Android 12 ที่ใช้ GKI เฉพาะการกู้คืน และ A/B

ดูรูปนี้หากอุปกรณ์มีพาร์ติชัน recovery_a และ recovery_b

เปิดหรืออัปเกรดเป็น Android 12 ซึ่งมีการกู้คืนแบบเฉพาะและไม่ใช่ A/B (Ramdisk เฉพาะ)

เปิด/อัปเกรดอุปกรณ์, GKI, การกู้คืนแบบเฉพาะและไม่ใช่ A/B

รูปที่ 6 อุปกรณ์ที่เปิดตัวหรืออัปเกรดเป็น Android 12 ที่ใช้ GKI เฉพาะการกู้คืนที่ไม่ใช่ A/B

โปรดดูรูปนี้หากอุปกรณ์มีพาร์ติชันชื่อ recovery โดยไม่มี คำต่อท้ายช่องโฆษณา

อัปเกรดเป็น Android 12, recovery-as-boot (recovery-as-ramdisk)

เปิด/อัปเกรดอุปกรณ์, ไม่มี GKI, การกู้คืน-เมื่อบูต

รูปที่ 7 อุปกรณ์ที่อัปเกรดเป็น Android 12, ไม่มี GKI, การกู้คืนเมื่อเปิดเครื่อง

อัปเกรดเป็น Android 12, การกู้คืนโดยเฉพาะ (ramdisk เฉพาะ)

เปิด/อัปเกรดอุปกรณ์, ไม่มี GKI, การกู้คืนเฉพาะ

รูปที่ 8 อุปกรณ์ที่อัปเกรดเป็น Android 12, ไม่มี GKI, มีการกู้คืนโดยเฉพาะ

เนื้อหาอิมเมจการเปิดเครื่อง

อิมเมจการเปิดเครื่อง Android ประกอบด้วยข้อมูลต่อไปนี้

  • เพิ่มรูปภาพ init_boot รูปสำหรับอุปกรณ์ที่จะเปิดตัวด้วย Android 13

    • เวอร์ชันส่วนหัว V4
    • อิมเมจ ramdisk ทั่วไป
  • รูปภาพ boot ทั่วไป

    • เวอร์ชันส่วนหัว V3 หรือ เวอร์ชัน 4
      • boot_signature สำหรับการรับรอง Boot.img ของ GKI (v4 เท่านั้น) GKI boot.img ที่ได้รับการรับรองไม่ได้ลงชื่อสำหรับการเปิดเครื่องที่ได้รับการยืนยัน OEM ต้อง ลงนาม boot.img ที่สร้างไว้ล่วงหน้าด้วยข้อมูลเฉพาะอุปกรณ์ AVB
      • ทั่วไป cmdline (GENERIC_KERNEL_CMDLINE)
      • เคอร์เนล GKI
    • อิมเมจ ramdisk ทั่วไป
      • รวมอยู่ในรูปภาพจาก boot จาก Android 12 เท่านั้น และก่อนหน้านี้
  • อิมเมจ vendor_boot (โปรดดูรายละเอียดที่หัวข้อการเปิดเครื่องของผู้ให้บริการ พาร์ติชัน)

    • ส่วนหัว vendor_boot
      • cmdline เฉพาะอุปกรณ์ (BOARD_KERNEL_CMDLINE)
    • รูปภาพ RAM vendor_boot
      • lib/modules
      • แหล่งข้อมูลการกู้คืน (หากไม่มีการกู้คืนเฉพาะ)
    • รูปภาพ dtb
  • รูปภาพ recovery

    • เวอร์ชันส่วนหัว V2
      • cmdline เฉพาะอุปกรณ์สำหรับการกู้คืน หากจำเป็น
      • สำหรับพาร์ติชันการกู้คืนที่ไม่ใช่ A/B เนื้อหาของส่วนหัวต้องเป็น แบบสแตนด์อโลน ดู อิมเมจการกู้คืน เช่น
      • cmdline ไม่ได้เชื่อมต่อกับ boot และ vendor_boot cmdline
      • ส่วนหัวระบุ DTBO การกู้คืน หากจำเป็น
      • สำหรับพาร์ติชันการกู้คืน A/B เนื้อหาสามารถเชื่อมโยงหรืออนุมานได้ จาก boot และ vendor_boot เช่น
      • cmdline เชื่อมต่อกับ boot และ vendor_boot cmdline
      • DTBO อนุมานได้จากส่วนหัว vendor_boot
    • รูปภาพ RAM recovery
      • แหล่งข้อมูลการกู้คืน
      • สำหรับพาร์ติชันการกู้คืนที่ไม่ใช่ A/B เนื้อหาของ RAM ต้องมีลักษณะดังนี้ แบบสแตนด์อโลน ดู อิมเมจการกู้คืน เช่น
      • lib/modules ต้องมีโมดูลเคอร์เนลทั้งหมดที่จำเป็นต่อการเปิดเครื่อง Recovery Mode
      • RAM การกู้คืนต้องมี init
      • สำหรับพาร์ติชันการกู้คืน A/B จะมีการเพิ่ม RAM การกู้คืนไปยังพารามิเตอร์ แรมดิสก์แบบทั่วไปและ vendor_boot ดังนั้นจึงไม่จำเป็นต้องมี แบบสแตนด์อโลน เช่น
      • lib/modules อาจมีเฉพาะโมดูลเคอร์เนลเพิ่มเติมที่จำเป็นต่อการ โหมดการกู้คืนสำหรับการเปิดเครื่องนอกเหนือจากโมดูลเคอร์เนลใน vendor_boot ramdisk
      • ลิงก์สัญลักษณ์ที่ /init อาจมีอยู่ แต่ถูกบดบังด้วย ไบนารี /init ระยะแรกในอิมเมจเปิดเครื่อง

เนื้อหาอิมเมจ ramdisk ทั่วไป

Ramdisk ทั่วไปมีองค์ประกอบต่อไปนี้

  • init
  • system/etc/ramdisk/build.prop
  • อุปกรณ์ประกอบฉาก ro.PRODUCT.bootimg.* build รายการ
  • ไดเรกทอรีว่างสำหรับจุดต่อเชื่อม: debug_ramdisk/, mnt/, dev/, sys/, proc/ metadata/
  • first_stage_ramdisk/
    • ไดเรกทอรีว่างซ้ำกันสำหรับจุดต่อเชื่อม: debug_ramdisk/, mnt/ dev/ sys/ proc/ metadata/

การผสานรวมอิมเมจการเปิดเครื่อง

แฟล็กบิลด์จะควบคุมวิธีที่ init_boot, boot, recovery และ vendor_boot รูปภาพที่สร้างขึ้น ค่าของตัวแปรกระดานบูลีนต้องเป็นสตริง true หรือเว้นว่างไว้ (ซึ่งเป็นค่าเริ่มต้น)

  • TARGET_NO_KERNEL. ตัวแปรนี้ระบุว่าบิลด์ใช้การเปิดเครื่องที่สร้างไว้ล่วงหน้าหรือไม่ รูปภาพ หากตั้งค่าตัวแปรนี้เป็น true ให้ตั้งค่า BOARD_PREBUILT_BOOTIMAGE ไปยังตำแหน่งของอิมเมจเปิดเครื่องที่สร้างไว้ล่วงหน้า (BOARD_PREBUILT_BOOTIMAGE:= device/${company}/${board}/boot.img)

  • BOARD_USES_RECOVERY_AS_BOOT. ตัวแปรนี้ระบุว่าอุปกรณ์ใช้ รูปภาพ recovery เป็นรูปภาพ boot เมื่อใช้ GKI ตัวแปรนี้จะ ว่างเปล่าและควรย้ายทรัพยากรการกู้คืนไปยัง vendor_boot

  • BOARD_USES_GENERIC_KERNEL_IMAGE. ตัวแปรนี้ระบุว่ากระดานใช้ GKI ตัวแปรนี้ไม่ส่งผลต่อ sysprops หรือ PRODUCT_PACKAGES.

    นี่เป็นสวิตช์ GKI ระดับกระดาน ตัวแปรทั้งหมดต่อไปนี้คือ ถูกจำกัดโดยตัวแปรนี้

  • BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT. ตัวแปรนี้ควบคุมว่า ทรัพยากรการกู้คืน ramdisk สร้างขึ้นใน vendor_boot

    • เมื่อตั้งค่าเป็น true ระบบจะสร้างทรัพยากรการกู้คืนเป็น vendor-ramdisk/ เท่านั้น และไม่ได้สร้างขึ้นเพื่อ recovery/root/

    • เมื่อเว้นว่างไว้ ทรัพยากรการกู้คืนจะสร้างขึ้นสำหรับ recovery/root/ เท่านั้นและไม่ได้ ที่สร้างเป็น vendor-ramdisk/

  • BOARD_MOVE_GSI_AVB_KEYS_TO_VENDOR_BOOT. ตัวแปรนี้ควบคุมว่า GSI หรือไม่ คีย์ AVB สร้างขึ้นที่ vendor_boot

    • เมื่อตั้งค่าเป็น true หาก BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT:

      • มีการตั้งค่า คีย์ GSI AVB สร้างขึ้นมาเพื่อ $ANDROID_PRODUCT_OUT/vendor-ramdisk/first_stage_ramdisk/avb.

      • ไม่ได้ตั้งค่า คีย์ GSI AVB จะสร้างขึ้นเพื่อ $ANDROID_PRODUCT_OUT/vendor-ramdisk/avb.

    • เมื่อเว้นว่างไว้ หาก BOARD_RECOVERY_AS_ROOT

      • มีการตั้งค่า คีย์ GSI AVB สร้างขึ้นเพื่อ $ANDROID_PRODUCT_OUT/recovery/root/first_stage_ramdisk/avb.

      • ไม่ได้ตั้งค่า คีย์ GSI AVB จะสร้างขึ้นเพื่อ $ANDROID_PRODUCT_OUT/ramdisk/avb.

  • BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE. ตัวแปรนี้ควบคุมว่า อิมเมจ recovery มีเคอร์เนลหรือไม่มี อุปกรณ์ที่กำลังจะเปิดตัวด้วย Android 12 และใช้พาร์ติชัน A/B recovery ต้องตั้งค่าค่านี้ เป็น true อุปกรณ์ที่กำลังจะเปิดตัวพร้อม Android 12 และการใช้ที่ไม่ใช่ A/B ต้องตั้งค่าตัวแปรนี้เป็น false เพื่อเก็บอิมเมจการกู้คืนไว้ จบในตัว

  • BOARD_COPY_BOOT_IMAGE_TO_TARGET_FILES. ตัวแปรนี้ควบคุมว่า ระบบคัดลอก $OUT/boot*.img ไปยัง IMAGES/ ภายใต้ไฟล์เป้าหมาย

    • aosp_arm64 ต้องตั้งค่าตัวแปรนี้เป็น true

    • อุปกรณ์อื่นๆ ต้องปล่อยตัวแปรนี้ว่างไว้

  • BOARD_INIT_BOOT_IMAGE_PARTITION_SIZE. ตัวแปรนี้ควบคุมว่า สร้าง init_boot.img และกำหนดขนาดแล้ว เมื่อตั้งค่า RAM ดิสก์ทั่วไป ถูกเพิ่มลงใน init_boot.img แทน boot.img และต้องใช้ ตัวแปร BOARD_AVB_INIT_BOOT* ที่จะตั้งค่า vbmeta ที่ผูกไว้

ชุดค่าผสมที่อนุญาต

คอมโพเนนต์หรือตัวแปร อัปเกรดอุปกรณ์โดยไม่มีพาร์ติชันการกู้คืน อัปเกรดอุปกรณ์ด้วยพาร์ติชันการกู้คืน เปิดอุปกรณ์โดยไม่มีพาร์ติชันการกู้คืน เปิดอุปกรณ์ด้วยพาร์ติชันการกู้คืน A/B เปิดอุปกรณ์ที่มีพาร์ติชันการกู้คืนที่ไม่ใช่ A/B aosp_arm64
มี boot ใช่ ใช่ ใช่ ใช่ ใช่ ใช่
มี init_boot (Android 13) ไม่ ไม่ ใช่ ใช่ ใช่ ใช่
มี vendor_boot ไม่บังคับ ไม่บังคับ ใช่ ใช่ ใช่ ไม่
มี recovery ไม่ ใช่ ไม่ ใช่ ใช่ ไม่
BOARD_USES_RECOVERY_AS_BOOT true ว่าง ว่าง ว่าง ว่าง ว่าง
BOARD_USES_GENERIC_KERNEL_IMAGE ว่าง ว่าง true true true true
PRODUCT_BUILD_RECOVERY_IMAGE ว่าง true หรือว่างเปล่า ว่าง true หรือว่างเปล่า true หรือว่างเปล่า ว่าง
BOARD_RECOVERYIMAGE_PARTITION_SIZE ว่าง 0 ครั้ง ว่าง 0 ครั้ง 0 ครั้ง ว่าง
BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT ว่าง ว่าง true ว่าง ว่าง ว่าง
BOARD_MOVE_GSI_AVB_KEYS_TO_VENDOR_BOOT ว่าง ว่าง true true true ว่าง
BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE ว่าง ว่าง ว่าง true ว่าง ว่าง
BOARD_COPY_BOOT_IMAGE_TO_TARGET_FILES ว่าง ว่าง ว่าง ว่าง ว่าง true

ตั้งค่าอุปกรณ์ที่มีพาร์ติชัน recovery โดยเฉพาะได้ PRODUCT_BUILD_RECOVERY_IMAGE ถึง true หรือว่างเปล่า สําหรับอุปกรณ์เหล่านี้ หาก ตั้งค่า BOARD_RECOVERYIMAGE_PARTITION_SIZE แล้ว มีการสร้างอิมเมจ recovery

เปิดใช้ vbmeta เชนสำหรับการเปิดเครื่อง

ต้องเปิดใช้ vbmeta แบบเชนสำหรับอิมเมจ boot และ init_boot ระบุ ดังต่อไปนี้

BOARD_AVB_BOOT_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem
BOARD_AVB_BOOT_ALGORITHM := SHA256_RSA4096
BOARD_AVB_BOOT_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
BOARD_AVB_BOOT_ROLLBACK_INDEX_LOCATION := 2

BOARD_AVB_INIT_BOOT_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
BOARD_AVB_INIT_BOOT_ALGORITHM := SHA256_RSA2048
BOARD_AVB_INIT_BOOT_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
BOARD_AVB_INIT_BOOT_ROLLBACK_INDEX_LOCATION := 3

ตัวอย่างเช่น โปรดดู เปลี่ยน

รากของระบบ

อุปกรณ์ที่ใช้ GKI ไม่รองรับระบบในรูท เปิด อุปกรณ์ดังกล่าว BOARD_BUILD_SYSTEM_ROOT_IMAGE ต้องว่างเปล่า รากของระบบ สำหรับอุปกรณ์ที่ใช้พาร์ติชันแบบไดนามิก ก็ไม่รองรับเช่นกัน

การกำหนดค่าผลิตภัณฑ์

อุปกรณ์ที่ใช้ RAM ทั่วไปต้องติดตั้งรายการไฟล์ที่ ได้รับอนุญาตให้ติดตั้งลงใน RAM ดิสก์ได้ ในการดำเนินการดังกล่าว โปรดระบุข้อมูลต่อไปนี้ใน device.mk:

$(call inherit-product, $(SRC_TARGET_DIR)/product/generic_ramdisk.mk)

ไฟล์ generic_ramdisk.mk ยังป้องกันไม่ให้ไฟล์ Makefile อื่นๆ ทำโดยไม่ได้ตั้งใจด้วย กำลังติดตั้งไฟล์อื่นๆ ลงใน RAM (ย้ายไฟล์ดังกล่าวไปที่ vendor_ramdisk) แทน)

ตั้งค่าอุปกรณ์

วิธีการตั้งค่าจะแตกต่างกันไปในอุปกรณ์แต่ละรุ่นที่ใช้ Android 13 กำลังอัปเกรดเป็น Android 12 และเปิดตัวด้วย Android 12 การตั้งค่า Android 13 คล้ายกับ Android 12

  • อุปกรณ์ที่อัปเกรดเป็น Android 12:

    • สามารถเก็บค่าของ BOARD_USES_RECOVERY_AS_BOOT ไว้ หากทำอย่างนั้น ใช้การกำหนดค่าเดิมและตัวแปรบิลด์ใหม่ต้องว่างเปล่า หากมี อุปกรณ์:

      • ตั้งค่า BOARD_USES_RECOVERY_AS_BOOT เป็น true สถาปัตยกรรมมีลักษณะดังต่อไปนี้ แสดงในรูปที่ 3

      • ตั้งค่า BOARD_USES_RECOVERY_AS_BOOT ให้ว่างไว้ สถาปัตยกรรมเป็นดังนี้ รูปที่ 4

    • ตั้งค่า BOARD_USES_RECOVERY_AS_BOOT ให้ว่างเปล่าได้ หากสามารถทำได้ พวกเขาจะใช้ การกำหนดค่าใหม่ หากอุปกรณ์ดังกล่าว

  • อุปกรณ์ที่เปิดตัวด้วย Android 12 ต้องตั้งค่า BOARD_USES_RECOVERY_AS_BOOT เพื่อว่างเปล่าและใช้การกำหนดค่าใหม่ หากมี อุปกรณ์:

เนื่องจาก aosp_arm64 สร้างเฉพาะ GKI เท่านั้น (ไม่ใช่ vendor_boot หรือการกู้คืน) ไม่ใช่เป้าหมายที่สมบูรณ์ สำหรับการกำหนดค่ารุ่นของ aosp_arm64 โปรดดู generic_arm64.

ตัวเลือกที่ 1: ไม่มีพาร์ติชันการกู้คืนโดยเฉพาะ

อุปกรณ์ที่ไม่มีพาร์ติชัน recovery มีอิมเมจ boot ทั่วไปใน พาร์ติชัน boot ramdisk vendor_boot มีทรัพยากรการกู้คืนทั้งหมด รวมถึง lib/modules (ที่มีโมดูลเคอร์เนลของผู้ให้บริการ) ในอุปกรณ์ดังกล่าว การกำหนดค่าผลิตภัณฑ์รับค่าจาก generic_ramdisk.mk

ตั้งค่า BOARD

กำหนดค่าต่อไปนี้

BOARD_USES_RECOVERY_AS_BOOT :=
BOARD_USES_GENERIC_KERNEL_IMAGE := true
BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT := true
BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE :=
BOARD_MOVE_GSI_AVB_KEYS_TO_VENDOR_BOOT := true

ramdisk vendor_boot สามารถมีลิงก์สัญลักษณ์ /init ถึง /system/bin/init ได้ และ init_second_stage.recovery เวลา /system/bin/init อย่างไรก็ตาม เนื่องจาก ramdisk ทั่วไปจะต่อกันหลังจาก ramdisk vendor_boot ซึ่ง /init ถูกเขียนทับ symlink เมื่อเปิดอุปกรณ์เข้าสู่การกู้คืน ต้องมีไบนารี /system/bin/init เพื่อรองรับ init ขั้นที่ 2 เนื้อหา จาก vendor_boot + RAM ทั่วไปดังนี้

  • /init (จาก RAM ทั่วไปที่สร้างตั้งแต่ init_first_stage)
  • /system/bin/init (จาก vendor_ramdisk สร้างตั้งแต่ init_second_stage.recovery)

ย้ายไฟล์ fstab

ย้ายไฟล์ fstab ที่ติดตั้งไปยัง RAM ทั่วไปไปยัง vendor_ramdisk. ตัวอย่างเช่น โปรดดู เปลี่ยน

ติดตั้งโมดูล

คุณสามารถติดตั้งโมดูลเฉพาะอุปกรณ์เพื่อ vendor_ramdisk (ข้าม ขั้นตอนนี้หากคุณไม่มีโมดูลเฉพาะอุปกรณ์ให้ติดตั้ง)

  • ใช้ตัวแปร vendor_ramdisk ของโมดูลเมื่อติดตั้งโมดูลถึง /first_stage_ramdisk โมดูลนี้ควรพร้อมให้บริการหลังจากวันที่ init เปลี่ยนรูทเป็น /first_stage_ramdisk แต่ก่อน init จะเปลี่ยนรูทเป็น /system ตัวอย่างเช่น โปรดดูการตรวจสอบข้อผิดพลาดข้อมูลเมตาและ การบีบอัด A/B เสมือนจริง

  • ใช้ตัวแปร recovery ของโมดูลเมื่อโมดูลติดตั้งไปยัง / โมดูลนี้ควรพร้อมใช้งานก่อนที่ init จะเปลี่ยนรูทเป็น /first_stage_ramdisk. สำหรับรายละเอียดเกี่ยวกับการติดตั้งโมดูลใน / โปรดดูที่ก่อน คอนโซลขั้นตอน

คอนโซลขั้นตอนแรก

เนื่องจากคอนโซลระยะแรกจะเริ่มขึ้นก่อน init จะเปลี่ยนรูทเป็น /first_stage_ramdisk คุณต้องติดตั้งโมดูลเวอร์ชัน recovery โดยค่าเริ่มต้น ตัวแปรโมดูลทั้ง 2 ตัวจะติดตั้งที่ build/make/target/product/base_vendor.mk ดังนั้นหากไฟล์บิลด์ของอุปกรณ์รับค่าเดิม จากไฟล์นั้น คุณไม่จำเป็นต้องติดตั้งตัวแปร recovery อย่างชัดแจ้ง

หากต้องการติดตั้งโมดูลการกู้คืนอย่างชัดแจ้ง ให้ใช้ข้อมูลต่อไปนี้

PRODUCT_PACKAGES += \
    linker.recovery \
    shell_and_utilities_recovery \

การดำเนินการนี้จะช่วยให้มั่นใจว่าการติดตั้ง linker, sh และ toybox จะ $ANDROID_PRODUCT_OUT/recovery/root/system/bin ซึ่งจะติดตั้งเป็น /system/bin ภายใต้ vendor_ramdisk

หากต้องการเพิ่มโมดูลที่จำเป็นสำหรับคอนโซลขั้นตอนแรก (เช่น adbd) ให้ใช้ กำลังติดตาม

PRODUCT_PACKAGES += adbd.recovery

ซึ่งช่วยให้มั่นใจว่าโมดูลที่ระบุจะติดตั้งไปยัง $ANDROID_PRODUCT_OUT/recovery/root/system/bin ซึ่งจะติดตั้งเป็น /system/bin ภายใต้ vendor_ramdisk

การตรวจสอบข้อผิดพลาดข้อมูลเมตา

เพื่อรองรับข้อมูลเมตา การตรวจสอบข้อผิดพลาด ระหว่างการต่อเชื่อมขั้นแรก อุปกรณ์ที่ไม่รองรับ GKI จะติดตั้ง RAM ของโมดูลต่อไปนี้ หากต้องการเพิ่มการรองรับ GKI ให้ย้ายโมดูลไปที่ $ANDROID_PRODUCT_OUT/vendor-ramdisk/first_stage_ramdisk/system/bin:

PRODUCT_PACKAGES += \
    linker.vendor_ramdisk \
    resize2fs.vendor_ramdisk \
    tune2fs.vendor_ramdisk \

ตัวอย่างเช่น โปรดดู Changelist

การบีบอัด A/B เสมือน

ต้องติดตั้ง snapuserd เพื่อรองรับการบีบอัด A/B เสมือน vendor_ramdisk. อุปกรณ์ควรรับค่าจาก virtual_ab_ota/compression.mk, ซึ่งติดตั้งตัวแปร vendor_ramdisk ของ snapuserd

การเปลี่ยนแปลงขั้นตอนการเปิดเครื่อง

กระบวนการเปิดเครื่องเข้าสู่การกู้คืนหรือเข้าสู่ Android ยังคงเหมือนเดิม โดย ข้อยกเว้นต่อไปนี้

  • Ramdisk build.prop ย้ายไปยัง /second_stage_resources เพื่อให้ระยะที่ 2 init อ่านการประทับเวลาบิลด์ของการเปิดเครื่องได้

เนื่องจากทรัพยากรจะย้ายจาก RAM ทั่วไปไปยัง RAM ดิสก์ vendor_boot ผลลัพธ์ ของการเชื่อมต่อ RAM ทั่วไปกับ RAM ดิสก์ vendor_boot ไม่เปลี่ยนแปลง

ทำให้ e2fsck พร้อมใช้งาน

ไฟล์ครีเอทีฟโฆษณาของอุปกรณ์จะรับค่าจากสิ่งต่อไปนี้ได้

  • virtual_ab_ota/launch_with_vendor_ramdisk.mk หากอุปกรณ์รองรับ Virtual Reality A/B แต่ไม่มีการบีบอัด

  • virtual_ab_ota/compression.mk หากอุปกรณ์รองรับ A/B เสมือน การบีบอัด

ไฟล์ที่ติดตั้งผลิตภัณฑ์ $ANDROID_PRODUCT_OUT/vendor-ramdisk/first_stage_ramdisk/system/bin/e2fsck. ที่ รันไทม์แรก init จะเปลี่ยนรูทเป็น /first_stage_ramdisk จากนั้น เรียกใช้ /system/bin/e2fsck

ตัวเลือกที่ 2a: พาร์ติชันการกู้คืน A/B เฉพาะและ

ใช้ตัวเลือกนี้สําหรับอุปกรณ์ที่มีพาร์ติชัน A/B recovery ซึ่งก็คือ อุปกรณ์จะมีrecovery_aและrecovery_b partition อุปกรณ์ดังกล่าวรวมถึง A/B และอุปกรณ์ A/B เสมือนที่พาร์ติชันการกู้คืนสามารถอัปเดตได้ โดยมี การกำหนดค่าต่อไปนี้

AB_OTA_PARTITIONS += recovery

ramdisk vendor_boot มีบิตผู้ให้บริการของ ramdisk และผู้ให้บริการ โมดูลเคอร์เนล ซึ่งรวมถึงรายการต่อไปนี้

  • ไฟล์ fstab เฉพาะอุปกรณ์

  • lib/modules (รวมโมดูลเคอร์เนลของผู้ให้บริการ)

ramdisk recovery มีทรัพยากรการกู้คืนทั้งหมด ในอุปกรณ์ดังกล่าว การกำหนดค่าผลิตภัณฑ์รับค่าจาก generic_ramdisk.mk

ตั้งค่า BOARD

กำหนดค่าต่อไปนี้สำหรับอุปกรณ์ที่มีพาร์ติชัน A/B recovery

BOARD_USES_RECOVERY_AS_BOOT :=
BOARD_USES_GENERIC_KERNEL_IMAGE := true
BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT :=
BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE := true
BOARD_MOVE_GSI_AVB_KEYS_TO_VENDOR_BOOT := true

แรมดิสก์ recovery สามารถมีลิงก์สัญลักษณ์ /init -> /system/bin/init และ init_second_stage.recovery เวลา /system/bin/init แต่เนื่องจากการบูต ramdisk ถูกต่อกันหลังจาก ramdisk recovery symlink ของ /init คือ ถูกเขียนทับ เมื่ออุปกรณ์เปิดเครื่องในโหมดการกู้คืน /system/bin/init ต้องมีไบนารีเพื่อรองรับ init ขั้นที่ 2

เมื่ออุปกรณ์เปิดเครื่องใน recovery เนื้อหาของ recovery + vendor_boot + RAM ทั่วไปดังนี้

  • /init (จาก ramdisk สร้างจาก init_first_stage)
  • /system/bin/init (จาก RAM ดิสก์ recovery รายการ สร้างขึ้นจาก init_second_stage.recovery และดำเนินการจาก /init)

เมื่ออุปกรณ์เปิดเครื่องใน Android เนื้อหาของ vendor_boot + ทั่วไป ramdisks มีดังนี้:

  • /init (จาก RAM ทั่วไปที่สร้างตั้งแต่ init_first_stage)

ย้ายไฟล์ fstab

ย้ายไฟล์ fstab ใดๆ ที่ติดตั้งไปยัง RAM ทั่วไปไปยัง vendor_ramdisk. ตัวอย่างเช่น โปรดดู เปลี่ยน

ติดตั้งโมดูล

หรือคุณสามารถติดตั้งโมดูลเฉพาะอุปกรณ์ไปที่ vendor_ramdisk (ข้าม ขั้นตอนนี้หากคุณไม่มีโมดูลเฉพาะอุปกรณ์ให้ติดตั้ง) Init ไม่เปลี่ยนรูท โมดูล vendor_ramdisk จะติดตั้งลงใน รากของ vendor_ramdisk สำหรับตัวอย่างในการติดตั้งโมดูลไปยัง vendor_ramdisk โปรดดูคอนโซลขั้นตอนแรก, ข้อมูลเมตา checksums และ Virtual A/B การบีบอัด

คอนโซลขั้นตอนแรก

หากต้องการติดตั้งโมดูลเวอร์ชัน vendor_ramdisk ให้ใช้รายการต่อไปนี้

PRODUCT_PACKAGES += \
    linker.vendor_ramdisk \
    shell_and_utilities_vendor_ramdisk \

การดำเนินการนี้จะช่วยให้มั่นใจว่าการติดตั้ง linker, sh และ toybox จะ $ANDROID_PRODUCT_OUT/vendor-ramdisk/system/bin ซึ่งจะติดตั้งเป็น /system/bin ภายใต้ vendor_ramdisk

หากต้องการเพิ่มโมดูลที่จำเป็นสำหรับคอนโซลขั้นตอนแรก (เช่น adbd) ให้เปิดใช้ ตัวแปร vendor_ramdisk ของโมดูลเหล่านี้โดยการอัปโหลดแพตช์ที่เกี่ยวข้องไปยัง AOSP จากนั้นใช้คำสั่งต่อไปนี้

PRODUCT_PACKAGES += adbd.vendor_ramdisk

ซึ่งช่วยให้มั่นใจว่าโมดูลที่ระบุจะติดตั้งไปยัง $ANDROID_PRODUCT_OUT/vendor-ramdisk/system/bin. หาก RAM ดิสก์ vendor_boot จะโหลดในโหมดการกู้คืน โมดูลนี้จะพร้อมใช้งานในrecoveryด้วย หาก ไม่ได้โหลด RAM ดิสก์ vendor_boot ในโหมดการกู้คืน อุปกรณ์อาจเลือกหรือไม่ก็ได้ ติดตั้ง adbd.recovery ด้วย

การตรวจสอบข้อผิดพลาดข้อมูลเมตา

เพื่อรองรับข้อมูลเมตา การตรวจสอบข้อผิดพลาด ระหว่างการต่อเชื่อมขั้นแรก อุปกรณ์ที่ไม่รองรับ GKI จะติดตั้ง RAM ของโมดูลต่อไปนี้ หากต้องการเพิ่มการรองรับ GKI ให้ย้ายโมดูลไปที่ $ANDROID_PRODUCT_OUT/vendor-ramdisk/system/bin:

PRODUCT_PACKAGES += \
    linker.vendor_ramdisk \
    resize2fs.vendor_ramdisk \
    tune2fs.vendor_ramdisk \

ตัวอย่างเช่น โปรดดู Changelist

การบีบอัด A/B เสมือน

หากต้องการรองรับการบีบอัด A/B เสมือน คุณต้องติดตั้ง snapuserd ที่ vendor_ramdisk. อุปกรณ์ควรรับค่าจาก virtual_ab_ota/compression.mk, ซึ่งติดตั้งตัวแปร vendor_ramdisk ของ snapuserd

การเปลี่ยนแปลงขั้นตอนการเปิดเครื่อง

เมื่อเปิดเครื่องใน Android ขั้นตอนการเปิดเครื่องจะไม่เปลี่ยนแปลง ปุ่ม vendor_boot + RAM ทั่วไปจะคล้ายกับกระบวนการเปิดเครื่องที่มีอยู่ เว้นแต่ว่า fstab โหลดจาก vendor_boot เนื่องจาก system/bin/recovery ไม่มีอยู่ first_stage_init จะจัดการกับการเปิดเครื่องตามปกติ

เมื่อเปิดเครื่องในโหมดการกู้คืน กระบวนการเปิดเครื่องจะเปลี่ยนแปลงไป การกู้คืน + vendor_boot + ramdisk ทั่วไปนั้นคล้ายกับขั้นตอนการกู้คืนที่มีอยู่ แต่ เคอร์เนลจะโหลดจากอิมเมจ boot แทนที่จะเป็นจากอิมเมจ recovery กระบวนการเปิดเครื่องสำหรับ Recovery Mode มีดังนี้

  1. Bootloader เริ่มทำงานแล้วดังนี้

    1. พุชการกู้คืน + vendor_boot + RAM ทั่วไปไปยัง / (หาก OEM ทำซ้ำโมดูลเคอร์เนลใน RAM การกู้คืนด้วยการเพิ่มโมดูลดังกล่าวลงใน BOARD_RECOVERY_KERNEL_MODULES) โดยจะระบุ vendor_boot หรือไม่ก็ได้)
    2. เรียกใช้เคอร์เนลจากพาร์ติชัน boot
  2. Kernel ต่อเชื่อม ramdisk กับ / จากนั้นจะประมวลผล /init จาก ramdisk ทั่วไป

  3. ขั้นแรก init จะเริ่มต้น จากนั้นดำเนินการดังนี้

    1. ตั้งค่า IsRecoveryMode() == true และ ForceNormalBoot() == false
    2. โหลดโมดูลเคอร์เนลของผู้ให้บริการจาก /lib/modules
    3. เรียกใช้ DoFirstStageMount() แต่ข้ามการต่อเชื่อมเนื่องจาก IsRecoveryMode() == true. (อุปกรณ์ไม่เพิ่มพื้นที่ว่างสำหรับ RAM (เนื่องจาก / ยังคงเหมือนเดิม) แต่จะเรียกใช้ SetInitAvbVersionInRecovery())
    4. เริ่ม init ขั้นที่ 2 จาก /system/bin/init จาก recovery ramdisk

ทำให้ e2fsck พร้อมใช้งาน

ไฟล์ครีเอทีฟโฆษณาของอุปกรณ์จะรับค่าจากสิ่งต่อไปนี้ได้

  • virtual_ab_ota/launch_with_vendor_ramdisk.mk หากอุปกรณ์รองรับ Virtual Reality A/B แต่ไม่มีการบีบอัด

  • virtual_ab_ota/compression.mk หากอุปกรณ์รองรับ A/B เสมือน การบีบอัด

ไฟล์ที่ติดตั้งผลิตภัณฑ์ $ANDROID_PRODUCT_OUT/vendor-ramdisk/system/bin/e2fsck. ที่ รันไทม์ ขั้นตอนแรก init จะใช้ /system/bin/e2fsck

ตัวเลือก 2b: พาร์ติชันการกู้คืนเฉพาะที่ไม่ใช่ A/B

ใช้ตัวเลือกนี้สำหรับอุปกรณ์ที่มีพาร์ติชัน recovery ที่ไม่ใช่ A/B ซึ่งก็คือ อุปกรณ์มีพาร์ติชันชื่อ recovery โดยไม่มีคำต่อท้ายช่อง อุปกรณ์ดังกล่าว รวมข้อมูลต่อไปนี้

  • อุปกรณ์ที่ไม่ใช่ A/B
  • A/B และอุปกรณ์ A/B เสมือน ซึ่งไม่มีพาร์ติชันการกู้คืน ซึ่งสามารถอัปเดตได้ (ซึ่งผิดปกติ)

ramdisk vendor_boot มีบิตผู้ให้บริการของ ramdisk และผู้ให้บริการ โมดูลเคอร์เนล ซึ่งรวมถึงรายการต่อไปนี้

  • ไฟล์ fstab เฉพาะอุปกรณ์
  • lib/modules (รวมโมดูลเคอร์เนลของผู้ให้บริการ)

รูปภาพ recovery ต้องมีลักษณะในตัว ต้องมี ทรัพยากรที่จำเป็นทั้งหมดในการบูตโหมดการกู้คืน ได้แก่

  • อิมเมจเคอร์เนล
  • รูปภาพ DTBO
  • โมดูลเคอร์เนลใน lib/modules
  • ขั้นตอนแรก init เป็น symlink /init -> /system/bin/init
  • ไบนารี init ขั้นที่ 2 /system/bin/init
  • ไฟล์ fstab เฉพาะอุปกรณ์
  • ทรัพยากรการกู้คืนอื่นๆ ทั้งหมด รวมถึงไบนารี recovery

การกำหนดค่าผลิตภัณฑ์จะรับค่าในอุปกรณ์เหล่านั้น จาก generic_ramdisk.mk

ตั้งค่า BOARD

ตั้งค่าต่อไปนี้สำหรับอุปกรณ์ที่ไม่ใช่ A/B

BOARD_USES_RECOVERY_AS_BOOT :=
BOARD_USES_GENERIC_KERNEL_IMAGE := true
BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT :=
BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE :=
BOARD_MOVE_GSI_AVB_KEYS_TO_VENDOR_BOOT := true

ramdisk recovery ต้องมีลิงก์สัญลักษณ์ /init -> /system/bin/init และ init_second_stage.recovery เวลา /system/bin/init เมื่ออุปกรณ์เปิดเครื่อง โหมดการกู้คืน จำเป็นต้องใช้ไบนารี /system/bin/init เพื่อรองรับทั้ง 2 โหมดแรก ขั้นที่ 2 และระยะที่ 2

เมื่ออุปกรณ์เปิดเครื่องใน recovery เนื้อหาของ RAM ดิสก์ recovery จะถูก ดังนี้

  • /init -> /system/bin/init (จาก recovery ramdisk)
  • /system/bin/init (จาก recovery ramdisk สร้างขึ้น init_second_stage.recovery และดำเนินการจาก /init)

เมื่ออุปกรณ์เปิดเครื่องใน Android เนื้อหาของ vendor_boot + ทั่วไป ramdisks มีดังนี้:

  • /init (จาก ramdisk สร้างจาก init_first_stage)

ย้ายไฟล์ fstab

ย้ายไฟล์ fstab ใดๆ ที่ติดตั้งไปยัง RAM ทั่วไปไปยัง vendor_ramdisk และ RAM recovery RAM ตัวอย่างเช่น โปรดดู เปลี่ยน

ติดตั้งโมดูล

คุณสามารถติดตั้งโมดูลเฉพาะอุปกรณ์ลงใน vendor_ramdisk และ recovery ramdisk (ข้าม ขั้นตอนนี้หากคุณไม่มีโมดูลเฉพาะอุปกรณ์ให้ติดตั้ง) init ไม่เปลี่ยนรูท โมดูล vendor_ramdisk จะติดตั้งลงใน รากของ vendor_ramdisk โมดูล recovery จะติดตั้งลงใน รากของ ramdisk recovery สำหรับตัวอย่างในการติดตั้งโมดูลไปยัง vendor_ramdisk และ recovery ramdisk, se คอนโซลระยะแรกและข้อมูลเมตา การตรวจสอบข้อผิดพลาด

คอนโซลขั้นตอนแรก

หากต้องการติดตั้งโมดูลเวอร์ชัน vendor_ramdisk ให้ใช้รายการต่อไปนี้

PRODUCT_PACKAGES += \
    linker.vendor_ramdisk \
    shell_and_utilities_vendor_ramdisk \

การดำเนินการนี้จะช่วยให้มั่นใจว่าการติดตั้ง linker, sh และ toybox จะ $ANDROID_PRODUCT_OUT/vendor-ramdisk/system/bin ซึ่งจะติดตั้งเป็น /system/bin ภายใต้ vendor_ramdisk

หากต้องการเพิ่มโมดูลที่จำเป็นสำหรับคอนโซลขั้นตอนแรก (เช่น adbd) ให้เปิดใช้ ตัวแปร vendor_ramdisk ของโมดูลเหล่านี้โดยการอัปโหลดแพตช์ที่เกี่ยวข้องไปยัง AOSP จากนั้นใช้คำสั่งต่อไปนี้

PRODUCT_PACKAGES += adbd.vendor_ramdisk

ซึ่งช่วยให้มั่นใจว่าโมดูลที่ระบุจะติดตั้งไปยัง $ANDROID_PRODUCT_OUT/vendor-ramdisk/system/bin.

หากต้องการติดตั้งโมดูลเวอร์ชัน recovery ให้แทนที่ vendor_ramdisk ด้วย recovery:

PRODUCT_PACKAGES += \
    linker.recovery \
    shell_and_utilities_recovery \
    adbd.recovery \

การตรวจสอบข้อผิดพลาดข้อมูลเมตา

เพื่อรองรับข้อมูลเมตา การตรวจสอบข้อผิดพลาด ระหว่างการต่อเชื่อมขั้นแรก อุปกรณ์ที่ไม่รองรับ GKI จะติดตั้ง RAM ของโมดูลต่อไปนี้ หากต้องการเพิ่มการรองรับ GKI ให้ย้ายโมดูลไปที่ $ANDROID_PRODUCT_OUT/vendor-ramdisk/system/bin:

PRODUCT_PACKAGES += \
    linker.vendor_ramdisk \
    resize2fs.vendor_ramdisk \
    tune2fs.vendor_ramdisk \

หากต้องการรองรับการตรวจสอบข้อผิดพลาดข้อมูลเมตาระหว่างการต่อเชื่อมขั้นตอนแรกในการกู้คืน ให้เปิดใช้ ตัวแปรการกู้คืนของโมดูลเหล่านี้และติดตั้งโมดูลดังกล่าวด้วย

การเปลี่ยนแปลงขั้นตอนการเปิดเครื่อง

เมื่อเปิดเครื่องใน Android ขั้นตอนการเปิดเครื่องจะไม่เปลี่ยนแปลง ปุ่ม vendor_boot + RAM ทั่วไปจะคล้ายกับกระบวนการเปิดเครื่องที่มีอยู่ เว้นแต่ว่า fstab โหลดจาก vendor_boot เนื่องจาก system/bin/recovery ไม่มีอยู่ first_stage_init จะจัดการกับการเปิดเครื่องตามปกติ

เมื่อเปิดเครื่องในโหมดการกู้คืน ขั้นตอนการเปิดเครื่องจะไม่เปลี่ยนแปลง การกู้คืน ramdisk จะถูกโหลดในลักษณะเดียวกับขั้นตอนการกู้คืนที่มีอยู่ เคอร์เนลโหลดจากอิมเมจ recovery โดยทำตามขั้นตอนต่อไปนี้

  1. Bootloader เริ่มทำงานแล้วดังนี้

    1. พุช RAM การกู้คืนไปยัง /
    2. เรียกใช้เคอร์เนลจากพาร์ติชัน recovery
  2. Kernel ต่อเชื่อม ramdisk กับ / จากนั้นจะประมวลผล /init ซึ่งเป็นลิงก์สัญลักษณ์ไปยัง /system/bin/init จาก RAM ดิสก์ recovery

  3. ขั้นแรก init จะเริ่มต้น จากนั้นดำเนินการดังนี้

    1. ตั้งค่า IsRecoveryMode() == true และ ForceNormalBoot() == false
    2. โหลดโมดูลเคอร์เนลของผู้ให้บริการจาก /lib/modules
    3. เรียกใช้ DoFirstStageMount() แต่ข้ามการต่อเชื่อมเนื่องจาก IsRecoveryMode() == true. (อุปกรณ์ไม่เพิ่มพื้นที่ว่างสำหรับ RAM (เนื่องจาก / ยังคงเหมือนเดิม) แต่จะเรียกใช้ SetInitAvbVersionInRecovery())
    4. เริ่ม init ขั้นที่ 2 จาก /system/bin/init จาก recovery ramdisk

การประทับเวลารูปภาพเปิดเครื่อง

โค้ดต่อไปนี้เป็นตัวอย่างไฟล์การประทับเวลารูปภาพ boot

####################################
# from generate-common-build-props
# These properties identify this partition image.
####################################
ro.product.bootimage.brand=Android
ro.product.bootimage.device=generic_arm64
ro.product.bootimage.manufacturer=unknown
ro.product.bootimage.model=AOSP on ARM64
ro.product.bootimage.name=aosp_arm64
ro.bootimage.build.date=Mon Nov 16 22:46:27 UTC 2020
ro.bootimage.build.date.utc=1605566787
ro.bootimage.build.fingerprint=Android/aosp_arm64/generic_arm64:S/MASTER/6976199:userdebug/test-keys
ro.bootimage.build.id=MASTER
ro.bootimage.build.tags=test-keys
ro.bootimage.build.type=userdebug
ro.bootimage.build.version.incremental=6976199
ro.bootimage.build.version.release=11
ro.bootimage.build.version.release_or_codename=S
ro.bootimage.build.version.sdk=30
# Auto-added by post_process_props.py
persist.sys.usb.config=none
# end of file
  • ขณะสร้าง ระบบจะเพิ่มไฟล์ system/etc/ramdisk/build.prop ไปยังส่วนทั่วไป ramdisk ไฟล์นี้มีข้อมูลการประทับเวลาของบิลด์

  • ระหว่างรันไทม์ ขั้นตอนแรกคือ init สำเนา จาก ramdisk ไปยัง tmpfs ก่อนที่จะทำให้ ramdisk ว่าง ขั้นที่ init อ่านได้ ไฟล์นี้เพื่อตั้งค่าคุณสมบัติการประทับเวลารูปภาพ boot