Raspberry Pi ZERO サブシステム(インストール 設定)

作成したPi ZERO サブシステムは前回のzero wと基本同じ構成をとっています。
Pi ZEROをX環境下で軽快に動作させるには
過度な装飾は避ける
動画は再生しない
大物のアプリケーションはインストールしない
Xorgはそれほど大きなプログラムでも無いので目的、用途を絞って使えばX環境でもある程度快適に使用できるものと思います。

Xorg

# apt update && apt upgrade
# reboot
$ df -m
ファイルシス   1M-ブロック  使用 使用可 使用% マウント位置
/dev/root             7402  1037   6032   15% /

xorgインストール

# apt install xorg
# reboot
$ df -m
ファイルシス   1M-ブロック  使用 使用可 使用% マウント位置
/dev/root             7402  1138   5932   17% /

x11-apps(xclock,xcalcなど)も含まれているのでxorg本体としては100MBを切っています。

今回は–no-install-recommends xserver-xorgからインストールしてみました。

# apt install --no-install-recommends xserver-xorg
# reboot
$ df -m
ファイルシス   1M-ブロック  使用 使用可 使用% マウント位置
/dev/root             7402  1056   6013   15% /

xtermや日本語入力などインストールしていくと依存関係でどんどん追加されていきます。
結果的にxorgからインストールしたものと比べると8割位は導入されるようです。
統合環境(LXDE,XFCE4など)は様々なアプリケーション、ユーティリティが走っているのでシステム全体としては大きく重くなっています。

WM(ウィンドウマネージャ)

ZERO Wではopenboxとdwmを導入しましたが今回も同様にインストールしています。
dwmをメインにしていますが切り替えはxstartupを少し変更するのみで可能です。
dwmはZERO Wでコンパイルしたものを/usr/local/binにコピーしています。
特にパッケージからインストールしなくても前回の手法でalternativesに登録できます。

Ethernet(イーサネット)

ケースにはNO:9700のシールがあったのですが何かと思ったらSR9700というチップが載っているですね。

ZEROから認識するのはいいのですが速度が出ないようです。音楽用途には使えません。
当サイトではネットワークの実験用、raspbian以外のOS用を想定しているので取り敢えずはヨシとしときましょう。
貧乏でジャンク好きの性と言ったところでしょうか!

$ lsusb
Bus 001 Device 007: ID 0fe6:9700 Kontron (Industrial Computer Source / ICS Advent) DM9601 Fast Ethernet Adapter

やはりこいつは大分評判が良くないようです。

raspbianのdhcpcd.confでは特にデバイス名を指定していないのでwifiの代わりにケーブルを接続すると同じアドレスが割り当てられます。wifiドングルは起動前に挿し込んでおく必要があります。起動後に挿し込むとリブートします。

Run(reset) Shutdown

Run(reset)ボタン
取り出したRun Pinはタクトスイッチに接続しています。
Shutdown後はこのスイッチで起動を開始します。ハングアップした際はRebootします。

Shutdownボタン
GPIOを利用してShutdownを実行します。

# apt install wiringpi

shutdownプログラムは以下のサイトを参考にさせて頂きました。
http://jellyware.jp/kurage/raspi/shutdown_button.html

~/bin/shutdown.py

#!/usr/bin/python 

import RPi.GPIO as GPIO
import time
import os

pinnumber=21
GPIO.setmode(GPIO.BCM)

# GPIO 21(BCM) pull up
GPIO.setup(pinnumber,GPIO.IN,pull_up_down=GPIO.PUD_UP)

while True:
  GPIO.wait_for_edge(pinnumber, GPIO.FALLING)
  count = 0 

  while True:
    sw_status = GPIO.input(pinnumber)
    if sw_status == 0:
      count = count + 1 
      if count >= 20: 
        os.system("sudo shutdown -h now")
        break
    time.sleep(0.1)
$ chmod 755 ~/bin/shutdown.py

実行は~/.vnc/xstartupに書いておきます。

shutdown.py &

ここでリブート

$ gpio readall
GPIO21(BCM)実ピン40が 1 IN になっていれば正常に読み込んでいます。
ディフォルトがこの値になっていると思います。
2秒の長押しでshutdownを開始します。
pythonはインデントを認識します。編集する際は正しく合わせてください。

Auto Mount

ZEROを使う目的のひとつに新規カード作成作業があります。
Pi3ではSSDが/dev/sdbとして認識されていますがひとつ間違えるとそこで痔エンドとなってしまいます。
オートマウントがあると便利です。

# apt install udiskie

udisks2は依存関係でインストールされます。
ユーザー権限でマウントするにはPolicyKitを設定します。(URL下の方を設定)
https://github.com/coldfix/udiskie/wiki/Permissions
raspbianではunix-group:plugdevに変更します。
/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
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

デフォルトは/media/USER/以下にマウントします。
/media/以下に直接マウントしたい場合は
/etc/udev/rules.d/99-udisks2.rules(新規作成)

ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1"

udisks2を有効に

# systemctl enable udisks2

udiskieの起動はxstartupから
~/.vnc/xstartup (現在のxstartup)

#!/bin/csh
xmodmap -e "keysym Meta_L = Super_L"
xmodmap -e "keysym Meta_R = Super_R"
xrdb $HOME/.Xresources
xsetroot -solid black
xsetroot -cursor_name left_ptr
shutdown.py &
autocutsel &
date.sh &
xbindkeys &
xterm -e ranger --confdir=~/.config/ranger &
udiskie &
dwm &
scim -d
/etc/X11/Xsession

設定が終わったらリブート

LXDEとは挙動は違いますがUSB(カード)を挿し込むだけでマウントします。
pcmanfmのmediaはブックマークに登録しています。

特にアンマウントする必要も無さそうでfdisk実行時も自動でアンマウント、終了で再マウントしているようです。

マイクロUSBからも正常に認識、読み込みをしています。

今回Ethernetははずれでしたが個人的には今回の作品は気に入ってます。
これでddも気兼ねなくできそうです。