-->

2018年4月3日火曜日

ラズベリーパイインストール方法比較

ラズベリーパイにOSをインストールするには以下の2種類があります。
  1. NOOBSを使用してOSをインストールする方法
  2. SDカードに直接OSイメージをライトする方法
    ※NOOBS Liteを使用する方法もありますが、ここでは除外します
1の方法は、SDカードにPCからデータをコピーするだけの簡単手順(どちらかというと初心者向け?)。2の方法は、PCから専用のソフトをSDカードに直接ライトします。どちらの方法でも最終的にラズベリーパイにOSをインストールすることには変わりません。じゃあ、最終的な違いはないんですかね?調べてみました。

ラズベリーパイ3を使用して以下のバージョンでインストールします。
  1. NOOBS
    Version : 2017-11-29
  2. RASPBIAN STRETCH WITH DESKTOP
    Version : 2017-11-29
インストールの方法は以下のページと同じ方法をとっています。
使用したSDカードはトランセンドの8GB(クラス4)のものです。

違いその①
1の方法は初回起動時のインストールウィザードにおいて使用言語を選択できるので、ここで日本語を指定しておけばインストールされたOSの言語設定などが日本になる。2は自分で設定しなければならない。

違いその②
インストール後のSDカードの残り容量が違う。インストール直後のdfコマンド(ディスクの使用量表示)の結果が以下。

1のインストール後のdfコマンド結果
ファイルシス   1K-ブロック    使用  使用可 使用% マウント位置
/dev/root          5737960 4269060 1154380   79% /
devtmpfs            468152       0  468152    0% /dev
tmpfs               472760       0  472760    0% /dev/shm
tmpfs               472760   12264  460496    3% /run
tmpfs                 5120       4    5116    1% /run/lock
tmpfs               472760       0  472760    0% /sys/fs/cgroup
/dev/mmcblk0p6       66528   21328   45200   33% /boot
tmpfs                94552       0   94552    0% /run/user/1000
/dev/mmcblk0p5       30701     398   28010    2% /media/pi/SETTINGS

2のインストール後のdfコマンド結果
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root        7483948 4264648   2852288  60% /
devtmpfs          470180       0    470180   0% /dev
tmpfs             474788       0    474788   0% /dev/shm
tmpfs             474788    6364    468424   2% /run
tmpfs               5120       4      5116   1% /run/lock
tmpfs             474788       0    474788   0% /sys/fs/cgroup
/dev/mmcblk0p1     41853   21327     20526  51% /boot
tmpfs              94956       0     94956   0% /run/user/1000

何か全体の容量が1.5GBぐらい違う…。
1の方法はNOOBSという機能やインストール対象のOS自体も含めてSDカードに入れていると思われるので容量を食うんでしょうね、たぶん。
1の方法でSDカードにコピーしたファイル群の容量が1.47GBだったので、その容量分?
あと、1の方法では/media/pi/SETTINGSっていうディレクトリも存在しています。
NOOBSは"New Out of Box Software"の略でOSのインストールを管理しているらしいです、詳しく知りたい人は自分で検索だ!(飽きました)

結論としては、1.5GB程度なら最近のSDカードの容量なら無視できる範囲かと思われますので好きな方法でインストールしたらいいと思います。終わり。

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"をもとに戻せば解決。