Raspberry Pi 3 B+でFreeBSDを動かしたメモ
とりあえず雑に書き散らかします。
- インストールイメージはWindowsからであればFreeBSDのマニュアルによるとImage Writer for Windowsとかで書き込める。
- 最近のRPI3+はデフォルトでUSBブートが有効化されているので、起動イメージを書き込んだUSBメモリを刺して起動で大丈夫っぽい (古いロットに当たった場合は手動で)
- USBメモリとの相性とは思われるが、mountrootが動くタイミングまでに/dev/da0が認識されないケースあり。この場合mountrootのプロンプトが出たら「ufs:/dev/ufs/rootfs」と入力してあげれば上がる。
- 初回ブート時はUSBメモリのFSリサイズが走るので結構時間がかかる。
- mountrootのタイミング対策は/boot/loader.confにdelay設定を入れればOK。↓このへん参考にした。
kern.cam.boot_delay=30000
kern.cam.scsi_delay=30000 - RPI3+のWiFiには現状対応できていないため、NWに繋ぐにはEthernet経由になる。手っ取り早く繋ぐには、たとえばラップトップのWiFiとEthernetをBridgeして紐で繋ぐとか。
- nslookupとかdigが無いぞ。。。どうしよう → FreeBSD 10.0からBINDがベースシステムから除かれたのを忘れてました
- freebsd-updateは現状使えない。ざんねん。
root@generic:~ # freebsd-update fetch -v debug
src component not installed, skipped
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching public key from update1.freebsd.org... fetch: http://update1.freebsd.org/12.0-RELEASE/arm64/pub.ssl: Not Found
failed.
Fetching public key from update4.freebsd.org... fetch: http://update4.freebsd.org/12.0-RELEASE/arm64/pub.ssl: Not Found
failed.
Fetching public key from update2.freebsd.org... fetch: http://update2.freebsd.org/12.0-RELEASE/arm64/pub.ssl: Not Found
failed.
No mirrors remaining, giving up. - pkgも使えない…かと思ったら使える。ただし四半期更新っぽいので最新のpkgを使いたいのであればportsを使う必要あり。ただしUSBブートの場合はI/Oが遅いので要注意。またportsでビルドしようとするとautoconfのビルドに当たったあたりで依存関係のループに陥るので、autoconfぐらいはpkgで入れたほうが安全。一度入れてしまえばportsから更新できるし。またpkg versionとか叩く場合はpkgからca_root_nssをいれておかないとpkgの情報の入っているサーバのLet's Encryptの証明書検証でコケるので注意。また予めntpdateでシステム時刻を合わせておくこと。
- デフォルトではIPv6が有効化されていないのでrtsol -Fで有効化してあげる必要あり。rc.confでifconfig_if名_ipv6の設定を入れてあげると自動的に有効になる。
とりあえず上げるだけなら多少の罠はあるものの難しくはなかった。今後はどの程度元気に動いてくれるのかいろいろ試したい。
あとCPU性能を見たいのでなにかベンチになるもの探さないと。
一応、dmesgはこんな感じ。
---<<BOOT>>--- Copyright (c) 1992-2018 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 12.0-RELEASE r341666 GENERIC arm64 FreeBSD clang version 6.0.1 (tags/RELEASE_601/final 335540) (based on LLVM 6.0.1) VT(efifb): resolution 656x416 KLD file umodem.ko is missing dependencies Starting CPU 1 (1) Starting CPU 2 (2) Starting CPU 3 (3) FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs random: unblocking device. random: entropy device external interface MAP 7ffe000 mode 2 pages 2 MAP 8007000 mode 2 pages 2 MAP 39f35000 mode 2 pages 1 MAP 39f3a000 mode 2 pages 1 MAP 3b347000 mode 2 pages 1 MAP 3f100000 mode 1 pages 1 kbd0 at kbdmux0 ofwbus0: <Open Firmware Device Tree> simplebus0: <Flattened device tree simple bus> on ofwbus0 ofw_clkbus0: <OFW clocks bus> on ofwbus0 clk_fixed0: <Fixed clock> on ofw_clkbus0 clk_fixed1: <Fixed clock> on ofw_clkbus0 regfix0: <Fixed Regulator> on ofwbus0 regfix1: <Fixed Regulator> on ofwbus0 psci0: <ARM Power State Co-ordination Interface Driver> on ofwbus0 local_intc0: <BCM2836 Interrupt Controller> mem 0x40000000-0x400000ff on simplebus0 intc0: <BCM2835 Interrupt Controller> mem 0x7e00b200-0x7e00b3ff irq 20 on simplebus0 gpio0: <BCM2708/2835 GPIO controller> mem 0x7e200000-0x7e2000b3 irq 22,23 on simplebus0 gpiobus0: <OFW GPIO bus> on gpio0 generic_timer0: <ARMv7 Generic Timer> irq 0,1,2,3 on ofwbus0 Timecounter "ARM MPCore Timecounter" frequency 19200000 Hz quality 1000 Event timer "ARM MPCore Eventtimer" frequency 19200000 Hz quality 1000 bcm_dma0: <BCM2835 DMA Controller> mem 0x7e007000-0x7e007eff irq 4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 on simplebus0 bcmwd0: <BCM2708/2835 Watchdog> mem 0x7e100000-0x7e100027 on simplebus0 bcmrng0: <Broadcom BCM2835 RNG> mem 0x7e104000-0x7e10400f on simplebus0 mbox0: <BCM2835 VideoCore Mailbox> mem 0x7e00b880-0x7e00b8bf irq 21 on simplebus0 gpioc0: <GPIO controller> on gpio0 uart0: <PrimeCell UART (PL011)> mem 0x7e201000-0x7e201fff irq 24 on simplebus0 uart0: console (115200,n,8,1) spi0: <BCM2708/2835 SPI controller> mem 0x7e204000-0x7e204fff irq 26 on simplebus0 spibus0: <OFW SPI bus> on spi0 spibus0: <unknown card> at cs 0 mode 0 spibus0: <unknown card> at cs 1 mode 0 iichb0: <BCM2708/2835 BSC controller> mem 0x7e804000-0x7e804fff irq 37 on simplebus0 bcm283x_dwcotg0: <DWC OTG 2.0 integrated USB controller (bcm283x)> mem 0x7e980000-0x7e98ffff,0x7e006000-0x7e006fff irq 43,44 on simplebus0 usbus0 on bcm283x_dwcotg0 sdhci_bcm0: <Broadcom 2708 SDHCI controller> mem 0x7e300000-0x7e3000ff irq 46 on simplebus0 mmc0: <MMC/SD bus> on sdhci_bcm0 fb0: <BCM2835 VT framebuffer driver> on simplebus0 fbd0 on fb0 VT: Replacing driver "efifb" with new "fb". fb0: 656x416(656x416@0,0) 24bpp fb0: fbswap: 1, pitch 1968, base 0x3eb33000, screen_size 818688 pmu0: <Performance Monitoring Unit> irq 50 on simplebus0 cpulist0: <Open Firmware CPU Group> on ofwbus0 cpu0: <Open Firmware CPU> on cpulist0 bcm2835_cpufreq0: <CPU Frequency Control> on cpu0 cpu1: <Open Firmware CPU> on cpulist0 cpu2: <Open Firmware CPU> on cpulist0 cpu3: <Open Firmware CPU> on cpulist0 gpioled0: <GPIO LEDs> on ofwbus0 gpioled0: <led1> failed to map pin cryptosoft0: <software crypto> Timecounters tick every 1.000 msec iicbus0: <OFW I2C bus> on iichb0 iic0: <I2C generic I/O> on iicbus0 usbus0: 480Mbps High Speed USB v2.0 mmc0: No compatible cards found on bus bcm2835_cpufreq0: ARM 600MHz, Core 250MHz, SDRAM 400MHz, Turbo OFF ugen0.1: <DWCOTG OTG Root HUB> at usbus0 uhub0: <DWCOTG OTG Root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus0 mbox0: mbox response error bcm2835_cpufreq0: can't set clock rate (id=3) uhub0: 1 port with 1 removable, self powered ugen0.2: <vendor 0x0424 product 0x2514> at usbus0 uhub1 on uhub0 uhub1: <vendor 0x0424 product 0x2514, class 9/0, rev 2.00/b.b3, addr 2> on usbus0 uhub1: MTT enabled uhub1: 4 ports with 3 removable, self powered ugen0.3: <vendor 0x0424 product 0x2514> at usbus0 uhub2 on uhub1 uhub2: <vendor 0x0424 product 0x2514, class 9/0, rev 2.00/b.b3, addr 3> on usbus0 uhub2: MTT enabled uhub2: 3 ports with 2 removable, self powered ugen0.4: <vendor 0x0424 product 0x7800> at usbus0 muge0 on uhub2 muge0: <vendor 0x0424 product 0x7800, rev 2.10/3.00, addr 4> on usbus0 muge0: Chip ID 0x7800 rev 0002 miibus0: <MII bus> on muge0 ukphy0: <Generic IEEE 802.3u media interface> PHY 1 on miibus0 ukphy0: none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master, auto ue0: <USB Ethernet> on muge0 ue0: Ethernet address: b8:27:eb:1c:e4:1c ugen0.5: <UFD 3.0 Silicon-Power32G> at usbus0 umass0 on uhub1 umass0: <UFD 3.0 Silicon-Power32G, class 0/0, rev 2.10/1.10, addr 5> on usbus0 (probe0:umass-sim0:0:0:0): INQUIRY. CDB: 12 00 00 00 24 00 (probe0:umass-sim0:0:0:0): CAM status: CCB request completed with an error (probe0:umass-sim0:0:0:0): Retrying command, 3 more tries remain Release APs...done CPU 0: ARM Cortex-A53 r0p4 affinity: 0 da0 at umass-sim0 bus 0 scbus0 target 0 lun 0 da0: <UFD 3.0 Silicon-Power32G PMAP> Removable Direct Access SPC-4 SCSI device da0: Serial Number P180275307168A4EA77E7E68 da0: 40.000MB/s transfers da0: 29574MB (60567552 512 byte sectors) da0: quirks=0x2<NO_6_BYTE> Trying to mount root from ufs:/dev/ufs/rootfs [rw]... Instruction Set Attributes 0 = <CRC32> Instruction Set Attributes 1 = <> Processor Features 0 = <AdvSIMD,Float,EL3 32,EL2 32,EL1 32,EL0 32> Processor Features 1 = <0> Memory Model Features 0 = <4k Granule,64k Granule,MixedEndian,S/NS Mem,16bit ASID,1TB PA> Memory Model Features 1 = <> Memory Model Features 2 = <32b CCIDX,48b VA> Debug Features 0 = <2 CTX Breakpoints,4 Watchpoints,6 Breakpoints,PMUv3,Debug v8> Debug Features 1 = <0> Auxiliary Features 0 = <0> Auxiliary Features 1 = <0> CPU 1: ARM Cortex-A53 r0p4 affinity: 1 CPU 2: ARM Cortex-A53 r0p4 affinity: 2 CPU 3: ARM Cortex-A53 r0p4 affinity: 3 Warning: no time-of-day clock registered, system time will not be set accurately lo0: link state changed to UP muge0: Chip ID 0x7800 rev 0002 ue0: link state changed to DOWN ue0: link state changed to UP
rc.confはこんな感じ。
hostname="generic" ifconfig_ue0="ないしょ/24" ifconfig_ue0_ipv6="inet6 accept_rtadv" defaultrouter="ないしょ" rtsold_enable="YES" sshd_enable="YES" sendmail_enable="NONE" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO" growfs_enable="YES" ntpd_enable="YES"