16 KB の切り替えを有効にする

16 KB の切り替えを使用して、16 KB カーネルを試すことができます。4 KB カーネルと 16 KB カーネルを切り替えられます。この切り替えは、設定アプリの [開発者向けオプション] メニュー内にあります。デバイスごとに個別に有効にする必要があります。

切り替えの設定手順

  1. デバイスで、ページに依存しないように(4 KB と 16 KB のページサイズ カーネルの両方で動作するように)変数を設定していることを確認します。16K カーネルを直接インストールしてデバイスが 16 KB モードで動作することを確認してから、開発者向けオプションの追加を続行することをおすすめします。仮想デバイスのターゲット構成の例をご覧ください。

        PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
        PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
    
  2. 設定 PRODUCT_16K_DEVELOPER_OPTION := true で開発者向けオプションを表示するようにプロダクト変数を設定します。

  3. BOARD_KERNEL_PATH_16K を使用してカーネルパスを設定します。このカーネルは CONFIG_ARM64_16K_PAGES=y. でビルドする必要があります。

      BOARD_KERNEL_PATH_16K := kernel/prebuilts/mainline/$(TARGET_KERNEL_ARCH)/16k/kernel-mainline.
    
  4. モジュール構成パス BOARD_KERNEL_MODULES_16K を設定します。これは 16 KB をサポートするカーネル モジュールを指しています。これらのパラメータを設定すると、boot_ota_16k.zip(16 KB カーネルへの切り替え用)と boot_ota_4k.zip(4 KB カーネルへの切り替え用)の 2 つの OTA がシステム パーティションに作成されます。サイズの小さいブート 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)
    
  5. OTA をベンダー パーティションに移動するため、BOARD_16K_OTA_MOVE_VENDOR := true を設定します。これは任意であり、ほとんどのデバイスでは設定すべきではありません。

検証

以上の内容を正常に設定すると、次のようになります。

  1. 16 KB の切り替えは、[16 KB ページサイズで起動] として設定アプリに表示されます。
  2. /system/boot_otas または /vendor/boot_otas には、boot_ota_16k.zipboot_ota_4k.zip という 2 つの OTA ZIP ファイルが含まれています。

16 KB の切り替えを使用する

  1. 開発者向けオプションのドキュメントの手順に沿って開発者向けオプションを有効にします。
  2. デバイスが OEM ロックされていることが検出された場合は、スマートフォンの OEM ロック解除を求めるダイアログが表示されます。OEM のロック解除の手順を実施します。
  3. ユーザーが [16 KB ページサイズで起動] をタップした場合は、/data および /metadata パーティションが ext4 であることが必要です。そうでない場合、ユーザーにデバイスのワイプを求めるダイアログが表示されます。[Yes] と回答すると、デバイスがワイプされるため、開発者向けオプションを再度有効にする必要があります。
  4. 16 KB の切り替えでは、16 KB に切り替える確認ダイアログが表示され、確認するとブート OTA が適用されます。これにより、データ パーティションを作成することなく、4 KB モードと 16 KB モードの間で切り替えてアプリの動作をテストできます。

16 KB モードを確認する

ページサイズを確認するには、ページサイズを取得するの手順を実施します。