اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
تفعيل زر التبديل لصفحات الذاكرة بحجم 16 كيلوبايت
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يتيح لك خيار التبديل إلى 16 كيلوبايت تجربة نواة بحجم 16 كيلوبايت. يتيح مفتاح التبديل هذا التبديل
بين نواة بحجم 4 كيلوبايت ونواة بحجم 16 كيلوبايت، ويمكن العثور عليه في قائمة
"خيارات المطوّرين" في تطبيق الإعدادات. يمكن استخدام مفتاح التبديل 16 كيلوبايت
للتحقّق من توافق التطبيق مع النواة 16 كيلوبايت، ولكن قد لا يعكس
أداء الجهاز الفعلي الذي يستخدم صفحات بحجم 16 كيلوبايت بسبب استخدام وحدات الصفحات الفرعية
(عند استخدام EXT4 لقسمَي /data
و/metadata
) في الوضع 16 كيلوبايت.
خطوات ضبط زر الإيقاف/التفعيل
تأكَّد من أنّ الجهاز قد أعدّ المتغيّرات لتكون غير مستندة إلى الصفحة (للعمل
مع نواة حجم الصفحة التي تبلغ 4 كيلوبايت و16 كيلوبايت).
يمكنك تثبيت نواة 16 كيلوبايت مباشرةً للتأكّد من أنّ الجهاز يعمل في
وضع 16 كيلوبايت مباشرةً قبل المتابعة لإضافة خيار المطوّرين.
اطّلِع على مثال الجهاز الظاهري الإعداد المستهدَف.
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
إعداد متغيّر المنتج لعرض خيار المطوّر في الإعدادات
PRODUCT_16K_DEVELOPER_OPTION := true
اضبط مسار kernel باستخدام BOARD_KERNEL_PATH_16K
.
يجب إنشاء هذا kernel باستخدام CONFIG_ARM64_16K_PAGES=y.
.
BOARD_KERNEL_PATH_16K := kernel/prebuilts/mainline/$(TARGET_KERNEL_ARCH)/16k/kernel-mainline.
اضبط متغيّر مسار إعدادات الوحدات BOARD_KERNEL_MODULES_16K
. يشير هذا المتغيّر
إلى وحدات النواة المتوافقة مع صفحات الذاكرة بحجم 16 كيلوبايت. يؤدي ضبط هذه المَعلمات إلى إنشاء
تحديثَين من خلال شبكة الجوّال على قسم النظام : boot_ota_16k.zip
(للتبديل إلى ملف تعريف قاعدة التشغيل
بحجم 16 كيلوبايت) وboot_ota_4k.zip
(للتبديل إلى ملف تعريف قاعدة التشغيل
بحجم 4 كيلوبايت). فعِّل التحديثات التلقائية المتزايدة
OTA من خلال ضبط BOARD_16K_OTA_USE_INCREMENTAL := true
لعمليات التحديثات التلقائية
OTA ذات الحجم الأصغر.
BOARD_KERNEL_MODULES_16K += $(wildcard kernel/prebuilts/mainline/$(TARGET_KERNEL_ARCH)/16k/*.ko)
BOARD_KERNEL_MODULES_16K += $(wildcard kernel/prebuilts/common-modules/virtual-device/mainline/$(TARGET_KERNEL_ARCH)/16k/*.ko)
اضبط القيمة BOARD_16K_OTA_MOVE_VENDOR := true
لنقل عمليات التحديث عبر الهواء إلى قسم المورّد.
لا تضبط هذا الإعداد إلا لنقل تحديثات البرامج من نظام التشغيل إلى قسم المورّد.
إثبات الملكية
بعد ضبط زر الإيقاف/التفعيل بنجاح، اتّبِع الخطوات التالية:
- تحقّق ممّا إذا كان خيار التبديل التشغيل مع صفحات حجمها 16 كيلوبايت مرئيًا في تطبيق الإعدادات.
- تحقَّق مما إذا كان
/system/boot_otas
أو /vendor/boot_otas
يحتويان على ملفَي حزمة OTA zip : boot_ota_16k.zip
وboot_ota_4k.zip
.
استخدام مفتاح التبديل لصفحات الذاكرة بحجم 16 كيلوبايت
- انتقِل إلى الإعدادات > النظام > تحديثات البرامج وطبِّق أي تحديثات متوفرة.
- فعِّل خيارات المطوّرين. للحصول على التعليمات، يُرجى الاطّلاع على ضبط خيارات المطوّرين على الجهاز.
- إذا تم رصد الجهاز على أنّه مقفل من قِبل الشركة المصنّعة للجهاز، سيظهر مربّع حوار يطلب منك
فتح قفل الهاتف من قِبل الشركة المصنّعة. للحصول على التعليمات، يُرجى الاطّلاع على مقالة قفل برنامج الإقلاع وإلغاء قفله.
- انقر على التشغيل مع صفحات حجمها 16 كيلوبايت. إذا لم يكن
/data
و/metadata
ext4، سيظهر مربّع حوار يطلب منك محو بيانات الجهاز. انقر على
محو جميع البيانات لحجب بيانات الجهاز. سيتم محو بيانات الجهاز وعليك
تفعيل خيارات المطوّرين مرة أخرى.
- انقر على التشغيل مع صفحات حجمها 16 كيلوبايت. سيظهر مربّع حوار يطلب منك
التبديل إلى 16 كيلوبايت، وعند التأكيد، يتم تطبيق عمليات التحديث عبر الهواء لبدء التشغيل. يمكنك بعد ذلك التبديل بين الوضعَين 4 كيلوبايت و16 كيلوبايت بدون محو
قسم البيانات لاختبار سلوك التطبيق.
التحقّق من الوضع 16 كيلوبايت
اتّبِع الخطوات الواردة في مقالة معرفة حجم الصفحة
للتحقّق من حجم الصفحة.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Enable 16 KB toggle\n\n16 KB toggle lets you to try a 16 KB kernel. This toggle switches\nbetween a 4 KB kernel and 16 KB kernel and can be found inside the\n\"Developer option\" menu in the settings app. The 16 KB toggle can be used\nto check application compatibility with the 16 KB kernel, but it might not\nreflect performance of actual 16 KB device due to the use of subpage blocks\n(when using EXT4 for `/data` and `/metadata` partitions) in 16 KB mode.\n\nSteps for configuring toggle\n----------------------------\n\n1. Make sure the device has set up the variables to be page-agnostic (to work\n with both 4 KB and 16 KB page size kernels).\n You may want to install the 16k kernel directly to make sure the device works in\n 16 KB mode directly before continuing to add the developer option.\n See the virtual device example [target config](https://cs.android.com/android/platform/superproject/+/android-latest-release:device/google/cuttlefish/vsoc_arm64_pgagnostic/phone/aosp_cf.mk;l=68).\n\n PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true\n PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384\n\n2. Setup product variable to display developer option in settings\n `PRODUCT_16K_DEVELOPER_OPTION := true`\n\n3. Set kernel path using `BOARD_KERNEL_PATH_16K`.\n This kernel should be built with `CONFIG_ARM64_16K_PAGES=y.`\n\n BOARD_KERNEL_PATH_16K := kernel/prebuilts/mainline/$(TARGET_KERNEL_ARCH)/16k/kernel-mainline.\n\n4. Set modules config path variable `BOARD_KERNEL_MODULES_16K`. This variable\n points to kernel modules which support 16KB. Setting these parameters creates\n two OTAs on the system partition : `boot_ota_16k.zip`(to switch to 16 KB\n kernel) and `boot_ota_4k.zip`(to switch to 4 KB kernel). Enable incremental\n OTAs by setting `BOARD_16K_OTA_USE_INCREMENTAL := true` for smaller size boot\n OTAs.\n\n BOARD_KERNEL_MODULES_16K += $(wildcard kernel/prebuilts/mainline/$(TARGET_KERNEL_ARCH)/16k/*.ko)\n BOARD_KERNEL_MODULES_16K += $(wildcard kernel/prebuilts/common-modules/virtual-device/mainline/$(TARGET_KERNEL_ARCH)/16k/*.ko)\n\n5. Set `BOARD_16K_OTA_MOVE_VENDOR := true` to move OTAs to the vendor partition.\n Only set this to move OTAs from system to vendor partition.\n\n### Verification\n\nAfter successfully configuring the toggle, follow these steps:\n\n1. Check if **Boot with 16 KB page size** toggle is visible in settings app.\n2. Check if `/system/boot_otas` or `/vendor/boot_otas` contains two OTA zip files : `boot_ota_16k.zip` and `boot_ota_4k.zip`.\n\nUse 16 KB toggle\n----------------\n\n1. Go to **Settings \\\u003e System \\\u003e Software updates** and apply any updates which are available.\n2. Enable developer options. For instructions, see [Configure on-device developer options](https://developer.android.com/studio/debug/dev-options).\n3. If the device is detected as OEM locked, a dialog displays asking you to OEM unlock the phone. For instructions, see [Lock and unlock the bootloader](/docs/core/architecture/bootloader/locking_unlocking).\n4. Click **Boot with 16 KB page size** . If `/data` and `/metadata`aren't ext4, a dialog displays asking you to wipe the device. Click **Erase all data** to wipe the device. The device is wiped and you must enable developer options again.\n5. Click **Boot with 16 KB page size**. A dialog displays asking you to switch to 16 KB, and on confirming, boot OTAs are applied. You can then toggle back and forth between 4 KB and 16 KB mode without clearing the data partition to test app behavior.\n\nCheck 16 KB Mode\n----------------\n\nFollow steps at [getting page size](/docs/core/architecture/16kb-page-size/getting-page-size)\nto verify page size."]]