สร้างเมล็ดพิกเซล

คู่มือนี้ให้คำแนะนำทีละขั้นตอนเกี่ยวกับวิธีดาวน์โหลด คอมไพล์ และแฟลชเคอร์เนล Pixel แบบกำหนดเองเพื่อการพัฒนา เนื่องจาก GKI ทำให้ตอนนี้สามารถอัปเดตเคอร์เนลได้โดยอิสระจากบิลด์แพลตฟอร์ม Android ขั้นตอนเหล่านี้ใช้ได้กับอุปกรณ์ Pixel 6 ขึ้นไปเท่านั้น เนื่องจากอุปกรณ์ Pixel 5 และอุปกรณ์รุ่นก่อนหน้าจำเป็นต้องอัปเดตโมดูลเคอร์เนลบนพาร์ติชัน vendor ซึ่งขึ้นอยู่กับแพลตฟอร์ม Android บิวด์สำหรับอุปกรณ์เหล่านั้น ตาราง สาขาของเคอร์เนลพิกเซลที่สนับสนุน GKI ประกอบด้วยสาขารายการพื้นที่เก็บข้อมูลเคอร์เนลสำหรับอุปกรณ์ Pixel ที่รองรับ GKI แต่ละเครื่อง โปรดดูส่วน Legacy Pixel Kernels สำหรับ Pixel 5 และสาขารายการเคอร์เนลรุ่นก่อนหน้า

GKI รองรับสาขาเคอร์เนล Pixel
อุปกรณ์ เส้นทางไบนารีในแผนผัง AOSP สาขาพื้นที่เก็บข้อมูล เคอร์เนล GKI
พิกเซล 8 (ชิบะ)
Pixel 8 Pro (ฮัสกี้)
อุปกรณ์/google/shusky-kernel หุ่นยนต์-gs-shusky-5.15-android14-d1 หุ่นยนต์ 14-5.15
พิกเซลพับ (เฟลิกซ์) อุปกรณ์/google/felix-kernel android-gs-เฟลิกซ์-5.10-android14 หุ่นยนต์ 13-5.10
Pixel Tablet (แทงกอร์โปร) อุปกรณ์/google/tangorpro-kernel android-gs-tangorpro-5.10-android14 หุ่นยนต์ 13-5.10
Pixel 7a (แมวป่าชนิดหนึ่ง) อุปกรณ์/google/lynx-kernel android-gs-lynx-5.10-android14 หุ่นยนต์ 13-5.10
พิกเซล 7 (เสือดำ)
Pixel 7 Pro (เสือชีตาห์)
อุปกรณ์/google/pantah-kernel android-gs-pantah-5.10-android14 หุ่นยนต์ 13-5.10
Pixel 6a (บลูเจย์) อุปกรณ์/google/bluejay-kernel android-gs-bluejay-5.10-android14 หุ่นยนต์ 13-5.10
พิกเซล 6 (โอริโอล)
Pixel 6 Pro (อีกา)
อุปกรณ์/google/raviole-kernel android-gs-raviole-5.10-android14 หุ่นยนต์ 13-5.10

นอกจากเคอร์เนลที่รองรับจากโรงงานแล้ว อุปกรณ์ Pixel 6 และ 6 Pro ยังได้รับการรองรับเพื่อวัตถุประสงค์ในการพัฒนา GKI เฉพาะบนสาขาเคอร์เนลทั่วไปของ Android ที่รวมอยู่ใน แพลตฟอร์ม Android ของ Pixel 6/6 Pro ที่รองรับและตารางการรวมเคอร์เนล เนื่องจากความแตกต่างของ UAPI ของผู้จำหน่ายระหว่าง HAL แพลตฟอร์ม Android และไดรเวอร์เคอร์เนล Pixel ตารางจึงจัดเตรียมชุดค่าผสมของบิลด์ที่รองรับ

รองรับแพลตฟอร์ม Android และเคอร์เนลของ Pixel 6/6 Pro ที่รองรับ
สาขารายการเคอร์เนลพิกเซล สาขาจีเคไอ การสร้างแพลตฟอร์ม Android การสนับสนุน aosp-main ?
gs-android-gs-raviole-mainline android-mainline ( แท็ก v6.7 ) UP1A.231005.007.A1 (10762838) ใช่
android14-gs-พิกเซล-6.1 หุ่นยนต์ 14-6.1 UP1A.231005.007.A1 (10762838) ใช่
gs-android13-gs-ราวีโอล-5.15 หุ่นยนต์ 13-5.15 TQ1A.230205.002 (9471150) เลขที่

เตรียมอุปกรณ์ Pixel ของคุณ

แผนภูมิขั้นตอนต่อไปนี้อธิบายกระบวนการอัปเดตเคอร์เนลบนอุปกรณ์ Pixel 6 ขึ้นไป:

**รูปที่ 1.** ผังงานการอัปเดตเคอร์เนล

แฟลชอุปกรณ์โดยใช้ flash.android.com

  1. ไปที่ flash.android.com
  2. เลือกบิลด์ Android ตาม แพลตฟอร์ม Android และเคอร์เนลที่รองรับ
  3. เลือกตัวเลือกต่อไปนี้:
    • ล้างอุปกรณ์
    • บังคับให้แฟลชพาร์ติชั่นทั้งหมด
    • ปิดการใช้งานการยืนยัน
  4. กดปุ่ม ติดตั้งบิลด์ เพื่อแฟลชอุปกรณ์

**รูปที่ 2.** ตัวอย่างสถานีแฟลช

ดาวน์โหลดและคอมไพล์เคอร์เนล

ซิงค์ที่เก็บเคอร์เนล

รันคำสั่งต่อไปนี้เพื่อดาวน์โหลดซอร์สโค้ดเคอร์เนล โปรดดู แพลตฟอร์ม Android ของ Pixel 6/6 Pro ที่รองรับและตารางการรวมเคอร์เนล สำหรับ Pixel KERNEL_MANIFEST_BRANCH

repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags

อัพเดต ramdisk ของผู้จำหน่าย

อัปเดตไฟล์ vendor_ramdisk- DEVICE .img ในพื้นที่เก็บข้อมูลเคอร์เนลเพื่อให้ตรงกับบิลด์แพลตฟอร์ม Android ที่แฟลชบนอุปกรณ์ มีตัวเลือกสองสามตัวที่คุณสามารถติดตามได้

ตัวเลือกที่ 1) แยกอิมเมจ ramdisk ของผู้จำหน่ายออกจาก อิมเมจโรงงาน Pixel
  1. ดาวน์โหลดอิมเมจจากโรงงานที่รองรับสำหรับอุปกรณ์ของคุณจาก https://developers.google.com/android/images

  2. แยก vendor_boot.img :

    • คำสั่งต่อไปนี้ใช้ Pixel 6 Pro UP1A.231005.007.a1 เป็นตัวอย่าง แทนที่ชื่อไฟล์ zip ด้วยชื่อไฟล์ของอิมเมจจากโรงงานที่คุณดาวน์โหลด
      unzip raven-up1a.231005.007.a1-factory-5d927f3e.zip
    
      cd raven-up1a.231005.007.a1
    
      unzip image-raven-up1a.231005.007.a1.zip vendor_boot.img
    
  3. แกะ vendor_boot.img เพื่อรับ ramdisk ของผู้จำหน่าย

      KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \
          --out vendor_boot_out
    
  4. คัดลอกไฟล์ ramdisk_ ที่แยกแล้วไปยังที่เก็บเคอร์เนล Pixel

    อุปกรณ์ DEVICE_RAMDISK_PATH
    พิกเซล 6 (โอริโอล)
    Pixel 6 Pro (อีกา)
    สร้างไว้ล่วงหน้า/boot-สิ่งประดิษฐ์/ramdisks/vendor_ramdisk- oriole.img
    Pixel 6a (บลูเจย์) ส่วนตัว/อุปกรณ์/google/bluejay/vendor_ramdisk- bluejay.img
      cp vendor_boot_out/vendor-ramdisk-by-name/ramdisk_ \
          KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH
    
ตัวเลือกที่ 2) คัดลอก vendor_ramdisk จากที่เก็บแพลตฟอร์ม Android ที่สร้างขึ้นในเครื่อง
อุปกรณ์ DEVICE_RAMDISK_PATH
พิกเซล 6 (โอริโอล)
Pixel 6 Pro (อีกา)
สร้างไว้ล่วงหน้า/boot-สิ่งประดิษฐ์/ramdisks/vendor_ramdisk- oriole.img
Pixel 6a (บลูเจย์) ส่วนตัว/อุปกรณ์/google/bluejay/vendor_ramdisk- bluejay.img
cp ANDROID_ROOT/out/target/product/DEVICE/vendor_ramdisk-debug.img \
   KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH/vendor_ramdisk-DEVICE.img

รวบรวมเคอร์เนล (Kleaf)

ใน Android 13 สคริปต์ build.sh ถูกแทนที่ด้วยระบบการสร้างเคอร์เนลใหม่ที่เรียกว่า Kleaf สำหรับอุปกรณ์ที่ใช้ android13-5.15 และใหม่กว่า ควรสร้างเคอร์เนลโดยใช้ Kleaf

สำหรับ Pixel 6 และ 6 Pro ที่ใช้ android14 และเคอร์เนลใหม่กว่า ให้รันคำสั่ง Kleaf build:

tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist

สำหรับ Pixel 6 และ 6 Pro ที่มีเคอร์เนล android13-5.15 ให้รันคำสั่ง Kleaf build:

tools/bazel run --lto=thin //gs/google-modules/soc-modules:slider_dist

สำหรับเคอร์เนล Pixel อื่นๆ ทั้งหมด ให้รันสคริปต์ build_ DEVICE.sh ที่ KERNEL_REPO_ROOT ตัวอย่างเช่น หากต้องการสร้างเคอร์เนลสำหรับ Pixel 6 บนสาขา android-gs-raviole-5.10-android14 คุณจะต้องรันคำสั่ง:

build_slider.sh

ตามค่าเริ่มต้น สคริปต์ build_ DEVICE .sh จะใช้เคอร์เนล GKI ที่สร้างไว้ล่วงหน้าเพื่อเร่งกระบวนการสร้าง หากคุณต้องการแก้ไขเคอร์เนลหลัก ให้ตั้งค่าตัวแปรสภาพแวดล้อม BUILD_AOSP_KERNEL=1 เพื่อสร้างเคอร์เนลจากแหล่งที่มาในเครื่องแทน

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับระบบการสร้างเคอร์เนลและวิธีปรับแต่งโครงสร้าง โปรดดู เอกสารประกอบของ Kleaf

แฟลชภาพเคอร์เนล

หมายเหตุ: หากคุณไม่ได้ปิดใช้งานการยืนยัน คุณต้องดำเนินการก่อนที่จะแฟลชเคอร์เนลแบบกำหนดเอง นี่คือคำสั่งที่ต้องทำ:
fastboot oem disable-verification
คำเตือน: หากคุณกำลังแฟลชเคอร์เนลแบบกำหนดเองที่ด้านบนของโครงสร้างแพลตฟอร์ม คุณอาจต้องล้างอุปกรณ์ของคุณหากมีการดาวน์เกรดระดับแพตช์ความปลอดภัย (SPL) ที่เกี่ยวข้องกับเคอร์เนลใหม่ กระบวนการนี้จะลบข้อมูลส่วนบุคคลของคุณทั้งหมด อย่าลืมสำรองข้อมูลของคุณก่อนที่จะเช็ด
fastboot -w

หากต้องการแฟลชอิมเมจเคอร์เนล ให้รันคำสั่ง fastboot flash สำหรับแต่ละพาร์ติชันเคอร์เนลที่แสดงอยู่ในอุปกรณ์ของคุณ สำหรับพาร์ติชันไดนามิก คุณต้องรีบูตเข้าสู่โหมด fastbootd ก่อนที่จะกะพริบ

อุปกรณ์ พาร์ติชั่นเคอร์เนล
พิกเซล 6 (โอริโอล)
Pixel 6 Pro (อีกา)
Pixel 6a (บลูเจย์)
บูต
ดีทีบีโอ
vendor_boot
vendor_dlkm (พาร์ติชันแบบไดนามิก)
พิกเซล 8 (ชิบะ)
Pixel 8 Pro (ฮัสกี้)
พิกเซลพับ (เฟลิกซ์)
Pixel Tablet (แทงกอร์โปร)
Pixel 7a (แมวป่าชนิดหนึ่ง)
พิกเซล 7 (เสือดำ)
Pixel 7 Pro (เสือชีตาห์)
บูต
ดีทีบีโอ
vendor_kernel_boot
vendor_dlkm (พาร์ติชันแบบไดนามิก)
system_dlkm (พาร์ติชันแบบไดนามิก)

นี่คือคำสั่งการกะพริบสำหรับ Pixel 6 บน android-mainline :

fastboot flash boot        out/slider/dist/boot.img
fastboot flash dtbo        out/slider/dist/dtbo.img
fastboot flash vendor_boot out/slider/dist/vendor_boot.img
fastboot reboot fastboot
fastboot flash vendor_dlkm out/slider/dist/vendor_dlkm.img

ภาพเคอร์เนลสามารถพบได้ใน DIST_DIR

สาขาเคอร์เนล DIST_DIR
เวอร์ชัน 5.10 out/mixed/dist
เวอร์ชัน 5.15 และใหม่กว่า out/ DEVICE /dist
หมายเหตุ: หากคุณมีดองเกิลแบบอนุกรมและต้องการเปิดใช้งานบันทึกแบบอนุกรม คำสั่งคือ:
fastboot oem uart enable
fastboot oem uart config 3000000
ตัวอย่างคำสั่งในการเชื่อมต่อจากโฮสต์:
screen -fn /dev/ttyUSB* 3000000

คืนค่าอิมเมจจากโรงงาน

หากต้องการคืนค่าอุปกรณ์กลับเป็นอิมเมจจากโรงงาน คุณสามารถใช้ flash.android.com

เมล็ดพิกเซลแบบเดิม

เพื่อเป็นข้อมูลอ้างอิง ตาราง สาขาเคอร์เนล Pixel แบบเดิม จะมีสาขาที่เก็บเคอร์เนลสำหรับ Pixel 5 และอุปกรณ์รุ่นก่อนหน้า อุปกรณ์เหล่านี้เป็นอุปกรณ์ที่ไม่รองรับ GKI

สาขาเคอร์เนล Pixel รุ่นเก่า
อุปกรณ์ เส้นทางไบนารีในแผนผัง AOSP สาขาพื้นที่เก็บข้อมูล
Pixel 5a (บาร์บีคิว)
Pixel 4a (5G) (หนาม)
พิกเซล 5 (เรดฟิน)
อุปกรณ์/google/redbull-kernel android-msm-redbull-4.19-android14
Pixel 4a (ซันฟิช) อุปกรณ์/google/sunfish-kernel android-msm-sunfish-4.14-android13-qpr3
พิกเซล 4 (เปลวไฟ)
Pixel 4 XL (คอรัล)
อุปกรณ์/google/coral-kernel Android-MSM-ปะการัง-4.14-android13
Pixel 3a (ซาร์โก)
Pixel 3a XL (โบนิโต)
อุปกรณ์/google/bonito-kernel หุ่นยนต์-msm-โบนิโต-4.9-android12L
พิกเซล 3 (เส้นสีน้ำเงิน)
Pixel 3 XL (ครอสแฮทช์)
อุปกรณ์/google/crosshatch-kernel หุ่นยนต์-msm-crosshatch-4.9-android12
Pixel 2 (ตาล)
Pixel 2 XL (ไทเมน)
อุปกรณ์/google/wahoo-kernel หุ่นยนต์-msm-wahoo-4.4-android10-qpr3
พิกเซล (ปลาเซลฟิช)
Pixel XL (มาร์ลิน)
อุปกรณ์/google/marlin-kernel android-msm-marlin-3.18-พาย-qpr2