QuaStation用のカーネルをビルドする

こんにちは。u-haruです。まさかこんなに更新しないとは思いませんでした。せっかくブログ作ったのに勿体ねぇ…

ってことで、とりあえず最近までずーーーっといじってたQuaStationの事でも適当に書いていきます。

とりあえず複数の記事に分けるとして、今回はカーネルの準備に取り掛かります。

ちなみに今回書いてる内容は てんぷさんの書いたやつと大体同じです。

こっちのほうがu-boot画面についてとか色々書いてるのでこれ参考にしたほうがわかりやすいかも…

ソースコードのダウンロード

まずは、ソースコードをダウンロードします。と言ってもQuaStation用のものではありません。一応auのカーネルもあるのですがこっちのほうがバージョン新しいのでこっちを使います。

https://github.com/BPI-SINOVOIP/BPI-W2-bsp/releases/tag/w2-4.9-v1.0

これのソースコードをダウンロードして適当な場所に展開してください。展開したら2.3GBまでに膨れ上がります。

先に言っておくと、ビルドしてたら私の環境では10GBくらいまで行ったので容量の少ない人は注意してください(多分試しすぎなだけ)。

あと、sudoが使える環境が必要です。

ビルド準備

展開が終わったら、次はビルドの準備をします。

まずディレクトリに入って、./configure を実行します。

次に./build.shの120行目あたりを修正します。このままだと必要のないu-bootまでビルドしてエラー吐いたりシングルスレッドでクソ遅かったりするので…

修正前:

echo
case $mode in
	1) RET=1;make && 
	   make pack && 
	   cp_download_files &&
           RET=0
           ;;
	2) make u-boot;;

修正後:

echo
case $mode in
	1) RET=1;make kernel -j4 && 
	   make pack -j4 && 
	   cp_download_files &&
           RET=0
           ;;
	2) make u-boot

-j4 のところは自身の環境に合わせてください。基本的にはCPUのスレッド数入れればOKです(20スレッドなら-j20 )。

次に、ソースコードの方を修正します。と言っても必要なのは1箇所だけです。以前別の場所修正した気がしたのですが、今試してみたら1箇所だけで動いたのでこれでヨシ!

修正するのは linux-rt/scripts/dtc/dtc-parser.tab.c の1199行目です。

修正前:

/* Location data for the lookahead symbol.  */
YYLTYPE yylloc
# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL

修正後:

/* Location data for the lookahead symbol.  */
extern YYLTYPE yylloc
# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL

externつけるだけです。簡単ですね。

後はビルドですが、その前に一度

./build.sh

を実行して、4を選択してコンフィグ画面開きます。じゃないとコンフィグ入れてもリセットされるっぽい…?

これで準備は終わりです。

コンフィグの適用

コンフィグは haruroidさんのコンフィグをもとに作ったやつを私のgistにあげているのでそれを使ってください。
https://gist.github.com/u-haru/237072dd7847cbe6c4695d5d67d623e7
足りない機能とかあったら./build.sh で4選んで設定していけば大丈夫です。ただ、やりすぎると謎のビルドエラーに悩まされます(経験談)。

ビルド

ビルドは簡単です。./build.sh で1選ぶだけです。

途中でsudoのパス聞かれたりしますが基本放置で大丈夫です。時間かかると思うのでゆっくり待ちましょう。

今までの手順通りやればエラーは無いはず。あったら私のtwitterにでも聞いてください…

終わったら

SD/bpi-w2/BPI-BOOT/bananapi/bpi-w2/linux/ にbpi-w2.dtbとuImage

SD/bpi-w2/BPI-ROOT/lib/ にmodules

が出来上がってるはずです。これがQuaStationで使うdtbとkernel、モジュール郡になります。

わかりやすいように適当なディレクトリにコピーしておきましょう。

終わり

これでカーネル(とモジュール)のビルドが終わりました。次回以降これを使ってOSを入れていきます。そのうちまた記事あげるのでもうしばらくお待ち下さい。

というか書いてる内容めっちゃ薄いじゃん…

U-haru
U-haru
Student at NITMC

ただの学生