SBC(シングルボードコンピュータ)3選 Raspberry Pi Zero W

10$クラスのSBC(シングルボードコンピュータ)を3個集めてみました。
Raspberry Pi Zero W – Orange Pi Zero – ROCKPi S
Raspberry Pi Zero WとOrange Pi Zeroはだいぶ枯れてきた感がありますがROCKPi Sは2019年発売と比較的新しいボードになります。

ローカルのサブマシンとしてX環境(Vncサーバー)で運用する予定をしています。シングルコアのRaspberry Pi Zero(w)やPi1Bでは若干重く感じてしまいます。
Raspberry Pi Zero(w)にVncサーバー + dwm を構築、マルチコアのOrange Pi Zero – ROCKPi Sにも同じような環境を構築して比較してみたいと思います。

今回は比較の元となるRaspberry Pi Zero Wの環境を構築してみます。

Raspberry Pi Zero W


左 ROCKPi S
右 OrangePi Zero
前 Raspberry Pi Zero W
特徴はそれぞれですが電子工作ベースとしてのRaspberry Pi Zero Wは40PinのGPIOと情報の豊富さ、環境などで知名度は突出していると思います。

カード作成

DHCPでIPを取得、ssh接続インストール作業を行います。母艦はPi3
2020-05-27-raspios-buster-lite-armhf.imgをカードに書き込み
/media/boot マウント
sshを有効にするため空ファイル(ssh)を作成

$ touch ssh

wifiを有効(wpa_supplicant.conf)作成 psk(パスワード)は平文

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
  ssid="aterm-xxxxxx-g"
  psk="xxxxzzxxxxvv"
  proto=RSN
  key_mgmt=WPA-PSK
  pairwise=CCMP
  group=CCMP
  priority=2
}

カードをセットして起動

hostnameで接続

$ ssh pi@raspberrypi

raspi-configでLocalisation設定

$ sudo raspi-config


Change Locale [*] ja_JP.UTF-8 UTF-8
Change Time Zone 東京

$ sudo apt update && sudo apt -y upgrade

apt update && apt upgradeして基本設定完了。アプリケーションインストール

いきなりですがvnc clientのPi3からraspberrypi(vnc server)に接続時はこんな感じ
個々の設定は過去記事に散らばっています
以下気がついたところを記載

テキストファイルを作成、一気にインストール

$ sudo sh setup.txt

setup.txt

#!/bin/sh
# default
apt -y install tcsh lv vim
echo "--- X11 ---"
apt -y install xserver-xorg x11-xserver-utils tigervnc-standalone-server tigervnc-common
apt -y install xfonts-100dpi xfonts-75dpi xfonts-scalable xterm xbindkeys suckless-tools
echo "--- jp ---"
sh /zzz/font_set/font_set.sh
echo "--- filer ---"
apt -y install ranger w3m-img highlight poppler-utils atool mediainfo ffmpegthumbnailer
echo "--- python ---"
apt -y install python3-tk
echo "--- udiskie ---"
apt -y install udiskie libblockdev-crypto2 libblockdev-mdraid2
echo "--- wiringpi ---"
apt -y install wiringpi
echo "--- nfs client ---"
apt -y install autofs
echo "--- dwm compile ---"
apt -y install dwm
apt -y install libx11-dev libxinerama-dev libxft-dev

日本語環境 (65-fonts* 過去記事参照)
/zzz/font_set/font_set.sh

#!/bin/sh
apt install -y fonts-ipafont fonts-ricty-diminished
apt install -y uim uim-anthy uim-mozc uim-xim uim-gtk2.0
cp /zzz/font_set/65* /etc/fonts/conf.avail
cd /etc/fonts/conf.d
ln -s ../conf.avail/65-fonts-ipa-mincho.conf
ln -s ../conf.avail/65-fonts-ipa-pgothic.conf
ln -s ../conf.avail/65-fonts-monospace.conf

vnc server
vnc serverはtigervncをインストール
/etc/init.d/vncbootのstartは以下

su $USER -c 'LD_PRELOAD=/lib/arm-linux-gnueabihf/libgcc_s.so.1 /usr/bin/vncserver :1'

# 有効

$ sudo systemctl enable vncboot

~/.vnc/vnc.conf

$geometry     = "1020x655";
$depth        = 24;
$desktopName  = "raspberrypi";
$localhost    = "no";

パスワードファイル(passwd)は$ vncserverで最初に作成
vnc clientはpasswdをコピー、適当にリネームして保存、raspberrypiにパスワードなしで接続

$ vncviewer -passwd /home/pi/.vnc/raspberrypi raspberrypi:1

dwm compile
コンパイル済のdwmが無い場合は一旦パッケージからインストール
コンパイルしたらパッケージはremove

Input method(インプットメソッド)
uim-anthy uim-mozc 両方入れるのが吉 設定でuim-mozcをメイン
bash環境ではうまく認識できなかったので.cshrcから読み込んでいます。
xstartup #!/bin/csh
~/.cshrc

setenv  LANG ja_JP.UTF-8
setenv  XMODIFIERS @im=uim
setenv  GTK_IM_MODULE uim
setenv  QT_IM_MODULE uim

~/.uim – 変換中文字化け対策

(define uim-pref-suppress-dot-uim-warning-dialog? #t)
(define uim-xim-use-xft-font? #t)
(define uim-xim-xft-font-name "monospace")

udiskie – USBメモリ(カード)auto mount
/etc/polkit-1/localauthority/50-local.d/10-udisks.pkla 新規作成

[udisks1]
Identity=unix-group:plugdev
Action=org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.luks-unlock;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.drive-detach
ResultAny=yes

[udisks2]
Identity=unix-group:plugdev
Action=org.freedesktop.udisks2.filesystem-mount;org.freedesktop.udisks2.encrypted-unlock;org.freedesktop.udisks2.eject-media;org.freedesktop.udisks2.power-off-drive;org.freedesktop.udisks2.filesystem-mount-system
ResultAny=yes

[udisks2-other-seat]
Identity=unix-group:plugdev
Action=org.freedesktop.udisks2.filesystem-mount-other-seat;org.freedesktop.udisks2.filesystem-unmount-others;org.freedesktop.udisks2.encrypted-unlock-other-seat;org.freedesktop.udisks2.eject-media-other-seat;org.freedesktop.udisks2.power-off-drive-other-seat
ResultAny=yes

~/.Xresources

XTerm*utf8              : 1
XTerm*locale            : false
XTerm*faceName          : monospace
XTerm*faceSize          : 9
XTerm*fontDoublesize    : true
XTerm*saveLines         : 2000
XTerm*geometry          : 80x24
XTerm*charClass: 33:48,37:48,45-47:48,38:48,64:48

XTerm*background: #222222
XTerm*foreground: #DDDDDD
XTerm*color0:     #333333
XTerm*color1:     #A94952
XTerm*color2:     #83A949
XTerm*color3:     #A99F49
XTerm*color4:     #385A70
XTerm*color5:     #A94983
XTerm*color6:     #49A99F
XTerm*color7:     #AAAAAA
XTerm*color8:     #666666
XTerm*color9:     #ED6975
XTerm*color10:    #B8ED69
XTerm*color11:    #EDE169
XTerm*color12:    #69B8ED
XTerm*color13:    #ED69B8
XTerm*color14:    #69EDE1
XTerm*color15:    #DDDDDD

その他
xbindkeys
Altキー Ctrlキー Menuキー などを軸に使いやすいキーを設定
date.sh タイトルバー時刻 sleepは適当に(chmod 755 date.sh)

#!/bin/sh
# dwm title bar clock
while true; do
  xsetroot -name "$(date +" %R ")"
  sleep 5
done

~/.vnc/xstartup – 以上からxstartupはこんな感じ

#!/bin/csh
xrdb $HOME/.Xresources
xsetroot -solid gray3
xsetroot -cursor_name left_ptr
vncconfig nowin=1 &
udiskie -F -N &
~/bin/date.sh &
xbindkeys &
uim-xim &
xterm -e ranger ~/ &
dwm &
sleep 1
uim-toolbar-gtk &

/etc/dphys-swapfile
swapファイルは100MB設定されていますがコメントアウトすることで実メモリの2倍程度が割り当てられます。実際には遅いので使えないのですがハングアップ防止くらいには役立つと思います。

/etc/dphys-swapfile
#CONF_SWAPSIZE=100

$ sudo systemctl restart dphys-swapfile


python3 tkinterや軽量のアプリケーションは問題なく実行可能です。
Raspberry Pi3などと比べると描写の速度は遅いのですが実用範囲と思います。


wifi接続のZero W本体は電源を供給するだけなので電子工作の実験環境などには最適と思います。
タグ(ワークスペース)は自由に使えるので作業効率も良くなります。