入手後はKitkat(4.4.4)であったため、Androplusカーネルからcpufreqモジュールのソースをダウンロードして以前使用していたSO-02Eで作成したソースとのマージを行って使用していました(SmartassH3はZ3のカーネルではearlysuspend設定が無効化されているためそのままではコンパイル不可能)。
先日Lollipop(5.0.2)が降ってきた際に再度カーネルモジュールを作成しようと思いましたが、以前記載した方法ではvermagic対応が出来ませんでした。(MakefileのEXTRAVERSIONに指定文字列を入力したが、その後ろに"-perf"と付けられてしまった)。
また、新しいカーネルダウンロード方法(この方法なら場合によっては複数の機種で同一のソースツリーを管理可能)が分かったので、再度まとめてみることにします。
1.カーネルソースのダウンロード方法
以前のブログで紹介したdeveloper worldからダウンロードする方法以外に、最近Githubで直接ダウンロードする方法が追加されましたのでこちらを紹介します。git clone https://github.com/sonyxperiadev/kernel-copyleftまず現在のgithub.comに登録されているsonyのkernelリポジトリを自分のPCに複写します(1行目)。
cd kernel-copyleft
git branch -r
git checkout <branch-name>
次に複写したリポジトリ内部に入り(2行目)、全ブランチ名を表示させます(3行目)。
ちなみに現在有効+使用中のブランチを表示させるにはgit branchと入力します。このコマンドで行頭に*マークが付いているものが現在使用中のブランチです。
最後に自分がカーネルメイクしたいブランチを4行目のコマンドで有効化します。この時<branch-name>で指定するブランチ名はgit branch -rで表示したブランチ名一覧から先頭の"origin/"を省いたものです。
2.vermagicの指定方法
結局、.configのCONFIG_LOCALVERSIONとMakefileのEXTRAVERSIONが重なる場合があるときちんとバージョン情報が入らないようです。
実際にコンパイルされる際に付けられるカーネルのバージョンはinclude/config/kernel.releaseファイルに書き込まれるのですが、これはMakefileで生成されるファイルで、記載を見た限りでは $EXTRAVERSIONの後ろに CONFIG_LOCALVERSIONが書込される構造となっています。
例えば$EXTRAVERSIONに-perf-hogehogeと書き、.configのCONFIG_LOCALVERSIONにストックカーネルのソースコードのように-perfと書き込まれていた場合はkernel.releaseファイルの内容は-perf-hogehoge-perfとなります。
これを避けるためには.configの_LOCALVERSIONかMakefileのEXTRAVERSIONのどちらかにvermagic関連の記述を統一する必要があります。
0 件のコメント:
コメントを投稿