يدعم Android 11 عمليات إعادة التشغيل الناعمة، وهي عمليات إعادة تشغيل وقت التشغيل للعمليات في مساحة المستخدم المستخدمة لتطبيق التحديثات التي تتطلب إعادة التشغيل (على سبيل المثال، تحديثات حزم APEX). حاليًا، تقتصر عملية إعادة التشغيل الناعمة على العمليات التي بدأت بعد تحميل userdata
.
يتم طلب إعادة التشغيل الناعم بالطرق التالية:
من
PowerManager
، عن طريق الاتصال بـPowerManager.reboot(PowerManager.REBOOT_USERSPACE)
من Shell، استخدم
adb shell svc power reboot userspace
أوadb reboot userspace
بعد إعادة التشغيل البسيطة، يظل التخزين المشفر لبيانات الاعتماد مفتوحًا.
إذا كان الجهاز يدعم عمليات إعادة التشغيل الناعمة، فإن أسلوب PowerManager.isRebootingUserspace()
API يُرجع true
، وقيمة خاصية النظام init.userspace_reboot.is_supported
تساوي 1
.
إذا كان الجهاز لا يدعم عمليات إعادة التشغيل الناعمة، فستفشل استدعاءات PowerManager.reboot(PowerManager.REBOOT_USERSPACE)
و adb reboot userspace
و adb shell svc power reboot userspace
.
تنفيذ إعادة التشغيل الناعمة
بعد طلب إعادة تشغيل بسيطة (من خلال PowerManager
أو من Shell)، يقوم init
بتنفيذ الخطوات التالية:
يستقبل
sys.powerctl=reboot,userspace
.شوكات عملية
UserspaceRebootWatchdogThread()
منفصلة لمراقبة عملية إعادة التشغيل الناعمة.يؤدي إلى تشغيل إجراء
userspace-reboot-requested
، والذي يؤدي إلى إعادة تعيين جميع خصائص النظام التي قد تؤثر على عملية إعادة التشغيل الناعمة. الخصائص المتضررة:-
sys.usb.config
-
sys.usb.state
-
sys.boot_completed
-
dev.bootcomplete
-
sys.init.updatable_crashing
-
sys.init.updatable_crashing_process_name
-
apexd.status
-
sys.user.0.ce_available
-
sys.shutdown.requested
-
service.bootanim.exit
يجب تعيين الخصائص المذكورة أعلاه مرة أخرى أثناء تسلسل التمهيد. إذا لزم الأمر، يمكنك إعادة تعيين خصائص إضافية. على سبيل المثال، راجع الإجراء
on userspace-reboot-requested
فيrootdir/init.rc
.-
يقوم بتشغيل وظيفة
DoUserspaceReboot
، التي تقوم بالإجراءات التالية:- يرسل
SIGTERM
إلى العمليات التي بدأت بعد تحميلuserdata
وينتظر حتى تتوقف. - بعد انتهاء المهلة، يرسل
SIGKILL
لإيقاف أي عمليات قيد التشغيل. - المكالمات
/system/bin/vdc volume reset
. - إلغاء تحميل جهاز دعم zRAM.
- إلغاء تحميل حزم APEX النشطة.
- يعود مرة أخرى إلى مساحة اسم تثبيت bootstrap.
- يطلق إجراء
userspace-reboot-resume
.
- يرسل
إذا تم طلب إجراء فحص نظام الملفات قبل إعادة التشغيل الناعم، فستتم إعادة تحميل userdata
في وضع فحص نظام الملفات أثناء إجراء userspace-reboot-fs-remount
(راجع القسم التالي للحصول على التفاصيل). يتم أخذ إعادة التشغيل الناعم بعين الاعتبار بعد تعيين sys.boot_completed property
على 1
. في نهاية عملية إعادة التشغيل الناعمة، يتم إيقاف تشغيل الشاشة ويلزم تدخل المستخدم الصريح لتنشيطها.
فحص نظام الملفات
إذا تم طلب نقطة تفتيش نظام الملفات قبل إعادة التشغيل الناعم، فسيتم إعادة تحميل userdata
في وضع فحص نظام الملفات أثناء إعادة التشغيل الناعم. يتم تنفيذ منطق إعادة التركيب في الدالة fs_mgr_remount_userdata_into_checkpointing
، ويختلف بين طرق التحقق. على وجه التحديد، عندما تدعم userdata
:
عند إجراء فحص مستوى نظام الملفات (على سبيل المثال،
f2fs
)، تتم إعادة تحميلuserdata
باستخدام خيارcheckpoint=disable
.التحقق من مستوى الكتلة (على سبيل المثال،
ext4
)، ثم يتم إلغاء تحميل/data
ويتم إتلاف جميع أجهزة مخطط الجهاز الأصلي التي تم تثبيتها فوقها. بعد ذلك، يتم تثبيتuserdata
باستخدام نفس مسار التعليمات البرمجية المستخدم في التمهيد العادي لفحص التحقق.
إذا تم استخدام حلقة مفاتيح على مستوى نظام الملفات لإدارة المفاتيح المشفرة ببيانات الاعتماد (CE) والمفاتيح المشفرة بالجهاز (DE)، فسيتم فقدان المفاتيح بعد إلغاء تحميل userdata
. للسماح باستعادة المفاتيح، عند تثبيت مفتاح إلى حلقة مفاتيح نظام الملفات، يقوم vold
أيضًا بتثبيت نفس المفتاح من نوع fscrypt-provisioning
إلى حلقة المفاتيح على مستوى الجلسة. عند استدعاء init_user0
، يقوم vold
بإعادة تثبيت المفاتيح الموجودة في حلقة مفاتيح نظام الملفات.
الرجوع إلى إعادة التشغيل الثابت
للتأكد من أن إعادة التشغيل الناعمة لا تترك الجهاز في حالة غير قابلة للاستخدام، يتضمن Android 11 خيارًا احتياطيًا لإعادة التشغيل الثابت الذي يتم تشغيله عند استيفاء أحد الشروط التالية:
- يفشل الجهاز في بدء إعادة التشغيل الناعم (أي،
sys.init.userspace_reboot.in_progress=1
) خلال مهلة محددة. - فشل العملية في التوقف خلال مهلة معينة.
- فشلت عملية
/system/bin/vdc volume reset
. - فشل إلغاء تحميل جهاز zRAM.
- يتم إلغاء تحميل حزمة APEX النشطة بشكل غير صحيح.
- فشلت محاولة إعادة تحميل
userdata
في وضع التحقق. - فشل الجهاز في التمهيد بنجاح (أي
sys.boot_completed=1
) خلال مهلة محددة.
التكوين لكل جهاز
يمكن ضبط بعض جوانب إعادة التشغيل الناعمة عن طريق تغيير قيم الخصائص التالية:
- يتحكم
init.userspace_reboot.is_supported
في الوقت الذي يتمكن فيه الجهاز من إجراء عملية إعادة تشغيل بسيطة. إذا كانت قيمة هذه الخاصيةfalse
أو0
أو غير محددة، فسيتم رفض محاولات إعادة التشغيل. - يتحكم
init.userspace_reboot.sigkill.timeoutmillis
في المهلة بالمللي ثانية للعمليات التي تلقت إشارةSIGKILL
للتوقف. إذا فشلت إحدى العمليات في التوقف خلال المهلة المحددة، فسيتم تشغيل خيار الرجوع إلى إعادة التشغيل الثابت. - يتحكم
init.userspace_reboot.sigterm.timeoutmillis
في المهلة بالمللي ثانية للعمليات التي تلقت إشارةSIGTERM
للإنهاء. تتلقى كافة العمليات التي فشلت في الإنهاء خلال المهلة المحددة إشارةSIGKILL
. - يتحكم
init.userspace_reboot.started.timeoutmillis
في المهلة بالمللي ثانية لبدء عملية إعادة التشغيل الناعمة (أيsys.init.userspace_reboot.in_progress=1
). إذا فشل الجهاز في بدء إعادة التشغيل الناعم خلال المهلة المحددة، فسيتم تشغيل خيار الرجوع إلى إعادة التشغيل الثابت. - يتحكم
init.userspace_reboot.userdata_remount.timeoutmillis
في المهلة بالمللي ثانية لإلغاء تحميلuserdata
. إذا فشل الجهاز في إلغاء تحميلuserdata
خلال المهلة المحددة، فسيتم تشغيل خيار الرجوع إلى إعادة التشغيل الثابت. - يتحكم
init.userspace_reboot.watchdog.timeoutmillis
في المهلة الزمنية للجهاز ليتم تشغيله بنجاح (أيsys.boot_completed=1
). إذا فشل الجهاز في التمهيد خلال المهلة المحددة، فسيتم تشغيل خيار الرجوع إلى إعادة التشغيل الثابت.
تخصيص الرسوم المتحركة أثناء إعادة التشغيل الناعمة
يتضمن التنفيذ المرجعي لإعادة التشغيل الناعم القدرة على تخصيص الرسوم المتحركة المعروضة أثناء إعادة التشغيل الناعم.
في نهاية الإجراء userspace-reboot-fs-remount
، يبدأ init
خدمة bootanim
. تبحث هذه الخدمة عن وجود ملفات الرسوم المتحركة التالية، بالترتيب المذكور، وتقوم بتشغيل أول ملف تجده:
-
/product/media/userspace-reboot.zip
-
/oem/media/userspace-reboot.zip
-
/system/media/userspace-reboot.zip
إذا لم يتم تحديد ملفات رسوم متحركة محددة لإعادة التشغيل الناعم، فسيعرض bootanim
رسمًا متحركًا افتراضيًا android
.
اختبارات
يتضمن Android 11 تطبيقًا مرجعيًا لإعادة التشغيل الناعم. بالإضافة إلى ذلك، يمكنك التحقق من إعادة التشغيل الناعمة باستخدام اختبارات CTS في UserspaceRebootHostTest
.