FreeBSD/amd64を母艦にして、pcDuinoにNetBSDをインストールしてみました。
まずu-bootをportsでビルドします。
micro sdをUSB変換で母艦にさします。
armv7.imgをNetBSDのサイトからダウンロードして、ビルドしたu-bootと書き込みます。
% fetch http://cdn.netbsd.org/pub/NetBSD/NetBSD-9.3/evbarm-earmv7hfeb/binary/gzimg/armv7.img.gz
% gzip -d armv7.img.gz
% sudo dd if=armv7.img of=/dev/da0 bs=1m conv=sync
% sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/da0 bs=1k seek=8 conv=sync
armv7.imgはu-boot用に先頭に空きスペースがあって、そこにu-bootを書き込む事でブートできるようになるようです。
出来上がったmicro sdをpcDuinoにさして電源を入れるとブートします。
armv7.imgは初回起動時に/ファイルシステムをメディアのサイズにリサイズするようです。
初回起動時にはいろいろ設定をするので、時間がかかります。
armv7# df
Filesystem 1K-blocks Used Avail %Cap Mounted on
/dev/ld0a 7549880 1029408 6142984 14% /
/dev/ld0e 81820 33456 48364 40% /boot
kernfs 1 1 0 100% /kern
ptyfs 1 1 0 100% /dev/pts
procfs 8 8 0 100% /proc
tmpfs 131072 8 131064 0% /var/shm
母艦で見るとこうです。
% sudo gpart show da0
=> 63 15572929 da0 MBR (7.4G)
63 32705 - free - (16M)
32768 163840 1 fat32lba [active] (80M)
196608 15376384 2 !169 (7.3G)
armv7.imgはFATとffsで出来ていて、FAT部分はこんなファイルが入っています。
=> fatls mmc 0
dtb/
8887704 netbsd-GENERIC.ub
8887696 kernel7.img
21522 bcm2836-rpi-2-b.dtb
21713 bcm2837-rpi-3-a-plus.dtb
22194 bcm2837-rpi-3-b.dtb
22630 bcm2837-rpi-3-b-plus.dtb
21655 bcm2837-rpi-cm3-io3.dtb
80682 exynos5422-odroidhc1.dtb
86448 exynos5422-odroidxu3-lite.dtb
86743 exynos5422-odroidxu3.dtb
85647 exynos5422-odroidxu4.dtb
28381 socfpga_cyclone5_de0_nano_soc.dtb
11684 zynq-cc108.dtb
12083 zynq-microzed.dtb
11867 zynq-parallella.dtb
17306 zynq-zc702.dtb
16059 zynq-zc706.dtb
12037 zynq-zc770-xm010.dtb
11518 zynq-zc770-xm011.dtb
11527 zynq-zc770-xm012.dtb
11988 zynq-zc770-xm013.dtb
11571 zynq-zed.dtb
12048 zynq-zturn.dtb
11595 zynq-zybo.dtb
11694 zynq-zybo-z7.dtb
227 boot.ini
115 cmdline.txt
234 config.txt
1494 LICENCE.broadcom
52116 bootcode.bin
6660 fixup.dat
2618 fixup_cd.dat
2846852 start.elf
677732 start_cd.elf
EFI/
129 boot.cmd
201 boot.scr
36 file(s), 2 dir(s)
NetBSDではAllwinnerやラズパイはGENERICカーネルでサポートしているようです。
GENERICカーネルはFTDでコンフィグレーションをしていて、DTB(DTSをコンパイルしたもの)はu-bootから拾っているようです。
ruby31とbisonをpkg_addしてgem31でrakeをinstallしてmruby 3.1をビルドしてみました。fib(32)が6秒でした。
micro sdにrwなファイルシステムを作っているので、ハードに使うとmicro sdがじきに壊れます。
10.0も同じ手順でインストールできましたが、イーサーネットが使えません。(2024/04/01)