2013/09/15

AXのカーネルモジュールを作ってみる

端末の改変はXposedモジュールが充実してきて特にやることもなく・・・
難しそうだけどやってみた。
手持ちのPC(Win8 Pro 64bit)にVirtualBoxをインストール
Ubuntu 日本語環境をダウンロード して仮想マシン作る。
開発?環境にすべく
http://iishikawa.s371.xrea.com/note/android-compile.html
ここに参考にして

ソースコードをダウンロードして分かりやすいとこに展開
$ mkdir -p ~/ksource/9.1.C.0.475
$ cd ~/ksource/9.1.C.0.475
$ tar xvf ../9.1.C.0.475.tar.bz2

とりあえずAXを調べる。
$ cd ~/ksource/9.1.C.0.475/kernel
$ cat README_Xperia
 Xperia SX MT28 => blue_komachi_dcm_defconfig
 Xperia AX LT25 => blue_tsubasa_dcm_defconfig
 Xperia GX LT29 => blue_hayabusa_dcm_defconfig

.configをmakeしてみる。
$ make ARCH=arm CROSS_COMPILE=$CCOMPILE blue_tsubasa_dcm_defcofig


できたところでzImageをmake
$ make ARCH=arm CROSS_COMPILE=$CCOMPILE

エラー吐きまくりで止まる・・・
途方にくれました。

クロスコンパイラを変えてみようとLinaroからandroid-toochainをダウンロード
違いがわからないけど、純正?っぽいから

再びmakeしてみるもエラー吐き出す・・・
arm-eabi-ld: error: DIV usage mismatch between arch/arm/boot/compressed/misc.o and output
arm-eabi-ld: error: DIV usage mismatch between arch/arm/boot/compressed/lib1funcs.o and output
なんじゃこりゃ?

このままGoogle先生に聞いてみるとそれらしい答え
Makefileを書き換えるらしい。

再びmake
無事にarch/arm/boot/zImageが出来上がった。

moduleを作るべく、玄人方々のソースコードから拝借して再度.configをmake
 $ make ARCH=arm CROSS_COMPILE=$CCOMPILE blue_tsubasa_dcm_defcofig

.configを編集
$ make ARCH=arm CROSS_COMPILE=$CCOMPILE menuconfig
General setup > Automatically append version information to the version string (CONFIG_LOCALVERSION_AUTO)を外す。
 Enable the block layer > IO Schedulers > 拝借してきたのに<M>
CPU Power Management > CPU Frequency scaling > 拝借してきたのに<M>

module生成
$ make ARCH=arm CROSS_COMPILE=$CCOMPILE modules

出来上がったmoduleを分かりやすいとこにコピー
$ mkdir ~/modules
$ cp drivers/cpufreq/*.ko ~/modules
$ cp block/*.ko ~/modules

端末に転送してinsmodしてみる。
$ adb push modules /data/local/tmp
$ adb shell
$ su
# insmod /data/local/tmp/vr-iosched.ko
とりあえずエラーは吐かない。





















大丈夫らしい。

【追記】
9.1.C.0.475/kernel/drivers/misc/felica.c
9.1.C.0.475/kernel/drivers/misc/oneseg_tunerpm.c
ガラ機能?

6.2.B.1.96/kernel/drivers/misc/felica.c
6.2.B.1.96/kernel/drivers/misc/oneseg_tunerpm.c
無効になってるみたいだけど、グローバルモデルもそのまま入ってるらしい。
有効にしてモジュールにすれば・・・

【追記その2】
6.2.B.1.96で試しにガラ機能?のモジュール作ってみたら、特にエラーも吐かず出来上がった。

0 件のコメント:

コメントを投稿