Select Your Language

免責事項

  • 本サイトの情報の利用、内容、サービスによって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ユーザーご自身の責任においてご利用いただきますようお願いいたします。

    本サイトで頒布している基板およびキットは、技術者、またはそれに準ずる電気的知識をお持ちの電子工作ファンの方のためのものです。一般のオーディオファンの方のためのものではありません。
    また、頒布基板およびキットは、いかなる条件でも動作を保証するものではございませんので、あらかじめご了承ください。

    電子工作では、火傷、感電、火災などの可能性があります。十分に注意をして作業して下さい。

    営利目的のご使用は認めておりません。 記事の転載や、基板・キットの商用利用の方は、ご連絡ください。学生やサークルの学習目的でまとめてご購入する場合は特別価格でご提供させていただきます。
無料ブログはココログ

スポンサー

« Volumio2に秋月電子のI2CタイプOLEDを接続して曲名などを表示する方法(リベンジ) | トップページ | 秋の夜長は Raspberry Pi 3 で RT-Linux ビルドに挑戦 »

2016年9月22日 (木)

秋の夜長の Raspberry Pi 3 カーネル・セルフ・ビルド

そんなわけで、RaspberryPi 3でカーネルをセルフビルドすると、何時間で終わるのでしょうか?

セルフビルドの良いところは、ビルド後の運用が素早いという点と、クロス環境(Linuxマシン)を用意する必要がない点です。 最初のビルド時間は長いですが、その後は差分のみですので、短ければ1~2分のビルド時間、5分程度のサイクルで再起動から検証できたりします。

CPUは熱くなるのでこのようにヒートシンクを付けたほうが良いです。電源アダプタやケーブルも気をつけましょう。 最大で2A食うようです。

Pi3_self2  

以下はメモ書き。  

CPU温度表示 
cat /sys/class/thermal/thermal_zone0/temp

CPU周波数表示
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

 

 

では、早速準備しましょう。 

今回は、Raspbianを使っている Moode Audio R2.7を使いました。 なぜか最新版のVolumio 2 だと上手くいかなかったからです。 パッケージの依存関係が壊れぎみ? 

 

SDカードの領域を拡大

Moode Audio は WEB-UI からSDカードの領域を最大に広げられます。

Menu -> Configure から systemを選択して
「Expand SD Card storage」を yesに してSETボタンを押すと勝手に再起動します。

Pi3_self21  

それ以外のOSの場合はraspi-config、もしくは、fdisk でパーティション変更して再起動後に resize2fs します。

 

 

ビルド環境の準備

sudo apt-get update

sudo apt-get -y install ncurses-dev device-tree-compiler bc

Moode Audio の場合はこれだけでOKでした。 gccやmakeなどが入っていない環境の場合はそれらもインストールします。  

gccのバージョンを確認します。 カーネルをビルドしたgccバージョンを見るには

 

pi@moode:~ $ cat /proc/version
Linux version 4.4.19-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611) ) #906 SMP Tue Aug 23 15:53:06 BST 2016

4.9.3 のようですね。

インストールされているgccのバージョンは

pi@moode:~ $ gcc -v
Using built-in specs.
・・・・・・・・略
gcc version 4.9.2 (Raspbian 4.9.2-10) 

4.9.2 ですね。  4.9.x なら問題ありません。 一致していない場合は、こちらのように一致させる作業が必要です。

※ rpi-source --skip-gcc  として gccバージョンチェックをスキップする方法もあるようです。 実際に試したところ gcc バージョンが違っていても大丈夫でした。

 

 

カーネルソースのダウンロード

現在起動しているカーネルと同じバージョンのものを持ってきます。 なぜ最新版じゃないの? というのは、今回は、新しいものへの差し替えが目的ではないからです。

sudo wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source -O /usr/bin/rpi-source

sudo chmod +x /usr/bin/rpi-source

sudo /usr/bin/rpi-source -q --tag-update

sudo rpi-source -d /home/pi/  ( --skip-gcc を付けるとgccバージョン無視)

カーネルソース一式が落ちてくるまで、しばらく待ちます。
以前は10~15分くらいだったのですが、昨日やってみたら1時間くらいかかりました。 ソースを置いているサーバーの応答に影響されているような気がします。 

 

 

カーネルビルド

いよいよ、カーネルのビルドです。 

最初にスーパーユーザーになっておきます。

sudo su

現在の起動中のKernel config情報を取得して、ビルドする.configへ反映します。

cd linux

modprobe configs

zcat /proc/config.gz > .config

make oldconfig

同じバージョンなので何も「yes/no」を求めてこないはずです。 カーネルソースの方が新しい場合は、追加になった項目をどうするか聞かれます。 

makeは カーネル本体とモジュールとを個別にビルドしてみました。 timeコマンドを使ってかかった時間も計測してみました。  SDカードの速度に影響されますが、 トータルで 2時間くらいですね。

-j4 オプションで4並列でビルドするより、 -j6 の6並列でビルドした方が若干速いようでした。 logを取らないともう少し速くなると思います。

 

====== zImge =======

time make -j6 zImage 2>&1 | tee make1.log

real    32m1.401s
user    99m49.730s
sys     4m31.880s

 

====== modules =======

time make -j6 modules 2>&1 | tee make2.log

real    75m41.928s
user    266m24.640s
sys     15m31.250s

 

====== dtbs =======

time make dtbs 2>&1 | tee make3.log

real    0m14.773s
user    0m3.870s
sys     0m2.000s

 

実は、sshを切断すると、ビルドしているプロセスも落ちてしまいます。 2時間もsshを接続するためにPCの電源も入れっぱなしが嫌だというひとは、nohup コマンドでバックグラウンド処理にすればOKです。 

nohup make -j6 zImage modules dtbs 2>&1 | tee make.log &

無事に終わったかどうかを確かめるには、LEDがチラチラしなくなった後、sshで接続して

cd linux

tail make.log

でどうでしょうか。 

 

 

インストールと起動

ビルドしたカーネルをインストールして起動してみましょう。 

モジュールのインストール

make modules_install

 

デバイスツリーオーバーレイのインストール

cp arch/arm/boot/dts/overlays/*.dtbo /boot/overlays/

cp arch/arm/boot/dts/overlays/README /boot/overlays/

 

カーネルのインストール(念のため現在のカーネルをバックアップ)

mv /boot/kernel7.img /boot/kernel7-bakup.img

cp arch/arm/boot/zImage /boot/kernel7.img

 

再起動します

reboot

 

再起動後、カーネルを確かめてみましょう。 

pi@moode:~ $ uname -a

Linux moode 4.4.19-v7+ #1 SMP Wed Sep 21 11:00:36 EDT 2016 armv7l GNU/Linux

pi@moode:~ $ cat /proc/version

Linux version 4.4.19-v7+ (root@moode) (gcc version 4.9.2 (Raspbian 4.9.2-10) ) #1 SMP Wed Sep 21 11:00:36 EDT 2016

新しくなりましたね。

 

とはいっても、.configは今までと何も変えていないので、何も変化はないはずです。 

ココまでが序章です。 あくまでも、この方法で問題なく起動できるカーネルがビルドできるのかを確かめる作業でした。 

この後「Low-Latency」 カーネルや、352.8k / 384kHz対応のALSAドライバへの変更をやっていきましょう。 

 

つづきはまた後日。   

続きは、Low-Latency Kernelを通りこして Real Time Kernelまで行きました。 こちらからどうぞ。 

 

 

 

※ 参考にさせていただいたwebサイト様はこちらです。  とても有用な情報と思います。 

 

にほんブログ村 PC家電ブログ PCオーディオへ にほんブログ村
ブログランキングに参加中です。 めざせ1位! 
もしよろしければ「ぽちっと」お願いします。 



« Volumio2に秋月電子のI2CタイプOLEDを接続して曲名などを表示する方法(リベンジ) | トップページ | 秋の夜長は Raspberry Pi 3 で RT-Linux ビルドに挑戦 »

Raspberry Pi」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: 秋の夜長の Raspberry Pi 3 カーネル・セルフ・ビルド:

« Volumio2に秋月電子のI2CタイプOLEDを接続して曲名などを表示する方法(リベンジ) | トップページ | 秋の夜長は Raspberry Pi 3 で RT-Linux ビルドに挑戦 »

サイト内検索(new)

2025年1月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31