يتيح نظام التشغيل Android 11 عمليات إعادة التشغيل الناعمة، وهي تتمثّل في إعادة تشغيل العمليات في مساحة المستخدم أثناء التشغيل لتطبيق التحديثات التي تتطلّب إعادة التشغيل (على سبيل المثال، تحديثات حِزم APEX). في الوقت الحالي، تقتصر عملية الصعق الكهربي بدون إعادة تشغيل على العمليات التي بدأت بعد تركيب userdata
.
يُطلب إعادة التشغيل السهلة بالطرق التالية:
من
PowerManager
، من خلال الاتصال بالرقمPowerManager.reboot(PowerManager.REBOOT_USERSPACE)
من shell، باستخدام
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
أو من بيئة سطر الأوامر)، يؤدي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 النشطة.
- التبديل مرة أخرى إلى مساحة الاسم الخاصة بنقطة تثبيت التمهيد
- يبدأ الإجراء
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
. تبحث هذه الخدمة عن توفّرملفّات الanimation التالية بالترتيب المدرَج، وتعرض أول ملف تعثر عليه:
/product/media/userspace-reboot.zip
/oem/media/userspace-reboot.zip
/system/media/userspace-reboot.zip
إذا لم يتم تحديد أي ملفات صور متحركة معيّنة لعملية إعادة التشغيل السريعة، يعرض bootanim
صورة متحركة تلقائية من نوع android
.
الاختبار
يتضمّن نظام التشغيل Android 11 عملية تنفيذ مرجعية لإعادة التشغيل الناعمة. بالإضافة إلى ذلك، يمكنك التحقّق من عملية إعادة التشغيل البسيطة باستخدام اختبارات CTS في UserspaceRebootHostTest
.