Raspberry Pi ZERO W + Nexus7(2012)

当サイトには基本ディスプレー、キーボードの付いた有効なマシンはPi3しかありません。
万一Pi3、もしくはローカルLan内のなにかに異常があった場合調査、復旧に困難を伴うことがあります。
またPi3への新規インストールの際にもコンソール画面だけでは効率が悪くなります。

現在は出番の少なくなったNexus7(2012)+keybordとPi ZERO-Wを合わせてもう1台のmini-PC環境を構築してみたいと思います。


Nexus7とPi ZERO-Wはなんの捻りもないvnc接続ですがZERO-Wにはraspbian-stretch-liteをインストール、ヘッドレスでxorgから軽量のX環境を構築、vncをNexus7の画面サイズに合わせて起動して専用端末風に見せかけています。ローカルLan内限定です。

ZERO-W インストール

Pi3でカード作成(デバイス名確認、注意のこと)

# dd if=2018-11-13-raspbian-stretch-lite.img of=/dev/sda bs=1M

書き込みが終わったらカードの段階で最低限の設定をしておきます。(各自の環境)
pcmanfmからカードのbootに空ファイルssh作成、ターミナルからネットワーク設定

$ sudo cp /etc/wpa_supplicant/wpa_supplicant.conf /media/pi/rootfs/etc/wpa_supplicant

/media/pi/rootfs/etc/dhcpcd.conf # 追記

static ip_address=192.168.0.13
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

カードをZERO-Wにセットして起動、sshで接続してセットアップ続行
pi3の/etc/hostsにはアドレスとhostnameを登録

$ ssh pi@raspberrypi
$ sudo raspi-config
Locale ja_JP.UTF-8
Timezone Asia Tokyo

exit exitしてssh再接続
updateしてX関連インストール

root@raspberrypi:~ # apt update && apt -y upgrade
root@raspberrypi:~ # apt install xorg twm tightvncserver autocutsel fontconfig fonts-ipafont fonts-ricty-diminished scim-anthy
root@raspberrypi:~ # exit

インストールが終わったらvncserverを起動してパスワード設定

pi@raspberrypi:~ $ vncserver
You will require a password to access your desktops.
Password: 
Verify:   
Would you like to enter a view-only password (y/n)? n
xauth:  file /home/pi/.Xauthority does not exist

New 'X' desktop is raspberrypi:1

一旦kill $ vncserver -kill空白:1になります

pi@raspberrypi:~ $ vncserver -kill :1
Killing Xtightvnc process ID 19560


Pi3はウインドウが混み合ってるのでFreeBSDから作業をしています。
インストール直後のupdateでは1.1G
X関連インストール後は1.4G

ZERO-Wには~/.vnc/xstartupが作成されています。下記はコメントアウトされているので外して有効にします。

x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &

再度vncserverを適当なサイズを指定して起動

pi@raspberrypi:~ $ vncserver -geometry 800x480 -depth 24


FreeBSDのvncviewerから呼び出しています。

% vncviewer raspberrypi:1

Xが正常に起動、確認できたところでkill

pi@raspberrypi:~ $ vncserver -kill :1

使いやすく軽量なUI、ツールをインストール

root@raspberrypi:~ # apt install tcsh openbox lxpanel lxappearance lxterminal leafpad vim pix-icons gnome-icon-theme

~/.Xresourcesの作成と日本語環境

基本の手順はFreeBSDで作成したものと一緒です。FreeBSD 12.0 日本語環境
必要なパケージはxorgの項でインストールしてあります。
~/.Xresourcesを作成します。
65xxx.conf(3個)を適当なディレクトリに作成、実行スクリプトは下記を使います。
font_set.sh

#!/bin/sh
sudo cp *conf /etc/fonts/conf.avail
cd /etc/fonts/conf.d
sudo ln -s ../conf.avail/65-fonts-ipa-mincho.conf
sudo ln -s ../conf.avail/65-fonts-ipa-pgothic.conf
sudo ln -s ../conf.avail/65-fonts-monospace.conf

ディレクトリ内で実行

 $ sh font_set.sh

~/.vnc/xstartupの編集

#!/bin/csh

xrdb $HOME/.Xresources
xsetroot -solid grey
xsetroot -cursor_name left_ptr
autocutsel &
xterm -geometry 80x24+115+55 &
lxpanel &
scim -d
/etc/X11/Xsession

日本語入力は最軽量級と思われるscim-anthyを導入しました。
ここもやはりFreeBSD同様xstartupはcshで動かします。scim-anthyは以前の経緯からすると.bashrc .cshrcに記述するようになっていますが現在はbshell系からは起動しないようです。
ZERO-Wにはtcshをインストール、FreeBSDの.cshrcを作成、ホームディレクトリに置きます。
~/.cshrcには次の2行が必要です。

setenv  LANG    ja_JP.UTF-8
setenv  XMODIFIERS @im=SCIM

ユーザーのshellはbashでOKです。
ウインドウマネージャは自動でopenboxが適用されます。

defaultにあるexport XKL_XMODMAP_DISABLE=1は無視されますが当サイトで試した限りでは特に問題ないようです。cshはスクリプトに不敵と言われていますが他はshellを問わない実行コマンドなので問題ないと思います。


漢字キーはデフォルトでControl+spaceとZenkaku_Hankakuが適用されていますがNexus7キーボード用にControl+jとControl+kを追加しました。(Control+jはleafpadで使っている)
Zenkaku_Hankakuは時々効かなくなることがあります。

vncのサイズはNexus7から見やすい708×440で起動することにしました。
起動は手軽にcrontabに設定します。

pi@raspberrypi:~ $ crontab -e
@reboot sudo -u pi /usr/bin/vncserver -geometry 708x440 -depth 24

pi@raspberrypi:~ $ sudo reboot

androidからの接続はbVNC Freeを使いました。

VNC Connection Settingsに必要な項目を入力
ホスト名 raspberrypi 接続ポート 5901
ユーザー名 pi
パスワード ********
入力したら Connect


Nexus7からもデフォルトの状態でも問題なく見えますね。
キーボードは500円のケース付き中華キーボード(micro usb)と無印blue toothキーボードがあります。
どちらも使えますが中華キーボードは一部記号キーが刻印と違っています。
やはり無印でもblue toothキーボードに軍配が上がります。

ZEROに標準のraspbian-stretchをインストールするとあきらかにもっさりした感じになるのですがこちらは軽快に動作します。(大物のアプリケーションはダメですが)
vnc特有の再描写感は少しあります。

次回はファイルマネージャーの導入とNexus7からはマウスなしキーボードのみの運用を目指しているのでここらをテストしてみたいと思います。