カーネルの更新がある度に必要になる内容と思われるので、
モジュールのビルド方法をメモしておきます。
主にCIFSのモジュールについて書いてます。
(純正で含まれてないので…)
Nexus 7 のカーネルをビルド、あとCIFSとか。 - y-log.net
http://y-log.net/archives/2012/07/19/0555
ここを参考にしました。
カーネルソースからCIFSのモジュールを作成します。
1.prebuiltツールとsourceの準備
/work$ git clone https://android.googlesource.com/platform/prebuilt /work$ git clone https://android.googlesource.com/kernel/tegra.git kernel/grouper /work$ cd kernel/grouper /work/kernel/grouper$ git checkout android-tegra3-grouper-3.1-jb-mr1-fr
※https://android.googlesource.com/kernel/tegra/ から最新のTagをチョイス
2.defconfigの準備
端末上の/proc/config.gzをpullするか、boot.imgから抜き出します。
boot.imgからconfigを抜き出す場合は、
https://developers.google.com/android/nexus/images#nakasijop40d から、
必要なイメージをダウンロードして、boot.imgを取り出します。
あとは、カーネルソース上にある extract-ikconfig を使って展開します。
$ scripts/extract-ikconfig boot.img > arch/arm/configs/n7_defconfig
3.環境変数を設定
カーネルをbuildするのに必要な環境変数を設定します。
/work 配下で prebuilt を git clone したことを想定してます。
$ export PATH=/work/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH $ export ARCH=arm $ export SUBARCH=arm $ export CROSS_COMPILE=arm-eabi-
4.configを設定
defconfigで.configの作成と、その後のmenuconfigでの編集をします。
$ make n7_defconfig $ make menuconfig
今回は CIFS をモジュール化させるだけなので、以下の設定だけしてます。
モジュールは、使うカーネルと Version Magic を合わせないとload出来ない
ので、Local version を設定します。
(Version Magicは 端末上でuname -aの結果から確認出来ます。下はg22b4fcdの例)
・General setup > (-g22b4fcd) Local version - append to kernel release
合わせてCIFS support と文字コードUTF8 を有効に設定します。(モジュールとしてbuildするので<M>にします。)
・File systems > Network File Systems > CIFS support (advanced network filesystem, SMBFS successor)
・File systems > Network File Systems > Native language support > NLS UTF-8
5.setlocalversionを変更して「+」表示をスルーさせる。
git commitなどの影響で、Version magicに+マークが付いてしまうので、
それを回避させるために、echo "+"をコメントアウトして、Local versionの
設定を反映させます。(正当法ではないですが。。)
# git diff diff --git a/scripts/setlocalversion b/scripts/setlocalversion index 4d40384..de03f63 100755 --- a/scripts/setlocalversion +++ b/scripts/setlocalversion @@ -52,7 +52,7 @@ scm_version() # If only the short version is requested, don't bother # running further git commands if $short; then - echo "+" +# echo "+" return fi # If we are past a tagged commit (like
6.モジュールの作成
make modulesで編集した部分だけモジュールを作成します。
モジュールだけなのであっという間に出来るはず。
$ make modules
エラーがなく終われば終了。以下の場所に*.koが出力される。
./crypto/md4.ko
./fs/cifs/cifs.ko
./fs/nls/nls_utf8.ko
このファイル群を、NEXUS 7へpushして、indmod すれば完了です。
※ unameの結果貰えれば、CIFSモジュールの作成出来ますのでコメント下さい(動作保証はないですが
※ 3.1.10-g22b4fcd バージョン上げておきます。⇒CIFS-3.1.10-g22b4fcd.zip