カーネルモジュール

19:30

カーネルモジュールとは

コンパイル時にカーネルに含まれなかった機能を後から追加できるようにモジュール化したものです。
CPUの動作を制御するCPUガバナや、ストレージの読み書きを制御するIOスケジューラ、より高速なエントロピージェネレーター、低容量RAMデバイス向けのZRAM追加、NTFSなどのファイルシステムへの対応、UTF-8をはじめとした多言語文字コードへの対応など、一般の開発者等によって開発された機能を追加できます。

より高度な技術があれば、単なる機能の追加に限らず、カーネル内の既存の関数や構造体を書き換えることで、CPUのオーバークロック、権限の取得などカーネルハッキングの自由度が高まります。

Xperiaの国内モデルをはじめ、ブートローダーがアンロック出来ない(=メーカーによって署名されたカーネルしか起動しない=自分でコンパイルしたカーネルを使用できない)場合、メーカーは使用しないような機能の恩恵を受けることが出来るので、とても重宝します。

カーネルモジュールはROMバージョンごと

カーネルモジュールは基本的に、対応したカーネル内の各関数、構造体を示したアドレス(≒カーネルシンボル)が決め打ちされているので、それぞれのカーネルバージョンごとにコンパイルする必要があります。(カーネルバージョンチェックのためのマジック番号を無理矢理書き換えて読み込ませることも出来ますが、カーネルの関数に依存した機能をモジュールが持っている場合、動作しません。)

Xperia TX 9.2.A.0.295用のカーネルモジュール


9.2.A.0.295用のモジュールですが、TX用の最終ビルドの9.2.A.1.215や同じblueプラットフォームのXperia T、Xperia Vでも動作するはずです。

機能一覧
・CPUガバナ9種
・IOスケジューラ6種
・ZRAM(Snappy/LZ4)
・NTFS読み書き
・UTF-8サポート
・frandom

CPUガバナについては、カーネル内のアドレスを決め打ちせずにシンボル名から関数の所在を見つけるためのsymsearch.koというヘルパーを使っています。この部分が私のモジュールの特別な点です。

ソースについて

GPLに準拠するため、zip内にソースコードを含めてあります。
違うデバイスのカーネル用にコンパイルしやすいように、makefileを書いているので、カーネルソースとarm用のクロスコンパイラのディレクトリを指定するだけですぐに使えます。

割と各所で私のソースを利用されているのを見かけるので、喜ばしい限りです。

関連する記事

次の記事
« 前の投稿
前の記事
次の投稿 »