目次: ROCK64/ROCKPro64
完全に自分のためのメモですが、ROCK64とTinker Boardで使用しているU-Bootのdistro bootの設定ファイル(extlinux.conf)を貼っておきます。
オリジナルのファイルにlinux-nextの起動用設定(label kernel-nextの部分)を追加しました。
menu title select kernel
label kernel-4.4.132-1075-rockchip-ayufan-ga83beded8524
kernel /boot/vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524
initrd /boot/initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524
devicetreedir /boot/dtbs/4.4.132-1075-rockchip-ayufan-ga83beded8524
append rw panic=10 init=/sbin/init coherent_pool=1M ethaddr=${ethaddr} eth1addr=${eth1addr} serial=${serial#} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 root=LABEL=linux-root rootwait rootfstype=ext4
label kernel-next
kernel /boot/Image
initrd /boot/initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524
fdt /boot/rk3328-rock64.dtb
append rw panic=10 init=/sbin/init coherent_pool=1M ethaddr=${ethaddr} eth1addr=${eth1addr} serial=${serial#} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 root=LABEL=linux-root rootwait rootfstype=ext4
label kernel-4.4.132-1075-rockchip-ayufan-ga83beded8524-memtest
kernel /boot/vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524
initrd /boot/initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524
devicetreedir /boot/dtbs/4.4.132-1075-rockchip-ayufan-ga83beded8524
append rw panic=10 init=/sbin/init coherent_pool=1M ethaddr=${ethaddr} eth1addr=${eth1addr} serial=${serial#} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 root=LABEL=linux-root rootwait rootfstype=ext4 memtest
クロスコンパイル用マシンにて実行 $ cd linux-next $ scp arch/arm64/boot/Image arch/arm64/boot/dts/rockchip/rk3328-rock64.dtb 192.168.1.xxx:~/ ROCK64にて実行 $ sudo cp Image /boot/ ; sudo cp rk3328-rock64.dtb /boot/ ; sync ; sudo reboot
CPUがAArch64なので生成されるイメージファイルはImageです。デバイスツリーはrk3328-rock64.dtbです。ネットワーク経由でROCK64のユーザ(なんでもよいですが)のホームディレクトリにコピーし、ボード側で /bootにコピーして使っています。またinitrdはオリジナルのものを拝借しています。
1行目のmenu title select kernelが結構大事で、この行を書いておくとU-Bootがカーネルを起動する際に下記のような選択肢が表示されます。
Found /boot/extlinux/extlinux.conf Retrieving file: /boot/extlinux/extlinux.conf 1433 bytes read in 28 ms (49.8 KiB/s) select kernel 1: kernel-4.4.132-1075-rockchip-ayufan-ga83beded8524 2: kernel-next 3: kernel-4.4.132-1075-rockchip-ayufan-ga83beded8524-memtest Enter choice:
この設定はとにかくボードからSDカードの抜き差しをやりたくない一心でできています。
普段はbootメニューで2番を選びlinux-nextカーネルを起動します。もし起動しないカーネルを書き込んでしまったり、ネットワークが死んでいるカーネルを書き込んでしまい、カーネルの更新ができなくなったときは、リブートし1番を選び元々書かれていたカーネルを起動して復旧させます。
何も選択せず放置すると1番が勝手に選ばれますので、おかしくなったら電源をON/OFFして放置すれば、必ずオリジナルのカーネルが起動します。ボードが少し遠くに置いてあって、AC電源ON/OFFからU-Bootの選択肢タイムアウトまでの間にキー入力ができないので、このような設定にしています……。
Tinker Boardの設定も同じ思想で作っています。
# cat /boot/extlinux/extlinux.conf
menu title select kernel
label kernel-4.4
kernel /zImage
fdt /rk3288-miniarm.dtb
append earlyprintk console=ttyS1,115200n8 root=/dev/mmcblk0p2 rw init=/sbin/init
label kernel-next
kernel /linux-next
fdt /rk3288-tinker.dtb
append earlyprintk console=ttyS1,115200n8 root=/dev/mmcblk0p2 rw init=/sbin/init
クロスコンパイル用マシンにて実行 $ linux-next $ scp arch/arm/boot/zImage arch/arm/boot/dts/rk3288-tinker.dtb 192.168.1.xxx:~/ Tinker Boardにて実行 # cp /home/katsuhiro/zImage /boot/linux-next; cp /home/katsuhiro/rk3288-tinker.dtb /boot/; sync; reboot
ROCK64との違いはCPUがAArch32なので生成されるイメージファイルはzImageであることと、デバイスツリーはrk3288-tinker.dtbであることでしょうか。
カーネルをネットワーク経由で更新する点は同じですが、zImageというファイル名だと元々存在するカーネルと被っているので、リネームしています。
< | 2019 | > | ||||
<< | < | 01 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | 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 | - | - |
合計:
本日:
管理者: Katsuhiro Suzuki(katsuhiro( a t )katsuster.net)
This is Simple Diary 1.0
Copyright(C) Katsuhiro Suzuki 2006-2023.
Powered by PHP 8.2.15.
using GD bundled (2.1.0 compatible)(png support.)