FreeBSD10.4: STCK1A32WFCとマイクロSDカードスロット

FreeBSD10.4 がリリースされていたことを発見し、リリースアナウンスメントを読んでみたところ

10.4-RELEASE is the first FreeBSD release to feature full support for eMMC storage, including eMMC partitions, TRIM and bus speed modes up to HS400.

という記述が目に入りました。「eMMCフルサポート!?」
FreeBSD11.1 で、Intel Compute Stick STCK1A32WFC の内蔵eMMC へ FreeBSD をインストールできることを確認済みではありますが、マイクロSDメモリスロットがOSから認識されないため、ディスク容量を拡張しようとすると11.1では USB HubとUSBメモリ(またはUSB HDD)を組み合わせるしかありませんでした。

私の場合は、サーバー、または自宅ルーターとして使えないかと考えているので、eMMCフルサポートという響きは魅力的。もしマイクロSDスロットが使えるなら、128GB SDメモリカードを入れて内蔵eMMCと合わせて、約150GBの高速ストレージをもつスティックPCサーバーを構築可能です。(自宅ルーターなら、内蔵32GBで十分。)スティックPCの仕様をよく知らないためマイクロSDスロットがeMMC仕様なのか別ドライバーなのかわかりませんが、試してみることにしました。

余談になりますが、「FreeBSD 10.4 Release」を検索してみると、

などの情報が見つかりましたが、単純に英語アナウンスページの情報を日本語で紹介してあるだけなので、私に必要な他の情報は無し。そもそも eMMC扱いなのがスティックPCのSSDだけなのか、M.2やmSATAデバイスも対象になるのか試したことがないので私にはわからない。

スティックPCのストレージ拡張方法としてのマイクロSDカードスロット情報の他、LANポート拡張用として内蔵WiFi やUSB LANドライバーのサポート状況も欲しいところですが、こういう使い方をしたい人が多いとは思えないので、私自身が試してみるしかないでしょうね。

インフラ系用途で使いたいので、内蔵WiFiはあまり重要ではなくて、使えればいいかな〜という程度。実際に使う場合のメインはUSB有線LANになります。

STCK1A32WFCには、すでに FreeBSD 11.1 のテストインストールに成功した実績があるので、10.4をインストールするのは簡単だろうとミラーサイトからUSBメモリ用のイメージファイルをダウンロードしたのですが、起動できない!

ハマりました。

11.1 の時は、

FreeBSD-11.1-RELEASE-amd64-memstick.img

を使用して dd でイメージを作りました。

10.4 も同様に、

FreeBSD-10.4-RELEASE-amd64-memstick.img

を使ったら、USBメモリからブートしないどころか、EFI BIOSからファイルシステムが見えない!
dd コマンドオプションが違ったのか、事前にUSBメモリ初期化が必要だったのか、インストーラが起動してくれないので悩みました。

ftpサイトのダウンロードファイル一覧を眺めていたら、

FreeBSD-10.4-RELEASE-amd64-uefi-memstick.img

とファイル名に uefi という文字列が入ったファイルがあることに気づきました。なぜ、突然、ネーミングルールを変える〜?

uefi付きファアイルをダウンロードして、リリースアナウンスページにある dd コマンドでコピーすれば、STCK1A32WFC 上で FreeBSDインストーラが起動しました。

ZFSでファイルシステムを作り、ports と gameを省略してインストールした後、freebsd-update で更新をかけてみたのが下記の dmesg。

Copyright (c) 1992-2017 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 10.4-RELEASE-p3 #0: Tue Nov 14 09:43:55 UTC 2017
    root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
VT(efifb): resolution 1280x1024
CPU: Intel(R) Atom(TM) CPU  Z3735F @ 1.33GHz (1333.37-MHz K8-class CPU)
  Origin="GenuineIntel"  Id=0x30678  Family=0x6  Model=0x37  Stepping=8
  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
  Features2=0x43d8e3bf<SSE3,PCLMULQDQ,DTES64,MON,DS_CPL,VMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,SSE4.1,SSE4.2,MOVBE,POPCNT,TSCDLT,AESNI,RDRAND>
  AMD Features=0x28100800<SYSCALL,NX,RDTSCP,LM>
  AMD Features2=0x101<LAHF,Prefetch>
  Structured Extended Features=0x2282<TSCADJ,SMEP,ERMS,NFPUSG>
  VT-x: PAT,HLT,MTF,PAUSE,EPT,UG,VPID
  TSC: P-state invariant, performance statistics
real memory  = 2147483648 (2048 MB)
avail memory = 1955577856 (1864 MB)
Event timer "LAPIC" quality 600
ACPI APIC Table: 
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
FreeBSD/SMP: 1 package(s) x 4 core(s)
 cpu0 (BSP): APIC ID:  0
 cpu1 (AP): APIC ID:  2
 cpu2 (AP): APIC ID:  4
 cpu3 (AP): APIC ID:  6
random: <Software, Yarrow> initialized
ioapic0: Changing APIC ID to 8
ioapic0  irqs 0-86 on motherboard
module_register_init: MOD_LOAD (vesa, 0xffffffff80e198a0, 0) error 19
kbd0 at kbdmux0
acpi0:  on motherboard
acpi0: Power Button (fixed)
unknown: I/O range not supported
cpu0:  on acpi0
cpu1:  on acpi0
cpu2:  on acpi0
cpu3:  on acpi0
atrtc0:  port 0x70-0x77 on acpi0
atrtc0: Warning: Couldn't map I/O.
Event timer "RTC" frequency 32768 Hz quality 0
hpet0:  iomem 0xfed00000-0xfed003ff irq 8 on acpi0
Timecounter "HPET" frequency 14318180 Hz quality 950
Event timer "HPET" frequency 14318180 Hz quality 450
Event timer "HPET1" frequency 14318180 Hz quality 440
Event timer "HPET2" frequency 14318180 Hz quality 440
attimer0:  port 0x40-0x43,0x50-0x53 irq 0 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
Timecounter "ACPI-safe" frequency 3579545 Hz quality 850
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x408-0x40b on acpi0
pcib0:  port 0xcf8-0xcff on acpi0
pcib0: _OSC returned error 0x4
pcib0: Length mismatch for 3 range: 108fffff vs 10900000
pci0:  on pcib0
vgapci0:  port 0x1000-0x1007 mem 0x90000000-0x903fffff,0x80000000-0x8fffffff at device 2.0 on pci0
vgapci0: Boot video device
pci0: <encrypt/decrypt> at device 26.0 (no driver attached)
ehci0:  mem 0x90811000-0x908113ff at device 29.0 on pci0
usbus0: EHCI version 1.0
usbus0 on ehci0
isab0:  at device 31.0 on pci0
isa0:  on isab0
sdhci_acpi0:  iomem 0x90955000-0x90955fff irq 44 on acpi0
mmc0: <MMC/SD bus> on sdhci_acpi0
sdhci_acpi1:  iomem 0x90953000-0x90953fff irq 47 on acpi0
acpi_tz0:  on acpi0
ppc0: cannot reserve I/O port range
uart0: <16550 or compatible> at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
est0:  on cpu0
est1:  on cpu1
est2:  on cpu2
est3:  on cpu3
ZFS NOTICE: Prefetch is disabled by default if less than 4GB of RAM is present;
            to enable, add "vfs.zfs.prefetch_disable=0" to /boot/loader.conf.
ZFS filesystem version: 5
ZFS storage pool version: features support (5000)
Timecounters tick every 1.000 msec
usbus0: 480Mbps High Speed USB v2.0
ugen0.1:  at usbus0
uhub0:  on usbus0
mmcsd0: 31GB  at mmc0 200.0MHz/8bit/8192-block
mmcsd0boot0: 4MB partion 1 at mmcsd0
mmcsd0boot1: 4MB partion 2 at mmcsd0
mmcsd0rpmb: 4MB partion 3 at mmcsd0
random: unblocking device.
SMP: AP CPU #2 Launched!
SMP: AP CPU #1 Launched!
SMP: AP CPU #3 Launched!
Timecounter "TSC" frequency 1333366512 Hz quality 1000
Root mount waiting for: usbus0
Root mount waiting for: usbus0
Root mount waiting for: usbus0
Root mount waiting for: usbus0
uhub0: 8 ports with 8 removable, self powered
Root mount waiting for: usbus0
ugen0.2:  at usbus0
uhub1:  on usbus0
uhub1: 4 ports with 4 removable, self powered
Root mount waiting for: usbus0
ugen0.3:  at usbus0
uhub2:  on usbus0
uhub2: 4 ports with 4 removable, self powered
Root mount waiting for: usbus0
ugen0.4:  at usbus0
ugen0.5:  at usbus0
Trying to mount root from zfs:zroot/ROOT/default []...
udav0:  on usbus0
miibus0:  on udav0
ukphy0:  PHY 0 on miibus0
cdce0:  on usbus0
ukphy0:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
ue0:  on udav0
ue0: Ethernet address: 00:26:87:02:4d:dc
ue1:  on cdce0
ue1: Ethernet address: a0:ce:c8:10:2f:67
ue0: link state changed to DOWN
ue0: link state changed to UP

ファイルシステムはこんな感じ。

Filesystem         1K-blocks   Used    Avail Capacity  Mounted on
zroot/ROOT/default  25647080 579900 25067180     2%    /
devfs                      1      1        0   100%    /dev
zroot/tmp           25067292    112 25067180     0%    /tmp
zroot/usr/home      25067312    132 25067180     0%    /usr/home
zroot/usr/ports     25067268     88 25067180     0%    /usr/ports
zroot/usr/src       25067268     88 25067180     0%    /usr/src
zroot/var/audit     25067268     88 25067180     0%    /var/audit
zroot/var/crash     25067268     88 25067180     0%    /var/crash
zroot/var/log       25067368    188 25067180     0%    /var/log
zroot/var/mail      25067272     92 25067180     0%    /var/mail
zroot/var/tmp       25067268     88 25067180     0%    /var/tmp
zroot               25067268     88 25067180     0%    /zroot

Stick PCは eMMCの使い方はまだよく分からない。
こんな、細切れパーティションを削除しても構わないのか、削除したら駄目なのか?合わせても12MBのパーティションなのでどうでもいいのですけど、ログに残る行が邪魔。

mmcsd0boot0: 4MB partion 1 at mmcsd0
mmcsd0boot1: 4MB partion 2 at mmcsd0
mmcsd0rpmb:  4MB partion 3 at mmcsd0

10.4を入れてみましたが、結局マイクロSDスロットは使えず。
USB LAN は Corega の FEther USB-TX がすんなり使えました。とはいえ、USB1.1の100BASE-Tなので、このポートで通信すると遅い。
Rankie の1000BASE CDC Communications Control / Realtek USB 101001000 LAN は、認識されて使えていますが、ブート後、自動でアクティブになっているのかどうかイマイチよく分からない。Corega があるから動いているような気がします。こちらのインタフェースに関しては、今後も検証が必要になりそうです。

FreeBSD 10.4 で eMMC完全サポートということでしたので、10.4をインストールしてみたわけですが、全く期待した結果にはなりませんでした。今はまだ11.1 を使う方がよさそうです。
それでもパッチレベルが上がって、使い勝手が良くなることもあるかも知れません。

せっかく10.4を入れましたので、少しの間、これをベースに11.1 にするとか、ZFSで遊んでみようかと思っています。

スティックPCは外部インタフェースが限られるため、普通にパーティショニングして使うとディスク容量が足りなくなった場合に後からストレージを追加してゆくのが面倒です。OSを入れる時にZFSを選択しておけば、あとから追加するマイクロSDやUSBメモリが、どんどんZFSに追加されて容量が増えて行くことを期待したのですけど、私のZFSに関する知識がまだ乏しいため、どう構成して行けばいいのかまだよく分かっていません。

スティックPCはサーバーとして構成するよりも、最初はルーターとして構成する方が向いているのかもしれません。うまく構成できると、夏用10Wルーター、10Wサーバーが出来るかも。

コメントを残す