※R5S以外にもrockchip系のSoCを搭載したNanoPiはおそらく同じだと思います。
以前書いた記事NanoPi R5Sのカーネル調整のようにNanoPiのカーネルを調整したり、利用したいオプションを有効にしたい場合があります。カーネルを作るのは様々ツールが提供されているので、いくつかのパッケージをインストールすれば作れるのですが、カーネルのインストール方法が見当たりません。
カーネルは何処?
SBCでも起動方法によって異なるようですが、NanoPi R5Sの/bootにはカーネルがありません。インストールされていても起動しているカーネルとは異なるものがインストールされているだけですからパッケージを削除しても大丈夫です。
ではどこに?
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk2 179:0 0 14.6G 0 disk
├─mmcblk2p1 179:1 0 4M 0 part
├─mmcblk2p2 179:2 0 4M 0 part
├─mmcblk2p3 179:3 0 4M 0 part
├─mmcblk2p4 179:4 0 16M 0 part
├─mmcblk2p5 179:5 0 40M 0 part
├─mmcblk2p6 179:6 0 32M 0 part
├─mmcblk2p7 179:7 0 32M 0 part
└─mmcblk2p8 179:8 0 14.4G 0 part /
mmcblk2boot0 179:32 0 4M 1 disk
mmcblk2boot1 179:64 0 4M 1 disk
nvme0n1 259:0 0 119.2G 0 disk /home
lsblkで確認するとeMMCが沢山のパーティションに分割されています。
この中のmmcblk2p5にカーネルが入っています。sd-fuse_rk3568 でカーネルを作ると out/kernel-rk3568/kernel.img というファイルが生成され、そのまま格納されています。
eMMCへのインストールをおさらい
eMMCへインストールにはEFlasherというツールが提供されています。eMMC書き込みイメージについているあれです。FriendlyELECはこのツールについてもドキュメントを用意してくれています。
https://wiki.friendlyelec.com/wiki/index.php/EFlasher
ダウンロードしたイメージはSDカードから起動するといきなりeMMCへのインストールが始まるのでそういうものだと思っていましたが、バックアップなどいくつかの機能があるようです。どこに???
実は、オフィシャルイメージはautostartが有効にされていてインストールが自動で走ります。これを止めておくとメニューが開きます。インストール中にキャンセルしてもメニューに戻れます。(eMMCは破壊されてますが。。)
そして、このメニューにたどり着ければ overlayをキャンセルしてext4を直に使うことも出来ます。(この場合、mmcblk2p9は作られず、mmcblk2p8だけを利用する形になります)
このUIを見ると、rootfsは変更を加えずにkernelやu-bootだけを入れ替えたりできるのかな?と思うのですが、残念ながらそういう構造になはっていないようです。
つまるところ、eMMCへのインストールはファームウェアとしてセットになったものを初期状態として書き込むことになるのでカーネルだけを入れ替える手段は見当たりません。
格納場所がわかるならそこに書き込めば?
まず、注意事項です。カーネルを上書きした場合最悪起動しなくなりますから事前にバックアップ等を行ってください。
起動しなくなった場合にはSDカードで起動できるイメージを用意してデータを抜き出せば修復後データを復元できます。
$ mount /dev/mmcblk2p9 /mnt データ領域をマウントして
$ sudo tar cvzf backup.tgz -C /mnt . アーカイブに吸い上げ
必要なデータが抜き出せていることを確認したら eMMCにインストールして、吸い上げたデータを書き戻せばよいでしょう。
万全の準備をしたうえで、最悪再インストールして修復する覚悟の上で書き込んでみましょう。
dd if=kernel.img of=/dev/mmcblk2p5
うまくいけば、新しくビルドしたカーネルが起動してくれるはずです。
コメント