-->

2018年4月3日火曜日

Raspberry Pi Zeroセットアップメモ

RaspberryPi Zeroのセットアップ手順のメモ。GUIではなくCUIで使用する場合のもの。ここで使用しているバージョンはRaspbian Jessie Liteの"2017-4-10"。
2018/4/2追記:Raspbian Stretch Liteの"2018-3-13"での適用を追加
  • まずは購入から
    adafruitからRaspberryPi Zeroを購入。本体よりも周辺機器が高いという…(本体:$5、SDカードなどの周辺機器:$24.95)。送料はそれよりも高いという…(送料:$31.65)。ちなみに購入日は2016/11/26。
  • OSをダウンロードする
    "Raspbian Jessie Lite"をダウンロード
    https://www.raspberrypi.org/downloads/raspbian/
    ※ここで使用しているバージョンは"2017-4-10"
  • WindowsPCを使用してSDカードにOSイメージを焼く
    以下のページを参考に、"Win32DiskImager"というソフトをインストールして使用する(管理者権限での実行が必要)。
    参考ページ:Installing operating system images using Windows - Raspberry Pi Documentation
    参考ページ:SDカードのコピー方法 | Making Mugbot マグボットの作り方
  • 起動する
    起動時にパーティションの拡張が自動で行われる模様。
  • ログイン
    login:pi
    pass:raspberry
  • 最新版に更新
    $ sudo apt-get update
    これにはネットワークの接続が必要。USB有線LANアダプタを使用。
  • Vimのインストール
    $ sudo apt-get install vim
    これがなくては始まらない。
  • 日本語化
    ロケールを変更する。
    $ sudo raspi-config
    "Internationalisation Options"->"Change Locale"->"ja-JP.UTF-8 UTF-8"->"ja-JP.UTF-8 UTF-8"(デフォルト言語選択)
    日本語フォントのインストール。
    $ sudo apt-get install ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname
    日本語入力メソッドのインストール。
    $ sudo apt-get install uim uim-anthy
    ターミナルのインストール。
    $ sudo apt-get install jfbterm
    "jfbterm"コマンドでターミナルが新規に起動して日本語が表示できる様になる。
    ここら辺で再起動をしておく。
    キーボードの配置を変更する。
    $ sudo raspi-config
    "Internationalisation Options"->"Change Keyboard Layout"->"標準105キー(国際)PC"->"その他"->"日本語"->"日本語"->"AltGrキーなし"->"コンポーズキーなし"
    ※日本語表示があるので"jfbterm"起動してからやったほうが良い
    ※再起動すると設定が反映される模様
    日本語化の参考Webページ
    参考ページ:RaspberryPiの日本語設定 - uepon日々の備忘録
    参考ページ:» 解決!Raspberry Piの日本語が四角の文字化けになった時の初歩ミス。|コワーキングスペース管理人のブログ
  • オートログイン化
    $ sudo raspi-config
    "Boot Options"->"Desktop/CLI"->"Console Autologin"
    リブートしてオートログインしていることを確認する。
  • SDカードのパーティション拡張
    $ sudo raspi-config
    "Expand Filesystem"を選択するとコンソールが少し出て終了
    ※おそらくこれをやらなくても良いと思われる。起動時にやっている?
    ※SDカードにOSイメージを書き込んだときにパーティションが最低限の領域しか確保できていないので、そのまま使用するとSDカード全体を使用しないので無駄。なのでパーティション拡張することでSDカード全体を使用できるということをやっている
  • 日本語入力方法
    "jfbterm"コマンドでターミナルを起動後、"uim-fep"コマンドでIMEが起動する。起動後は左下にそれっぽいものが表示される。日本語を入力するには日本語入力モードに切り替える必要があるが、不具合があり日本語入力モードに切り替えることができない模様。なので以下の手順で修正する。
    $ sudo vi /usr/share/uim/generic-key-custom.scm
    上記ファイルを以下のように変更する
    (define-custom 'generic-on-key '("zenkaku-hankaku" "<Shift> ")
    (define-custom 'generic-off-key '("zenkaku-hankaku" "<Shift> ")

    (define-custom 'generic-on-key '("zenkaku-hankaku" "<Control> ")
    (define-custom 'generic-off-key '("zenkaku-hankaku" "<Control> ")
    これでCtrl+Spaceで日本語入力モードに移行できる。モードオフもCtrl+Space。
    参考ページ:RaspberryPiの個人的な覚書その6 日本語化(順序が違うか)  ( その他コンピュータ ) - 四十路オヤジの雑記帳 - Yahoo!ブログ
  • USBメモリの自動マウント
    自動マウントのパッケージをインストール。
    $ sudo apt-get install usbmount
    これでUSBを挿すと/media/usb0とかにマウントされる。ただし、このままでは日本語のファイル名が正しく表示できないので以下のファイルの内容を変更する必要がある。
    $ sudo vim /etc/usbmount/usbmount.conf
    FS_MOUNTOPTIONS=""

    FS_MOUNTOPTIONS="-fstype=vfat,gid=pi,dmask=0000,fmask=0111,codepage=932,iocharset=utf8"
    参考ページ:Raspberry PiでモバイルWiFi NAS - mitszo's Blog
    ちなみにアンマウントは以下のコマンドで。
    $ sudo umount /media/usb0
    2018/4/2追記
    jessieの次のバージョンであるstretchでは上記の設定だけでは自動マウントされない。以下のファイルを追加で修正する必要がある。
    $ sudo vi /lib/systemd/system/systemd-udevd.service
    MountFlags=slave

    MountFlags=shared

    参考ページ:Raspberry Pi Zero Wのいたずら
  • シリアルポートの有効化
    デフォルトではRaspberryPiZeroのUARTピンはログインコンソールとして設定されている。これは、GPIO14(TX)&GPIO15(RX)にシリアルで接続するとディスプレイがなくても作業ができるというやつ。普通にこのピンをUART通信で使用するためには以下のファイルの変更が必要。
    $ sudo vim /boot/cmdline.txt
    上記ファイルから"console=serial0,115200"を削除する。次にサービスを停止/無効化する。
    $ sudo systemctl stop serial-getty@ttyAMA0.service
    $ sudo systemctl disable serial-getty@ttyAMA0.service
    参考ページは以下、ほぼそのままの手順。
    参考ページ:第13回: GPIOを汎用UARTに設定する – Blue-black.ink
  • WiringPiインストール
    $ sudo apt-get install wiringpi
    Raspbian Jessie Liteには含まれてない模様(確かLiteじゃないやつは含まれてたはず)。"gpio readall"コマンドとか実行できたらOK。
  • 起動高速化
    起動時にDHCPでIPを取得する時間を短縮する。
    $ sudo vi /etc/systemd/system/dhcpcd.service.d/wait.conf
    ExecStart=/sbin/dhcpcd -q -w
    ↓(タイムアウト設定を追加)
    ExecStart=/sbin/dhcpcd -q -w -t 5
    参考ページ:Raspberry Pi Zeroを10秒以内で高速起動する最も簡単な方法: new_western_elec
このあたりまで実施すれば一通りの環境が完成。gccなどはすでに入っている。これ以降は備考レベルの内容です。
  • 無線LAN設定
    使用アダプタ:WLI-UC-GNME
    参考ページ:Raspberry PiでモバイルWiFi NAS - mitszo's Blog
    $ sudo iwlist wlan0 scan | grep ESSID
    "sudo /etc/wpa_supplicant/wpa_supplicant.conf"このファイルに以下を追加
    network={
        ssid="****"
        psk="****"
    }
  • 起動トラブル対策
    起動時にプログラムを自動実行しようとしたときに"/etc/rc.local"にコマンドを書いておく方法がある(編集にはルート権限が必要)。しかし、変なコマンドを書いてしまいで無限ループに入った場合、起動してもキーボードからの入力が受け付けられずどうしようもなくなる場合がある。
    参考ページ:ラズベリーパイでrc.localに記述をし,エラーまたはループで起動できなくなった場合の対処法 – 岡田裕樹の研究室
    その場合はmicroSDをラズベリーパイ以外のPCで開き、中にある"cmdline.txt"を以下のように編集する
    dwc_otg.lpm_enable=0 console=ttyAMA0,115200

    dwc_otg.lpm_enable=0 init=/bin/sh console=ttyAMA0,115200
    こうすると起動時にシェルスクリプトが起動するようになる。
    $ mount -o rw,remount /
    $ vim /etc/rc.local
    これで、"rc.local"を編集できる。終了の仕方はよくわからないので強制電源OFF。最後にmicroSDカードの"cmdline.txt"をもとに戻せば解決。