ARMBIANのカーネルを更新した

 以下の投稿に記載したように、systemdのUpgradeに伴う障害対応の一環で、ARMBIANを導入したOrangePi Oneのカーネルを更新しました。
wave.hatenablog.com

 Linuxカーネルの更新は面倒な作業を想定していたのですが、armbian-configツールを使って簡単にカーネル更新が行えました。その手順を紹介します*1
 

Linux Kernel更新手順

1. 現状のLinux Kernelバージョンを確認し、armbian-configを起動*2

$ uname -a
Linux orangepione 3.4.113-sun8i #2 SMP PREEMPT Sat Jan 12 15:54:26 CET 2019 armv7l armv7l armv7l GNU/Linux
$ sudo armbian-config

2. Systemを選択しOK
f:id:kachine:20190118042421p:plain

3. Switch(またはOther*3 )を選択しOK
f:id:kachine:20190118042627p:plain

4. 「シングルボードコンピュータの挙動が変わったり、ブートに失敗する可能性がある」旨の警告を承諾できるなら"Yes, I understand"にマークしてOK
f:id:kachine:20190118042856p:plain

5. 更新したいカーネルを選択しOK
f:id:kachine:20190118043015p:plain

6. 「ほかのカーネルでは挙動が変わったり*4壊れたりするかもしれないし、ボードの設定がデフォルトに戻る*5」という趣旨の警告を承諾できるならOK
f:id:kachine:20190118043328p:plain

7. インストールが実行されるのでしばらく待つ
f:id:kachine:20190118043749g:plain

8. インストール完了メッセージが表示されたらリブートするためYes
f:id:kachine:20190118043932p:plain

9. リブート完了後、更新後のLinux Kernelバージョンを確認

$ uname -a
Linux orangepione 4.19.13-sunxi #5.70 SMP Sat Jan 12 15:43:21 CET 2019 armv7l armv7l armv7l GNU/Linux

10. 各種設定及びソフトウェアの挙動を確認し、必要に応じて対策
 

雑感

 (上記手順の10は動作させているソフトウェアによっては面倒かもしれませんが、)カーネル更新自体は上記のように対話型UIで非常に簡単に行えました。
 今回行った3.4.113-sun8i→4.19.13-sunxiの更新では、ハードウェア周りの情報取得のためのファイルが変わっていたため、自前の監視スクリプトがエラーを起こすようになったのを修正する必要がありました。また、512MBしかないメモリをアプリケーションで有効利用するため、ramlogとzramを止めていたのですが、これがデフォルトの挙動で動作するようになっていたため、disabledにする必要がありました。他にも何かdisabledにしていたサービスがあったような気もするのですが、はっきりした記憶が無く。これから作業する場合には予め何をdisabledにしているのか、事前に確認しておくのが望ましいと思います。
 



以上。

*1:スクリーンショットはOrangePi Oneのものですが、NanoPi Neoでも同様でした。表示内容はarmbian-configのバージョンや現在のLinuxカーネルのバージョン等によって微妙に異なりますが、基本的には似た感じです。

*2:armbian-configが未インストールならsudo apt install armbian-configでインストール可能。

*3:現在使用中のLinux Kernelバージョン等により異なります。

*4:例えば、SoCの温度が読み取れるファイル/sys/devices/virtual/hwmon/hwmon1/temp1_inputが無くなって、/sys/devices/virtual/thermal/thermal_zone0/tempに代わっていたりすることを確認しています。

*5:意図的にdisableにしていたサービスが、カーネル更新後enabledになっていたのを確認しています。