כברירת מחדל, רוב מכשירי Android מגיעים עם תוכנת אתחול נעולה, כלומר המשתמשים לא יכולים להבהיל את תוכנת האתחול או את המחיצות של המכשיר. אם יש צורך, אתם (וגם משתמשי המכשיר שהפעילו את אפשרויות הפיתוח) יכולים לבטל את נעילת מנהל האתחול כדי להפעיל קובצי אימג' חדשים.
כניסה לתוכנת האתחול
כדי להשתמש בפקודות fastboot
, צריך להיות במצב bootloader. אחת מהדרכים לעשות זאת היא לשלוח את הפקודה adb adb reboot bootloader
. בטלפונים מסוימים אפשר גם להפעיל מחדש את המכשיר ל-bootloader בלחיצה על שילוב מקשים (בדרך כלל לחצן הנמכת עוצמת הקול) בזמן האתחול של המכשיר.
ביטול הנעילה של תוכנת האתחול
במצב bootloader, כדי לבטל את הנעילה של תוכנת האתחול ולאפשר את העדכון מחדש של המחיצות, מריצים במכשיר את הפקודה fastboot flashing unlock
. אחרי שמגדירים את מצב הנעילה, הוא נשאר בתוקף גם אחרי הפעלות מחדש.
המכשירים צריכים לדחות את הפקודה fastboot flashing unlock
, אלא אם הערך של get_unlock_ability
מוגדר כ-1
. אם ההגדרה היא 0
, המשתמש צריך לאתחל למסך הבית, לפתוח את התפריט הגדרות > מערכת > אפשרויות למפתחים ולהפעיל את האפשרות ביטול נעילה של OEM (הגדרת get_unlock_ability
ל-1
). אחרי ההגדרה, המצב הזה נשמר גם אחרי הפעלות מחדש ואיפוסים לנתוני היצרן.
כשהפקודה fastboot flashing unlock
נשלחת, המכשיר אמור להציג התראה למשתמשים על כך שעשויות להיות בעיות בתמונות לא רשמיות.
אחרי שהמשתמש מאשר את האזהרה, המכשיר אמור לבצע איפוס לנתוני היצרן כדי למנוע גישה לא מורשית לנתונים. מנהל האתחול אמור לאפס את המכשיר גם אם הוא לא יכול לעצב אותו מחדש כראוי. רק אחרי איפוס אפשר להגדיר את הדגל הקבוע כדי שאפשר יהיה לבצע פלאש מחדש של המכשיר.
כל זיכרון RAM שלא נמחק עדיין צריך לאפס במהלך התהליך של fastboot flashing unlock
. הפעולה הזו מונעת התקפות שמקורן בקריאה של תוכן RAM שנשאר מההפעלה הקודמת. באופן דומה, במכשירים לא נעולים צריך לנקות את ה-RAM בכל הפעלה (אלא אם הפעולה הזו יוצרת עיכוב בלתי קביל), אבל צריך להשאיר את האזור שמשמש את ramoops
של הליבה.
נעילת תוכנת האתחול
כדי לנעול את תוכנת האתחול ולאפס את המכשיר, מריצים במכשיר את הפקודה fastboot flashing lock
. מכשירים המיועדים למכירה בחנות צריכים להישלח במצב נעול (כאשר get_unlock_ability
מחזיר את הערך 0
) כדי להבטיח שמתקפים לא יוכלו לפגוע במכשיר על ידי התקנת מערכת או קובץ אימג' להפעלה חדשים.
הגדרת מאפייני נעילה וביטול נעילה
צריך להגדיר את המאפיין ro.oem_unlock_supported
בזמן ה-build, בהתאם לכך אם המכשיר תומך בביטול נעילה באמצעות פלאש.
- אם המכשיר תומך בביטול נעילה באמצעות הבהוב, מגדירים את
ro.oem_unlock_supported
לערך1
. - אם המכשיר לא תומך בביטול נעילה באמצעות פלאש, מגדירים את
ro.oem_unlock_supported
לערך0
.
אם המכשיר תומך בביטול נעילה באמצעות פלאש, מנהל האתחול אמור לציין את סטטוס הנעילה על ידי הגדרת המשתנה androidboot.flash.locked
בשורת הפקודה של הליבה לערך 1
אם המכשיר נעול, או לערך 0
אם המכשיר לא נעול. צריך להגדיר את המשתנה הזה ב-bootconfig במקום בשורת הפקודה של הליבה ב-Android 12.
במכשירים שתומכים ב-dm-verity, משתמשים ב-ro.boot.verifiedbootstate
כדי להגדיר את הערך של ro.boot.flash.locked
ל-0
. הפעולה הזו פותחת את נעילת תוכנת האתחול אם סטטוס ההפעלה המאומתת הוא כתום.
הגנה על קטעים קריטיים
המכשירים צריכים לתמוך בנעילה ובביטול הנעילה של קטעים קריטיים, שמוגדרים בתור כל מה שדרוש כדי להפעיל את המכשיר בתוכנת האתחול. קטעים כאלה יכולים לכלול מפסקים, מחיצות וירטואליות לרכזת חיישנים, מנהל אתחול של שלב ראשון ועוד. כדי לנעול קטעים קריטיים, צריך להשתמש במנגנון שימנע מקוד (ליבה, קובץ אימג' לשחזור, קוד OTA וכו') שפועל במכשיר לשנות בכוונה קטע קריטי כלשהו. עדכונים אוטומטיים לא אמורים לעדכן קטעים קריטיים אם המכשיר נמצא במצב קריטי של נעילה.
המעבר ממצב נעול למצב פתוח צריך לדרוש אינטראקציה פיזית עם המכשיר. האינטראקציה הזו דומה להשפעות של הפעלת הפקודה fastboot flashing unlock
, אבל המשתמש צריך ללחוץ על לחצן פיזי במכשיר. אסור לאפשר למכשירים לעבור באופן פרוגרמטי מ-lock critical
ל-unlock critical
בלי אינטראקציה פיזית, ואסור לשלוח מכשירי unlock critical
.