以前に上記のような記事を書いていたのですが、とある個人的な問題で今までお蔵入りしていたのですが、一念発起して稼働させることにしました。
何が問題だったか
私はクラウドファンディングで入手したのですが、その際のボードのリビジョンはv5というものでした。その後アップデートがあって現在はv7になっているのですが、v5とv7ではSATA周りに変更がありまして、
v7 v5
v5ではSATAデータと4pin電源なのが、使いにくかったのかv7ではシングルのSATAデータ/電源ポートに変更になっています。
この4ピン電源(メスーメス)ケーブルはあまり見かけないなぁということで手間取っていたというのが経緯になります。
公式ドキュメント
使用OS
UbuntuとDebian stretch/busterのものが用意されていましたが、Ubuntuのイメージはうまく起動させることが出来ませんでした。今回はDebian busterのものを使用しました。
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
$ cat /etc/armbian-image-release
# PLEASE DO NOT EDIT THIS FILE
BOARD=espressobin
BOARD_NAME="Espressobin"
BOARDFAMILY=mvebu64
BUILD_REPOSITORY_URL=https://github.com/armbian/build
BUILD_REPOSITORY_COMMIT=c865c065-dirty
VERSION=5.91
LINUXFAMILY=mvebu64
BRANCH=next
ARCH=arm64
IMAGE_TYPE=stable
BOARD_TYPE=conf
INITRD_ARCH=arm64
KERNEL_IMAGE_TYPE=Image
IMAGE_UUID=
色々と手間取ったこと
u-bootのflash
今回も面倒を嫌ってArmbianを使用しています。一応公式からは一からOSイメージをbuildする方法が記載されていますが結構難易度が高いと思います。
またArmbianを使用するときも注意が必要でしてこれもダウンロードページに書いてありますが、搭載メモリ別に合わせてu-bootの更新をするようにという注意があります。u-bootプロンプトに落ちたら、
bubt flash-image-ddr3/ddr4-MEM-RAM_CHIPS-CPU_DDR.bin spi usb
あと起動順とbootを正常にするように以下の環境変数もu-bootプロンプトで実行しておいた方が良いかも。ただ、これはシリアル接続時に一括でベタッとやると失敗しやすいので面倒でも1行ずつ実施した方が良いかと思います。
env default -a
setenv fdt_addr 0x6000000
setenv kernel_addr 0x7000000
setenv loadaddr 0x8000000
setenv initrd_size 0x2000000
setenv initrd_addr 0x1100000
setenv scriptaddr 0x6d00000
setenv initrd_image uInitrd
setenv image_name Image
setenv boot_targets 'usb sata mmc1 mmc0'
setenv boot_prefixes '/ /boot/'
setenv bootcmd_mmc0 'setenv devnum 0; setenv boot_interface mmc; run scan_dev_for_boot;'
setenv bootcmd_mmc1 'setenv devnum 1; setenv boot_interface mmc; run scan_dev_for_boot;'
setenv bootcmd_sata 'setenv devnum 0; scsi scan; scsi dev 0; setenv boot_interface scsi; run scan_dev_for_boot;'
setenv bootcmd_usb 'setenv devnum 0; usb start;setenv boot_interface usb; run scan_dev_for_boot;'
setenv bootcmd 'for target in ${boot_targets}; do run bootcmd_${target}; done'
setenv scan_dev_for_boot 'for prefix in ${boot_prefixes}; do echo ${prefix};run boot_a_script; done'
setenv boot_a_script 'ext4load ${boot_interface} ${devnum}:1 ${scriptaddr} ${prefix}boot.scr;source ${scriptaddr};'
saveenv
# Including this line to make sure saveenv is executed.
※私はいっぺんにベタッとやってうまいこと起動しない問題でつまずきました。
また設定等を書き込んだら、u-bootプロンプトでのresetやresetスイッチなどでリセットせず、一旦12Vアダプターを抜いて、再度投入する形にした方が良いかもしれません。
私の場合はu-bootの設定がうまく反映されず起動に失敗することがありました。
シリアル接続について
あと、付属のUSB-microUSBが実はシリアル接続のためのケーブルなので無くさないように使用した方が良いかと思います。
ボーレート: 115200 8N1
ネットワーク設定について
見て分かるようにEthernetが3ポート用意されています。が、Armbian(Debian 10)では以下のように見えます。
$ ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1024
link/ether f0:ad:4e:03:64:7f brd ff:ff:ff:ff:ff:ff
3: wan@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br0 state LOWERLAYERDOWN mode DEFAULT group default qlen 1000
link/ether f0:ad:4e:03:64:7f brd ff:ff:ff:ff:ff:ff
4: lan0@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br0 state LOWERLAYERDOWN mode DEFAULT group default qlen 1000
link/ether f0:ad:4e:03:64:7f brd ff:ff:ff:ff:ff:ff
5: lan1@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP mode DEFAULT group default qlen 1000
link/ether f0:ad:4e:03:64:7f brd ff:ff:ff:ff:ff:ff
6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether f0:ad:4e:03:64:7f brd ff:ff:ff:ff:ff:ff
$ sudo brctl show
bridge name bridge id STP enabled interfaces
br0 8000.f0ad4e03647f no lan0
lan1
wan
ブリッジインターフェース(br0)に対して、eth0が、そしてそのエイリアスとしてwan、lan0、lan1が個別に見えるという形になっています。
そちらをsystemd-networkd
で管理するのがまた面倒くさい。
所感
とりあえず2コアで2GBメモリなので、よほどヘビーなことをさせない限りは使用できると思います(Arm SBCでそんなことを想定する人はいないと思いますが)。
また公式にもあるようにEthernetが3ポートもあるので、思い切ってYoctoなどをインストールしてルータなどとしても使用できるかと思います。スループットによる負荷をかけたときにどうなるかは確認していませんが。
おまけ
今回SATAには以下のディスクをぶら下げています。昔@xmmsさんから購入したものです。
$ sudo hdparm -I /dev/sda
/dev/sda:
ATA device, with non-removable media
Model Number: SAMSUNG MZ-5S71000/003
Serial Number:
Firmware Revision: VBC3D03Q
Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6
Standards:
Used: unknown (minor revision code 0x0028)
Supported: 8 7 6 5
Likely used: 8
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63
--
CHS current addressable sectors: 16514064
LBA user addressable sectors: 195371568
LBA48 user addressable sectors: 195371568
Logical Sector-0 offset: 0 bytes
device size with M = 1024*1024: 95396 MBytes
device size with M = 1000*1000: 100030 MBytes (100 GB)
cache/buffer size = unknown
Form Factor: 2.5 inch
Nominal Media Rotation Rate: Solid State Device
Capabilities:
LBA, IORDY(can be disabled)
Queue depth: 32
Standby timer values: spec'd by Standard, no device specific minimum
R/W multiple sector transfer: Max = 8 Current = 8
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
* Look-ahead
* Host Protected Area feature set
* WRITE_BUFFER command
* READ_BUFFER command
* NOP cmd
* DOWNLOAD_MICROCODE
SET_MAX security extension
* 48-bit Address feature set
* Device Configuration Overlay feature set
* Mandatory FLUSH_CACHE
* IDLE_IMMEDIATE with UNLOAD
* Write-Read-Verify feature set
* WRITE_UNCORRECTABLE_EXT command
* {READ,WRITE}_DMA_EXT_GPL commands
* Segmented DOWNLOAD_MICROCODE
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
* Native Command Queueing (NCQ)
* Phy event counters
Non-Zero buffer offsets in DMA Setup FIS
DMA Setup Auto-Activate optimization
* Software settings preservation
* SMART Command Transport (SCT) feature set
* SCT Write Same (AC2)
* SCT Error Recovery Control (AC3)
* SCT Features Control (AC4)
* SCT Data Tables (AC5)
Security:
Master password revision code = 65534
supported
not enabled
not locked
not frozen
not expired: security count
supported: enhanced erase
2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5002538050019d84
NAA : 5
IEEE OUI : 002538
Unique ID : 050019d84
Checksum: correct