عمليات إعادة التشغيل السريعة

يتوافق 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 أو من واجهة أوامر)، ينفذ init الخطوات التالية:

  1. سيتم استلام sys.powerctl=reboot,userspace.

  2. شوكة منفصلة UserspaceRebootWatchdogThread() مراقبة عملية إعادة التشغيل البسيطة.

  3. تؤدي هذه السياسة لتنفيذ إجراء 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

  4. تشغيل DoUserspaceReboot التي تنفّذ الإجراءات التالية:

    1. لإرسال SIGTERM إلى العمليات التي بدأت بعد تثبيت userdata تنتظر أن يتوقف.
    2. بعد انتهاء المهلة، يتم إرسال "SIGKILL" لإنهاء أي عملية ركض. والعمليات.
    3. يتصل بالرقم /system/bin/vdc volume reset.
    4. إلغاء تثبيت الجهاز الاحتياطي zRAM
    5. لإلغاء تثبيت حزم APEX النشطة.
    6. للتبديل مرة أخرى إلى مساحة اسم تثبيت التمهيد
    7. تؤدي إلى تشغيل userspace-reboot-resume اتخاذ القرار.

إذا طُلب منك تحديد نظام الملفات قبل إجراء إعادة التشغيل الأساسية، تمت إعادة تثبيت "userdata" في وضع "نقاط التفتيش" خلال الإجراء userspace-reboot-fs-remount (يُرجى الاطّلاع على القسم التالي لمعرفة التفاصيل). حاسمة تُؤخذ عملية إعادة التشغيل السهلة في الاعتبار بعد ضبط sys.boot_completed property. إلى 1. في نهاية عملية إعادة التشغيل السهلة، يتم إطفاء الشاشة يلزم تفاعل صريح من المستخدم لتنشيطه.

فحص نظام الملفات

إذا تم طلب نقطة فحص لنظام الملفات قبل إعادة التشغيل الأولي، تمت إعادة تثبيت "userdata" في وضع "نقطة التحقّق" أثناء إعادة التشغيل السريعة. يتم تنفيذ منطق إعادة التثبيت في fs_mgr_remount_userdata_into_checkpointing وتختلف بين طرق النقاط المرجعية. على وجه التحديد، عندما يتوافق "userdata" مع:

  • الفحص على مستوى نظام الملفات (على سبيل المثال، f2fsuserdata هو مُعاد تحميلها باستخدام الخيار 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