กระบวนการบูตของอุปกรณ์แอนดรอยด์

กระบวนการบูตของอุปกรณ์แอนดรอยด์ เริ่มต้นตั้งแต่การเปิดเครื่อง SoC (ระบบบนชิป) และสิ้นสุดลงเมื่อหน้าจอหลักปรากฏขึ้นหรือโหมดพิเศษ เช่นการกู้คืนและบูตอย่างรวดเร็ว กระบวนการบูตของอุปกรณ์ที่ใช้ แอนดรอยด์ ได้รับอิทธิพลจากการออกแบบเฟิร์มแวร์ของผู้ผลิต SoC

## ภูมิหลัง
ณ ปี 2018 SoC ของตลาดแอนดรอยด์ 90% ได้รับการจัดหาโดย ควอลคอมม์, ซัมซุง หรือ มีเดียเทก ผู้จำหน่ายรายอื่นได้แก่ ร็อคชิป, มาร์เวล, อินวิเดีย และก่อนหน้านี้คือ เท็กซัสอินสทรูเมนท์ส

## ประวัติ
Verified boot ซึ่ง เป็นมาตรการรักษาความปลอดภัยในการบูต ได้รับการแนะนำพร้อมกับแอนดรอยด์ คิทแคท

## ขั้นตอน
### บูตโหลดเดอร์หลัก
บูตโหลดเดอร์หลัก (PBL) ซึ่งจะเก็บไว้ใน Boot ROM เป็นขั้นตอนแรกของกระบวนการบูต โค้ดนี้เขียนโดยผู้ผลิตชิปเซ็ต

PBL ตรวจสอบความถูกต้องของขั้นตอนถัดไป

ในสมาร์ทโฟนซัมซุงนั้น Samsung Secure Boot Key (SSBK) จะถูกใช้โดย ROM บูตเพื่อตรวจสอบขั้นตอนต่อไป

บน SoC จากควอลคอมม์ คุณสามารถเข้าสู่โหมดดาวน์โหลดฉุกเฉินของ ควอลคอมม์ได้จากตัวบูตโหลดเดอร์หลัก

หากการตรวจสอบบูตโหลดเดอร์รองล้มเหลวจะเข้าสู่ EDL&#x5B; *[[วิกิพีเดีย:การพิสูจน์ยืนยันได้|<span title="This claim needs references to better sources. (September 2021)">ดีกว่า&nbsp;แหล่งที่มา&nbsp;จำเป็น</span>]]* &#x5D;

### บูตโหลดเดอร์รอง
เนื่องจากพื้นที่ใน ROM บูตมีจำกัดจึงใช้บูตโหลดเดอร์รองบน eMMC หรือ eUFS ตัวโหลดบูตรองจะเริ่มต้นTrustZone

ตัวอย่างเช่นบนควอลคอมม์ MSM8960 บูตโหลดเดอร์รอง 1 จะโหลด บูตโหลดเดอร์รอง 2 บูตโหลดเดอร์รอง 2 โหลด TrustZone และ บูตโหลดเดอร์รอง 3

ปัจจุบันควอลคอมม์เรียก SBL ว่า XBL และเป็นการใช้งานแบบ UEFI

ควอลคอมม์ใช้ LK (Little Kernel) หรือ XBL (eXtensible Bootloader), มีเดียเทกใช้ Das U-Boot Little Kernel คือ ไมโครเคอร์เนล สำหรับ อุปกรณ์ฝังตัว ซึ่งได้รับการปรับเปลี่ยนโดยควอลคอมม์เพื่อใช้เป็นบูตโหลดเดอร์

### Aboot
แอนดรอยด์ บูตโหลดเดอร์ (Aboot) ซึ่งใช้งานอินเทอร์เฟซ ฟาสต์บูต (ไม่มีในอุปกรณ์ซัมซุง) Aboot ตรวจสอบความถูกต้องของพาร์ติชันการบูตและการกู้คืน โดยการกดปุ่มผสมที่เฉพาะเจาะจง อุปกรณ์ก็สามารถบูตเข้าสู่ โหมดการกู้คืน ได้ จากนั้น Aboot จะโอนการควบคุมไปยังเคอร์เนล ลีนุกซ์

### เคอร์เนลและอินนิแทรมเอฟเอส
อินนิแทรมเอฟเอส เป็นไฟล์เก็บถาวร cpio ที่ผ่านการบีบอัดด้วย gzip ซึ่งมีระบบไฟล์รูทขนาดเล็ก ประกอบด้วย init ซึ่งจะถูกดำเนินการเคอร์เนลแอนดรอยด์เป็นเวอร์ชันปรับเปลี่ยนของเคอร์เนลกระบวนการเริ่มลินุกซ์จะทำการติดพาร์ติชัน dm-verity ตรวจสอบความสมบูรณ์ของพาร์ติชันที่ระบุไว้ในไฟล์ fstab dm-verity คือโมดูลเคอร์เนล Linux ที่ถูกเปิดตัวโดยกูเกิลในแอนดรอยด์ตั้งแต่เวอร์ชัน 4.4 การใช้งานสต็อกรองรับการยืนยันแบบบล็อกเท่านั้น แต่ ซัมซุงได้เพิ่มการรองรับสำหรับไฟล์แล้ว

### ไซโกต
ไซโกต ถูกสร้างขึ้นโดยกระบวนการ init ซึ่งรับผิดชอบในการเริ่มแอปพลิเคชัน แอนดรอยด์ และกระบวนการบริการ มันโหลดและเริ่มต้นคลาสที่ควรจะใช้บ่อยมากลงในฮีป เช่นโครงสร้างข้อมูล dex ของไลบรารีหลังจากที่ไซโกตเริ่มทำงาน มันจะฟังคำสั่งจากซ็อกเก็ตเมื่อต้องการเริ่มต้นแอปพลิเคชันใหม่ คำสั่งจะถูกส่งไปยังไซโกตซึ่งดำเนินการเรียกระบบ fork&#x5B; *[[วิกิพีเดีย:ต้องการอ้างอิง|<span title="This claim needs references to reliable sources. (September 2021)">จำเป็นต้องมีการอ้างอิง</span>]]* &#x5D;

## เลย์เอาต์พาร์ติชัน
ระบบแอนดรอยด์แบ่งออกเป็นพาร์ติชั่นต่าง ๆ

แพลตฟอร์มควอลคอมม์ใช้ประโยชน์จากตารางพาร์ติชั่น GUID ข้อกำหนดนี้เป็นส่วนหนึ่งของข้อกำหนด UEFI แต่ไม่ได้ขึ้นอยู่กับเฟิร์มแวร์ UEFI

## อ้างอิง

## หมายเหตุ

## แหล่งข้อมูลอื่น
* Android.com - บูตโฟลว์
* การจัดการเวลาการบูต
* ตัวโหลดบูตของ Qualcomm
* ห่วงโซ่แห่งความไว้วางใจของ Qualcomm
* การบูตที่ปลอดภัยและการตรวจสอบภาพ
* การบูตที่ปลอดภัยบน Snapdragon 410
* การวิเคราะห์ Qualcomm Secure Boot Chains
* msm8916-เมนไลน์/qhypstub
* การเริ่มต้นกระบวนการ init ของระบบ Android และการวิเคราะห์ init.rc แบบเต็ม
* ภาษาเริ่มต้นของ Android

หมวดหมู่:บูตโลดเดอร์
หมวดหมู่:แอนดรอยด์ (ระบบปฏิบัติการ)