kernel4.9用のrealtime kernel patchが出たので当ててみた。
realtime kernelに限らず、kernelを作る手順は、
一年半ほど前
PICOにrealtime kernelを入れるときに書いたページを毎回参照しながらcompileしています。
さほど難しい手順ではありませんが...結局の所
このページ
を毎回参照し、自分にとって必要な手順だけを選んで実行しています。
他人さまのページなので、いつ無くなっても仕方ありませんが、無くなると私があわてちゃいそうなので、必要な所だけ抜き出しておきます。
要するに自分向けのメモですね。
(1) 新規インストール時の前準備
今回私がapt installでUbuntu16.10に入れたkernel make由縁のパッケージは
# apt install kernel-package libncurses5-dev libncursesw5-dev libssl-dev libasound2-dev
|
ちなみにオリジナルの手順は
# apt-get install kernel-package fakeroot build-essential
# apt-get build-dep linux
|
(2) ソースの取得
# wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.tar.xz
# wget https://www.kernel.org/pub/linux/kernel/projects/rt/4.9/patch-4.9-rt1.patch.xz
|
(3) 展開とパッチ当て
# tar xJvf linux-4.9.tar.xz
# cd linux-4.9
# xzcat ../patch-4.9-rt1.patch.xz | patch -p1
|
(4) Running configのコピーと新configの準備
初めてrealtime kernelを作るときはPreemption Modelを選ぶ必要あり。
その後はRunning config(旧kernel)に存在しないパラメータの選択を行う。
最初のうちは注意深く選んでいるけど、途中から面倒になってリターンキー押しがち。
# cp /boot/config-`uname -r` .config
# make oldconfig
Preemption Model
> 1. No Forced Preemption (Server) (PREEMPT_NONE)
2. Voluntary Kernel Preemption (Desktop) (PREEMPT_VOLUNTARY)
3. Preemptible Kernel (Low-Latency Desktop) (PREEMPT__LL) (NEW)
4. Preemptible Kernel (Basic RT) (PREEMPT_RTB) (NEW)
5. Fully Preemptible Kernel (RT) (PREEMPT_RT_FULL) (NEW)
choice[1-5]: 5
|
(5) configの編集
少なくともGeneral setup --> Local versionで名前くらい付けましょう。
(6) DEBUGパッケージは不要
これを忘れると時間もストレージ残量も大変なことになる。
# scripts/config --disable DEBUG_INFO
|
(7) make
# make -j `nproc` LOCALVERSION= deb-pkg
|
(8) 結果の確認
日頃の行いに応じて以下の8つのファイルが一つ上のパスに出来ます。
-rw-r--r-- 1 root root 1287 12月 27 12:00 linux-4.9.0-rt1mustang_4.9.0-rt1mustang-1.debian.tar.gz
-rw-r--r-- 1 root root 1288 12月 27 12:00 linux-4.9.0-rt1mustang_4.9.0-rt1mustang-1.dsc
-rw-r--r-- 1 root root 3263 12月 27 12:00 linux-4.9.0-rt1mustang_4.9.0-rt1mustang-1_amd64.changes
-rw-r--r-- 1 root root 146505644 12月 27 09:35 linux-4.9.0-rt1mustang_4.9.0-rt1mustang.orig.tar.gz
-rw-r--r-- 1 root root 961982 12月 27 11:52 linux-firmware-image-4.9.0-rt1mustang_4.9.0-rt1mustang-1_amd64.deb
-rw-r--r-- 1 root root 10551842 12月 27 11:54 linux-headers-4.9.0-rt1mustang_4.9.0-rt1mustang-1_amd64.deb
-rw-r--r-- 1 root root 48600958 12月 27 12:00 linux-image-4.9.0-rt1mustang_4.9.0-rt1mustang-1_amd64.deb
-rw-r--r-- 1 root root 868718 12月 27 11:54 linux-libc-dev_4.9.0-rt1mustang-1_amd64.debjk
|
dbgパッケージが無いだけマシだが、使うのは2つだけ。
Compute Stick m3をこんな感じで動作させたらcompileには2時間半かかりました。
CPU_MIN=400000
CPU_MAX=1800000
GOVERNORS="powersave"
NO_TURBO=1
ちなみにフルパワーのターボ全開にしたら電力足りずにcompile開始後1分で落ちた...
その為、恐る恐る上のセッティングでmakeした結果が2時間30分でした。
恐怖の全開フルブーストはこんなパラメータ。
CPU_MIN=400000
CPU_MAX=2200000
GOVERNORS="performance"
NO_TURBO=0
(9) インストール
installはdpkgコマンドを使う。
# dpkg -i linux-headers-4.9.0-rt1mustang_4.9.0-rt1mustang-1_amd64.deb linux-image-4.9.0-rt1mustang_4.9.0-rt1mustang-1_amd64.deb
|
ちなみに削除するときはaptで削除できる。
apt remove linux-headers-4.9.0-rt1mustang_4.9.0-rt1mustang-1_amd64.deb linux-image-4.9.0-rt1mustang_4.9.0-rt1mustang-1_amd64.deb
|
dpkg -iでinstallすると、勝手にupdate-grubまで実行してくれるので、あとは再起動するだけ。
フルパワーで動かしたときに電力不足で落ちるのは、普段使ってるUSB-USB Microケーブルの限界かな。
2.4A対応ケーブルだけど...そりゃ足りないよなぁ。本体+SSD+CONCEROへ供給してるんだもん。
ちなみに、前回はCompute Stick単体でrealtime kernelをmakeしたけど、その時は全開でもmakeできた。
但し、温度は90度に迫る勢いだったのを覚えている。
今回はturboも掛けずフルパワーにもしなかったのと、それなりにクーリングが効いているので、MAX60度程度に抑える事ができた。
Thermal monitor graph |
|
普段の状態だと、こんな感じ。
横置きのACアダプタ駆動での測定です。鞄の中で縦置きにして煙突効果を狙ったクーリングが効かない状況で54度位。
鞄自体も上部を開けた状態じゃないと結局熱が籠っちゃうけどね。
Thermal monitor graph |
|
90度とか、明らかに機器寿命を縮めちゃうだろうし、圧倒的に速いって感触も無かったと思うので...この位で運用するのが良い様な気がします。