يتيح نظام التشغيل Android 11 عمليات إعادة التشغيل البرمجية، وهي عمليات إعادة تشغيل في وقت التشغيل للعمليات في مساحة المستخدم، وتُستخدَم لتطبيق التحديثات التي تتطلّب إعادة التشغيل (على سبيل المثال، تحديثات حِزم APEX). في الوقت الحالي، يقتصر إعادة التشغيل السلس على العمليات التي بدأت بعد تحميل userdata.
يتم طلب إعادة التشغيل البرمجية بالطرق التالية:
من
PowerManager، من خلال الاتصال علىPowerManager.reboot(PowerManager.REBOOT_USERSPACE)من واجهة الأوامر، باستخدام
adb shell svc power reboot userspaceأوadb reboot userspace
بعد إعادة التشغيل بشكل أوّلي، يظل التخزين المشفّر لبيانات الاعتماد غير مقفل.
إذا كان الجهاز يتيح عمليات إعادة التشغيل البرمجية، ستعرض طريقة واجهة برمجة التطبيقات PowerManager.isRebootingUserspace() القيمة 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.configsys.usb.statesys.boot_completeddev.bootcompletesys.init.updatable_crashingsys.init.updatable_crashing_process_nameapexd.statussys.user.0.ce_availablesys.shutdown.requestedservice.bootanim.exit
يجب ضبط الخصائص أعلاه مرة أخرى أثناء تسلسل بدء التشغيل. إذا لزم الأمر، يمكنك إعادة ضبط الخصائص الإضافية. للاطّلاع على أمثلة، راجِع الإجراء
on userspace-reboot-requestedفيrootdir/init.rc.يشغّل الدالة
DoUserspaceRebootالتي تنفّذ الإجراءات التالية:- يرسل
SIGTERMإلى العمليات التي بدأت بعد تثبيتuserdataوينتظر حتى تتوقف. - بعد انتهاء المهلة، يتم إرسال
SIGKILLلإيقاف أي عمليات قيد التشغيل. - المكالمات
/system/bin/vdc volume reset - تؤدي هذه السمة إلى إلغاء تثبيت الجهاز الاحتياطي zRAM.
- إلغاء تحميل حِزم APEX النشطة
- يعود إلى مساحة الاسم الأساسية.
- يؤدي إلى تشغيل الإجراء
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. للسماح باستعادة المفتاح، عند تثبيت مفتاح في سلسلة مفاتيح نظام الملفات، يتم أيضًا تثبيت المفتاح نفسه من النوع fscrypt-provisioning في سلسلة مفاتيح على مستوى الجلسة.vold عند استدعاء 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.