Raspberry Pi 3 B+でFreeBSDを動かしたメモ (2)

いろいろ手こずったので。

  • USBメモリブートでUSB HDDぶら下げようとしてみたところ、どうやら現状のFreeBSDのRPI3向けブートローダーはUSB Mass Storage Deviceが複数あると起動デバイスを見失ってしまう模様。素直にSDカードからBootするほうが良さそう。

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。↓このへん参考にした。

    forums.freebsd.org

    kern.cam.boot_delay=30000
    kern.cam.scsi_delay=30000
  • RPI3+のWiFiには現状対応できていないため、NWに繋ぐにはEthernet経由になる。手っ取り早く繋ぐには、たとえばラップトップのWiFiEthernetを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"

Super Duperのピクルスが懐かしくなってきたので自作してみる

レシピが公開されているけれど、単位がアメリカものなので計算せねば。

食材 (和訳) 分量 (アメリカサイズ) 分量 (日本サイズ) 日本で作りやすそうな分量
White Vinegar ホワイトビネガー 3/4ガロン 2.84L 150cc
Brown Sugar ブラウンシュガー 3/4カップ 180cc 小さじ2
Sea Salt 海塩 1/2カップ 120cc 小さじ1 + 1/3
Garlic Cloves ニンニク (粒のまま) 3/4カップ 180cc 2粒
Mustard Seeds マスタードシード 1/4カップ 60cc 小さじ2/3
Coriander Seeds コリアンダーシード 1/4カップ 60cc 小さじ2/3
Black Pepper 黒胡椒 1/2ティースプーン? 小さじ1/2 少々
Fennel Seeds フェンネルシード 1/4カップ 60cc 小さじ2/3
Whole Chile de Árbol 唐辛子 1/3カップ 80cc 1〜2本
Ice-cold Water 冷水 1ガロン 3.79L 200cc
Cucumbers きゅうり 12.5ポンド 5.67kg 300g

とりあえずきゅうり3本分くらいで計算。1本100gくらいなので。
単位はかなり丸めてます。これで試してから微調整してみよう。

艦これ E-5甲

前哨戦

試行日 試行回数 支援 判定 ドロップ
5/15 1 道中、決戦、基地航空隊 × 2 (+ 防空1、1部隊は距離不足でボス未達) A勝利
5/16 2 道中、決戦、基地航空隊 × 2 (+ 防空1) A勝利
3 道中、決戦、基地航空隊 × 2 (+ 防空1) S勝利
4 道中、決戦、基地航空隊 × 2 (+ 防空1) A勝利




終了時備蓄:燃料70847 / 弾薬73287 / 鉄鋼298865 / ボーキ86436 / バケツ2897

Cマスギミック

試行日 試行回数 支援 判定 ドロップ
5/17 1 基地航空隊 × 2 (+ 防空1) 道中大破 (B)
2 基地航空隊 × 3 S完全勝利



Eマスギミック & ボスゲージ

試行日 試行回数 支援 判定 ドロップ
5/18 1 基地航空隊 × 2 (+ 防空1) 道中大破 (F)
5/19 2 基地航空隊 × 3 A勝利 択捉
3 基地航空隊 × 3 S勝利 山城
5/20 4 基地航空隊 × 3 道中大破 (E)
5 基地航空隊 × 3 道中大破 (F)
6 基地航空隊 × 3 A勝利 神風
7 基地航空隊 × 3 A勝利 藤波
8 基地航空隊 × 3 A勝利 高雄
9 基地航空隊 × 3 道中大破 (F)
10 基地航空隊 × 3 A勝利 長波
11 基地航空隊 × 3 A勝利 愛宕 (Nマス/S勝利: 瑞穂)
12 基地航空隊 × 3 道中大破 (N)
13 基地航空隊 × 3 S勝利 霧島












終了時備蓄:燃料50916 / 弾薬55151 / 鉄鋼290507 / ボーキ63178 / バケツ2856

こりゃRoma掘りは無理だろ…。

最近のownCloud攻略

艦これのイベント攻略やりながらownCloudのクラウド移行とかやってるからマジ辛いぜ!

  • Amazon S3をexternal storageとして使用すると、その配下のファイルは再共有できない仕様の模様。
    • そういう使い方をしたい場合はFUSEのs3fsなどを使う必要あり。
    • 幸い、最近のFreeBSDにはFUSEカーネルモジュール (fuse.ko) が入っており、fusefs-s3fsのpkgを入れてあげれば使える。
    • ただしfstabに書く方法は不明。仕方がないのでrc.localで逃げた。Apacheが上る前にマウントしたいのでrc.confからApache外してrc.localから起動するように変更。
  • external storageでS3を使うと、時々ファイルのロック周りでエラーが出る場合あり。手作業でMariaDBからロックの行を消してあげればとりあえず復旧できる。
  • もともとOwnCloudのexternal storageでバケツに入れていたファイルはどういうわけかs3fsから「見えるけど触れない」状態になってしまう。パーミッション0000でchmodするとI/O errorになる。仕方ないので別のバケツを作って試行中。
  • s3fsが若干不安定で、時々FUSE側で勝手に再マウント処理をかけている模様。ただしこのときにマウントオプションがちゃんと引き継がれずにパーミッション情報がおかしくなってしまう。多分syslogに出てるコイツが原因。
s3fs: ###curlCode: 65  msg: Send failed since rewinding of the data stream failed

#!/bin/sh
MOUNTPOINT=/foo/bar

LS_L=`/bin/ls -ld $MOUNTPOINT`
UID=`echo $LS_L | /usr/bin/awk '{ print $3 } ;'`
GID=`echo $LS_L | /usr/bin/awk '{ print $4 } ;'`

if [ $UID != www ] || [ $GID != www ] ; then
  /sbin/umount $MOUNTPOINT
  /usr/local/bin/s3fs バケツ名 \
    $MOUNTPOINT \
    -o rw,uid=80,gid=80,allow_other,passwd_file=パスワードファイル
fi

lsがエラー起こす場合があるので修正。

#!/bin/sh
MOUNTPOINT=/foo/bar

LS_L=`/bin/ls -ld $MOUNTPOINT 2> /dev/null`
UID=`echo $LS_L | /usr/bin/awk '{ print $3 } ;'`
GID=`echo $LS_L | /usr/bin/awk '{ print $4 } ;'`

if [ X$UID != Xwww ] || [ X$GID != Xwww ] ; then
  /sbin/umount $MOUNTPOINT
  /usr/local/bin/s3fs バケツ名 \
    $MOUNTPOINT \
    -o rw,uid=80,gid=80,allow_other,passwd_file=パスワードファイル
fi

この感じ見ると、スクリプト仕込んで大正解の様子。

# tail -f /var/log/messages | grep s3fs
May 14 13:36:18 owncloud s3fs: init v1.78 (OpenSSL)
May 14 13:56:49 owncloud s3fs: ###curlCode: 65  msg: Send failed since rewinding of the data stream failed
May 14 13:58:30 owncloud s3fs: init v1.78 (OpenSSL)
May 14 14:12:45 owncloud s3fs: ###curlCode: 65  msg: Send failed since rewinding of the data stream failed
May 14 14:17:00 owncloud s3fs: init v1.78 (OpenSSL)
May 14 14:32:59 owncloud s3fs: ###curlCode: 65  msg: Send failed since rewinding of the data stream failed
May 14 14:33:00 owncloud s3fs: init v1.78 (OpenSSL)
May 14 14:52:19 owncloud s3fs: ###curlCode: 65  msg: Send failed since rewinding of the data stream failed
May 14 14:53:00 owncloud s3fs: init v1.78 (OpenSSL)
May 14 15:17:46 owncloud s3fs: ###curlCode: 65  msg: Send failed since rewinding of the data stream failed
May 14 15:18:01 owncloud s3fs: init v1.78 (OpenSSL)

艦これ E-4甲

試行日 試行回数 支援 判定 ドロップ
5/14 1 道中、決戦、基地航空隊 × 2 (+ 防空1) S勝利 浜風 (Hマス/S勝利: 秋月)
2 道中、決戦、基地航空隊 × 2 (+ 防空1) S勝利 榛名
3 道中、決戦、基地航空隊 × 2 (+ 防空1) A勝利 利根
4 道中、決戦、基地航空隊 × 2 (+ 防空1) 道中大破 (C)
5 道中、決戦、基地航空隊 × 2 (+ 防空1) 道中大破 (C)
6 道中、決戦、基地航空隊 × 2 (+ 防空1) S勝利 赤城
7 道中、決戦、基地航空隊 × 2 (+ 防空1) S勝利 夕張
8 道中、決戦、基地航空隊 × 2 (+ 防空1) A勝利 夕張
9 道中、決戦、基地航空隊 × 2 (+ 防空1) A勝利 夕張
10 道中、決戦、基地航空隊 × 2 (+ 防空1) A勝利 霧島
11 道中、決戦、基地航空隊 × 2 (+ 防空1) 道中大破 (C)
12 道中、決戦、基地航空隊 × 2 (+ 防空1) S勝利 (ダメコン1消費) 扶桑 (Hマス/S勝利: 初風)


確かこんなので削ってたはず…。メモ撮り忘れた。

8戦目からラスダン。
11戦目で思い切って空母1 → 航巡に変更、伊19もロケラン + 内火艇に変更。で伊19が大破したのでダメコン投入。

使用後に撮ったのでダメコン載ってない。


なにげに初風1隻目。これで未実装の#198を除いて、#221まで埋まった (#222照月を持っていない…)。





終了時備蓄:燃料76068 / 弾薬78075 / 鉄鋼298411 / ボーキ90627 / バケツ2897