يتيح نظام التشغيل Android 10 استخدام الأقسام الديناميكية، وهو نظام لقسمة مساحة المستخدمين يمكنه إنشاء الأقسام وتغيير حجمها ومحوها أثناء عمليات التحديث عبر الهواء.
توضِّح هذه الصفحة كيفية تغيير حجم الأقسام الديناميكية أثناء تحديث أجهزة A/B التي تم طرحها مع ميزة دعم الأقسام الديناميكية، وذلك للأجهزة التي تعمل بنظام التشغيل Android 9 والإصدارات الأقدم.
خلفية
يتوفّر قسم super
واحد على الجهاز. لا يحتوي هذا القسم
على إضافة خانة. يجب أن يكون جهاز الحظر متوفّرًا إلى جانب إدخال blk_device
للموقع الإلكتروني /misc
في fstab
. على سبيل المثال، إذا كان ملف fstab
يسرد ما يلي:
/dev/block/bootdevice/by-name/misc /misc # Other fields
بعد ذلك، يجب أن يكون جهاز التخزين المؤقت لـ super
متوفّرًا في
/dev/block/bootdevice/by-name/super
، ولكن ليس من الضروري إدراج قسم
super
في ملف
fstab
.
في القسم super
، هناك مجرّد مجرّد
فتحتَا بيانات وصفية، تحملان الرقمَين 0 و1، وتتوافقان مع مجرّد مجرّد
فتحتَي A/B للقسمَين. في هذه الصفحة، تُعرف خانات البيانات الوصفية باسم
"البيانات الوصفية S" (المصدر) و"البيانات الوصفية T" (الهدف). وبالمثل، تتم الإشارة إلى الأقسام باسم system_s
vendor_t
وما إلى ذلك.
قبل الترقية، يحتوي ملف Metadata S على معلومات عن القسمين الديناميكيين المُستخدَمين (عادةً system_s
وvendor_s
وproduct_s
وما إلى ذلك). يقرأ النظام
امتدادات هذه الأقسام أثناء التحديث، لذا
لا يمكن حذفها.
وتنتمي الأقسام إلى مجموعات التحديث. راجِع تنفيذ الأقسام الديناميكية للحصول على التفاصيل.
في ما يلي مثال على البيانات الوصفية على أحد الأجهزة.
- البيانات الوصفية 0
- المجموعة
foo_a
- القسم
system_a
- القسم
product_services_a
- تم تحديث الأقسام الأخرى بواسطة Foo
- القسم
- رمز المجموعة bar_a
- القسم
vendor_a
- القسم
product_a
- حدّث شريط الفيديو الأقسام الأخرى.
- القسم
- المجموعة
foo_b
(بقايا من عملية الترقية السابقة) - المجموعة
bar_b
(متبقية من عملية الترقية السابقة)
- المجموعة
- البيانات الوصفية 1
- المجموعة
foo_a
(متبقية من عملية الترقية السابقة) - المجموعة
bar_a
(متبقية من عملية الترقية السابقة) - المجموعة
foo_b
- القسم
system_b
- القسم
product_services_b
- الأقسام الأخرى التي عدّلها فوزي
- القسم
- المجموعة
bar_b
- القسم
vendor_b
- القسم
product_b
- الأقسام الأخرى التي عدّلها Bar
- القسم
- المجموعة
يمكنك استخدام أداة lpdump
(الرمز المصدر ضمن
system/extras/partition_tools
) لتفريغ البيانات الوصفية على
جهازك. مثلاً:
lpdump --slot 0 /dev/block/bootdevice/by-name/super
lpdump --slot 1 /dev/block/bootdevice/by-name/super
عملية تعديل البيانات
- إعداد البيانات الوصفية للقسم
super
:- حمِّل النطاقات للشرائح الديناميكية المصدر من البيانات الوصفية S. لنفترض أنّ M هي البيانات الوصفية المحمَّلة.
-
أزِل المجموعات والفواصل المستهدفة (مثل
foo_t
وbar_t
) من M كي لا يحتوي M على سوى الفواصل والمجموعات التي تحتوي على اللاحقة_s
. -
أضِف المجموعات والشرائح المستهدَفة وفقًا لحقل
dynamic_partition_metadata
في بيان التحديث.
يمكن العثور على حجم كل قسم فيnew_partition_info
. - اكتب M إلى بيانات التعريف T.
- يمكنك ربط الأقسام المُضافة في أداة ربط الأجهزة على أنّها قابلة للكتابة.
- طبِّق التحديث على الأجهزة المحظورة.
- إذا لزم الأمر، يمكنك ربط أقسام المصدر في أداة ربط الأجهزة على أنّها للقراءة فقط. هذا الإجراء ضروري لتحميل التطبيقات من مصدر غير معروف لأنّه لم يتم ربط أقسام المصدر قبل التحديث.
- تطبيق تحديث كامل أو تحديث دلتا على جميع أجهزة الحظر في المربّع المستهدف
- شغِّل الوحدات لتتمكّن من تشغيل النص البرمجي لعمليات ما بعد التثبيت، ثم فكِّ ربط الوحدات.
- ألغِ ربط الأقسام المستهدَفة.
قبل التحديث وبعده، يجب أن تحتوي خصائص النظام التالية على القيم ذات الصلة:
ro.boot.dynamic_partitions=true ro.boot.dynamic_partitions_retrofit=true
إضافة المجموعات والأقسام إلى بيان التحديث
عند إجراء تحديث عبر الهواء على جهاز A/B يتضمّن أقسامًا ديناميكية، أو جهاز A/B يضيف إمكانات استخدام الأقسام الديناميكية، عليك إضافة المجموعات والأقسام إلى بيان التحديث. يعرض المقتطف أدناه معلومات إضافية عن بيان التحديث لتفعيل الأقسام الديناميكية. راجِع update_metadata.proto للحصول على مستندات تفصيلية حول كل حقل.
message DeltaArchiveManifest { optional DynamicPartitionMetadata dynamic_partition_metadata; } message DynamicPartitionMetadata { repeated DynamicPartitionGroup groups; } message DynamicPartitionGroup { required string name; optional uint64 size; // maximum size of group repeated string partition_names; }