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

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

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

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

**ขั้นตอน**

**บูตโหลดเดอร์หลัก**
บูตโหลดเดอร์หลัก (PBL) ซึ่งเก็บไว้ใน Boot ROM  เป็นขั้นตอนแรกของกระบวนการบูต โค้ดนี้เขียนโดยผู้ผลิตชิปเซ็ต 
PBL ตรวจสอบความถูกต้องของขั้นตอนถัดไป
ในสมาร์ทโฟน ซัมซุง นั้น Samsung Secure Boot Key (SSBK) จะถูกใช้โดย ROM บูตเพื่อตรวจสอบขั้นตอนต่อไป 
บน SoC จาก ควอลคอมม์ คุณสามารถเข้าสู่ โหมดดาวน์โหลดฉุกเฉินของ ควอลคอมม์ ได้จากตัวบูตโหลดเดอร์หลัก
หากการตรวจสอบ บูตโหลดเดอร์ รองล้มเหลว จะเข้าสู่ EDL date=September 2021 ดีกว่า แหล่งที่มา จำเป็น 

**บูตโหลดเดอร์รอง**
เนื่องจากพื้นที่ใน 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 จะโอนการควบคุมไปยังเคอร์เนล ลีนุกซ์

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

**ไซโกต**
ไซโกต ถูกสร้างขึ้นโดยกระบวนการ init ซึ่งรับผิดชอบในการเริ่มแอปพลิเคชัน แอนดรอยด์ และกระบวนการบริการ มันโหลดและเริ่มต้นคลาสที่ควรจะใช้บ่อยมากลงในฮีป เช่นโครงสร้างข้อมูล dex ของไลบรารี หลังจากที่ ไซโกต เริ่มทำงาน มันจะฟังคำสั่งจากซ็อกเก็ต เมื่อต้องการเริ่มต้นแอปพลิเคชันใหม่ คำสั่งจะถูกส่งไปยัง ไซโกต ซึ่งดำเนินการเรียกระบบ fork()date=September 2021 จำเป็นต้องมีการอ้างอิง 

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

**อ้างอิง**

**หมายเหตุ**

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