يتيح نظام التشغيل 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
- تم تحديث الأقسام الأخرى بواسطة Foo
- القسم
- المجموعة
bar_b
- القسم
vendor_b
- القسم
product_b
- تم تعديل الأقسام الأخرى بواسطة شريط.
- القسم
- المجموعة
يمكنك استخدام أداة lpdump
(الرمز المصدر ضمن
system/extras/partition_tools
) لتفريغ البيانات الوصفية على
جهازك. مثلاً:
lpdump --slot 0 /dev/block/bootdevice/by-name/super
lpdump --slot 1 /dev/block/bootdevice/by-name/super
عملية تعديل البيانات
- إعداد البيانات الوصفية للقسم
super
:- تحميل نطاقات الأقسام الديناميكية للمصدر من البيانات الوصفية سباستيان اجعل 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
إضافة المجموعات والأقسام إلى بيان التحديث
عند إجراء تحديث عبر الهواء (OTA) على جهاز 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; }