ℹ️本記事は古いコンテンツを変換して表示しています。
表示が崩れたり、リンクが正しくない可能性があります。ご了承ください。
ℹ️本記事は古いコンテンツを変換して表示しています。
表示が崩れたり、リンクが正しくない可能性があります。ご了承ください。
2021/02/23 09:02 : Raspberry PI 4 Model B + FreeBSD 13 BETA3 + ZFS
試してうまくいったのでメモとして残しておく。後から手順にしているので、余計な手順や、抜けている手順があるかもしれない。(が、参考くらいにはなるはずと思っている)
なお、初期設定ほかではこちらを参考にさせてもらった。本稿執筆時点(2021/02/23)では、シリアルコンソールなしで、USB+HDMIディスプレイというごく普通の装備だけで動かせている。
# dd if=/tmp/FreeBSD-13.0-BETA3-arm64-aarch64-RPI.img of=/dev/da0 bs=65536
# mkdir /mnt/raspi # mount -t ufs /dev/da0s2a /mnt/raspi # cd /mnt/raspi # tar -cf /tmp/raspi-rootfs.tar . # cd / # umount /mnt/raspi
# gpart delete -i 2 da0 # gpart add -t freebsd -a 1M da0 # gpart create -s BSD da0s2 # gpart add -t freebsd-zfs -s 4G da0s2 # zpool create -t piroot -m none zroot /dev/da0s2a # zfs create piroot/ROOT # zfs create -o mountpoint=/ -u piroot/ROOT/default # zpool set bootfs=piroot/ROOT/default piroot # mount -t zfs piroot/ROOT/default /mnt/raspi # cd /mnt/raspi # tar -xf /tmp/raspi-rootfs.tar
/boot/loader.conf
(もちろん /mnt/raspi/boot/loader.conf
のことだよ!) を書き変える。hw.usb.template, umodem_load, boot_multicons, boot_serialは無効化した。どれが犯人か分からないが、bcm_dmaでエラーが起きたので無効化して逃げている。
#hw.usb.template=3 #umodel_load="YES" #boot_multicons="YES" #boot_serial="YES" beastie_disable="YES" loader_color="NO" zfs_load="YES" vfs.root.mountfrom="zfs:zroot/ROOT/default"
/etc/fstab
からrootfsをマウントする記述を取り除く。/dev/ufs/rootfs
の部分。忘れると酷い目に遭う。遭った。(おまけ参照)# zpool export piroot
# dd if=/tmp/FreeBSD-13.0-BETA3-arm64-aarch64-RPI.img of=/dev/da1 bs=65536
vfs.root.mountfrom
を書き変えて、一時的にUSBメモリから起動させる。
Hit [Enter] to boot immediately, or any other key for command prompt. Booting [/boot/kernel/kernel] in 10 seconds... Type '?' for a list of commands, 'help' for more detailed help. OK set vfs.root.mountfrom=ufs:/dev/da0s2a OK boot
# kldload /boot/kernel/zfs.ko # zpool import -f -o cachefile=/tmp/zpool.cache -R /mnt/raspi zroot # cp /tmp/zpool.cache /mnt/raspi/boot/zfs/zpool.cache # shutdown -p now
ある手順を忘れると、起動中に
Warning: no time-of-day clock registered, system time will not be set accurately
が出て止まる。このとき、loaderで boot -v
すると、start_init: trying /sbin/init
で止まる。(正常起動時は lo0: link state changed to UP
や genet0: link state changed to DOWN
が出るはず。)
これがまともなエラーを吐かないので調査に手間取った。途中で作ったUSBメモリを挿していると、これは発生しない。(/dev/ufs/rootfs
があるから)適当なUSBメモリでは代わりにならない。(/dev/ufs/rootfs
がないから)適当に同じようなパーティションを書いたUSBメモリでもダメ。(ラベルを付け忘れたので以下略)