@@ -6,25 +6,25 @@ KernelSU のモジュール機構は、Magisk とほぼ同じです。Magisk の
## Busybox
KernelSU には、機能的に完全な Busybox バイナリ (SELinux の完全サポートを含む) が同梱されています。実行ファイルは `/data/adb/ksu/bin/busybox` に配置されています。KernelSU の Busybox はランタイムに切り替え可能な「ASH スタンドアローンシェルモード」をサポートしています。このスタンドアロンモードとは、Busybox の `ash` シェルで実行する場合 `PATH` として設定されているものに関係なく、すべてのコマンドが Busybox 内のアプレットを直接使用するというものです。例 えば、`ls` 、`rm` 、`chmod` などのコマンドは、`PATH` にあるもの( Android の場合、デフォルトではそれぞれ `/system/bin/ls` , `/system/bin/rm` , `/system/bin/chmod` )ではなく、直接 Busybox 内部のアプレットを呼び出すことになります。これにより、スクリプトは常に予測可能な環境で実行され、どの Android バージョンで実行されていても常にコマンドを利用できます。Busybox を使用しないコマンドを強制的に実行するには、フルパスで実行ファイルを呼び出す必要があります。
KernelSU には、機能的に完全な Busybox バイナリ (SELinux の完全サポートを含む) が同梱されています。実行ファイルは `/data/adb/ksu/bin/busybox` に配置されています。KernelSU の Busybox はランタイムに切り替え可能な「ASH スタンドアローンシェルモード」をサポートしています。このスタンドアロンモードとは、Busybox の `ash` シェルで実行する場合 `PATH` として設定されているものに関係なく、すべてのコマンドが Busybox 内のアプレットを直接使用するというものです。たと えば、`ls` 、`rm` 、`chmod` などのコマンドは、`PATH` にあるもの( Android の場合、デフォルトではそれぞれ `/system/bin/ls` , `/system/bin/rm` , `/system/bin/chmod` )ではなく、直接 Busybox 内部のアプレットを呼び出すことになります。これにより、スクリプトは常に予測可能な環境で実行され、どの Android バージョンで実行されていても常にコマンドを利用できます。Busybox を使用しないコマンドを強制的に実行するには、フルパスで実行ファイルを呼び出す必要があります。
KernelSU のコンテキストで実行されるすべてのシェルスクリプトは、Busybox の `ash` シェルでスタンドアロンモードが有効な状態で実行されます。サードパーティの開発者に関係するものとしては、すべてのブートスクリプトとモジュールのインストールスクリプトが含まれます。
この「スタンドアロンモード」機能を KernelSU 以外で使用したい場合、2つの方法で有効にすることが できます:
この「スタンドアロンモード」機能を KernelSU 以外で使用したい場合、2つの方法で有効にできます:
1. 環境変数 `ASH_STANDALONE` を `1` にする< br > 例: `ASH_STANDALONE=1 /data/adb/ksu/bin/busybox sh <script>`
2. コマンドラインのオプションで変更する:< br > `/data/adb/ksu/bin/busybox sh -o standalone <script>`
環境変数が子プロセスに継承されるため、その後に実行されるすべての `sh` シェルもスタンドアロンモードで実行されるようにするにはオプション 1 が望ましい方法です( KernelSU と KernelSU Managerが内部的に使用しているのもこちらです) 。
::: Magisk との違い
::: tip Magisk との違い
KernelSU の Busybox は、Magisk プロジェクトから直接コンパイルされたバイナリファイルを使用するようになりました。**ありがとう Magisk! ** Magisk と KernelSU の Busybox スクリプトは全 く同じものなので、互換性の問題を心配する必要はありません!
KernelSU の Busybox は、Magisk プロジェクトから直接コンパイルされたバイナリファイルを使用するようになりました。Magisk と KernelSU の Busybox スクリプトはまった く同じものなので、互換性の問題を心配する必要はありません!
:::
## KernelSU モジュール
KernelSU モジュールは、`/data/adb/modules` に配置された以下の構造を持つフォルダです:
KernelSU モジュールは、`/data/adb/modules` に配置された以下の構造を持つフォルダー です:
```txt
/data/adb/modules
@@ -76,7 +76,7 @@ KernelSU モジュールは、`/data/adb/modules` に配置された以下の構
├── .
```
::: Magisk との違い
::: tip Magisk との違い
KernelSU は Zygisk をビルトインでサポートしていないため、モジュール内に Zygisk に関連するコンテンツは存在しません。 しかし、[ZygiskOnKernelSU ](https://github.com/Dr-TSNG/ZygiskOnKernelSU ) をインストールすれば Zygisk モジュールを使えます。その場合の Zygisk モジュールのコンテンツは Magisk と同じです。
:::
@@ -106,7 +106,7 @@ description=<string>
モジュールのすべてのスクリプトでは、`MODDIR=${0%/*}` を使えばモジュールのベースディレクトリのパスを取得できます。スクリプト内でモジュールのパスをハードコードしないでください。
::: Magisk との違い
::: tip Magisk との違い
環境変数 `KSU` を使用すると、スクリプトが KernelSU と Magisk どちらで実行されているかを判断できます。KernelSU で実行されている場合、この値は `true` に設定されます。
:::
@@ -141,7 +141,7 @@ REPLACE="
このリストは、自動的に `$MODPATH/system/app/YouTube` と `$MODPATH/system/app/Bloatware` というディレクトリを作成し、 `setfattr -n trusted.overlay.opaque -v y $MODPATH/system/app/YouTube` と `setfattr -n trusted.overlay.opaque -v y $MODPATH/system/app/Bloatware` を実行します。モジュールが有効になると、`/system/app/YouTube` と `/system/app/Bloatware` は空のディレクトリに置き換えられます。
::: Magisk との違い
::: tip Magisk との違い
KernelSU のシステムレスメカニズムはカーネルの OverlayFS によって実装され、Magisk は現在マジックマウント( bind mount) を使用しています。この2つの実装方法には大きな違いがありますが最終的な目的は同じで、/system パーティションを物理的に変更することなく、/system のファイルを変更できます。
:::
@@ -170,7 +170,7 @@ module.zip
│
```
:::警告
::: warning 警告
KernelSU モジュールは、カスタムリカバリーからのインストールには非対応です!
:::
@@ -196,7 +196,7 @@ KernelSU モジュールは、カスタムリカバリーからのインスト
- `IS64BIT` (bool): `ARCH` が `arm64` または `x64` のときは `true`
- `API` (int): 端末の API レベル・Android のバージョン( 例: Android 6.0 なら`23` )
::: 警告
::: warning 警告
KernelSU では、MAGISK_VER_CODE は常に25200、MAGISK_VER は常にv25.2です。この2つの変数で KernelSU 上で動作しているかどうかを判断するのはやめてください。
:::