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

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

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

 ขั้นตอน 

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

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

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

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

หากการตรวจสอบ บูตโหลดเดอร์ รองล้มเหลว จะเข้าสู่ EDL [ ดีกว่า แหล่งที่มา จำเป็น ]

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

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

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

ควอลคอมม์ใช้ LK (Little Kernel) หรือ XBL (eXtensible Bootloader), มีเดียเทก ใช้ Das U-Boot Garri, Khireddine; Kenaza, Tayeb; Aissani, Mohamed (October 2018). "A Novel approach for bootkit detection in Android Platform". 2018 International Conference on Smart Communications in Network Technologies (SaCoNeT). IEEE. pp. 277–282. doi:10.1109/saconet.2018.8585583. ISBN 978-1-5386-9493-0. S2CID 56718094. Little Kernel คือ ไมโครเคอร์เนล สำหรับ อุปกรณ์ฝังตัว ซึ่งได้รับการปรับเปลี่ยนโดย ควอลคอมม์ เพื่อใช้เป็นบูตโหลดเดอร์ 

 Aboot 
แอนดรอยด์ บูตโหลดเดอร์ (Aboot) ซึ่งใช้งานอินเทอร์เฟซ ฟาสต์บูต (ซึ่งไม่มีในอุปกรณ์ ซัมซุง) Aboot ตรวจสอบความถูกต้องของพาร์ติชันการบูตและการกู้คืน Hay, Roee (2017-08-14). "fastboot oem vuln: android bootloader vulnerabilities in vendor customizations". Proceedings of the 11th USENIX Conference on Offensive Technologies. WOOT'17. Vancouver, BC, Canada: USENIX Association: 22. โดยการกดปุ่มผสมที่เฉพาะเจาะจง อุปกรณ์ก็สามารถบูตเข้าสู่ โหมดการกู้คืน ได้ จากนั้น Aboot จะโอนการควบคุมไปยังเคอร์เนล ลีนุกซ์

 เคอร์เนล และ initramfs 
initramfs เป็นไฟล์เก็บถาวร cpio ที่ผ่านการบีบอัดด้วย gzip ซึ่งมีระบบไฟล์รูทขนาดเล็ก ประกอบด้วย init ซึ่งจะถูกดำเนินการ เคอร์เนล แอนดรอยด์ เป็นเวอร์ชันปรับเปลี่ยนของเคอร์เนล Linux Init จะทำการ mount พาร์ติชัน dm-verity ตรวจสอบความสมบูรณ์ของพาร์ติชันที่ระบุไว้ในไฟล์ fstab dm-verity คือโมดูลเคอร์เนล Linux ที่ถูกเปิดตัวโดย กูเกล ใน แอนดรอยด์ ตั้งแต่เวอร์ชัน 4.4 การใช้งานสต็อกรองรับการยืนยันแบบบล็อกเท่านั้น แต่ ซัมซุง ได้เพิ่มการรองรับสำหรับไฟล์แล้ว Kanonov, Uri; Wool, Avishai (2016-10-24). "Secure Containers in Android". Proceedings of the 6th Workshop on Security and Privacy in Smartphones and Mobile Devices. SPSM '16. New York, NY, USA: ACM. pp. 3–12. doi:10.1145/2994459.2994470. ISBN 9781450345644. S2CID 8510729.

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

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

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