作成日: 2017/11/11

Raspberry Pi 3 Model B

Raspberry Pi 3 Model B

今さらながら初めてみました。

購入

初めてだったので、足りないものがあると困ると思い、 Amazon マーケットプレイスで「Physical Computing Lab」さんから 「Raspberry Pi3 コンプリートスターターキット (Standard)」を購入しました。 内容物は以下のとおりでした (2017/11 月時点)。

  • Raspberry Pi 3 Model B 本体
  • 格納用ケース (3ple Decker のクリアケース)
    • GPIO 上の開口部フタ 2種類 各1 (1種類はケースに取付け済)
    • ゴム足
    • ヒートシンク大小
    • ネジ一式、スタック用(このケースはいくつも重ねて積むことができるらしい)のピン一式
    • GPIO シール (ケース貼付用)
  • Raspbian プリインストール済み microSD カード (Class10 16GB - SDカードアダプタ付)
  • AC 電源アダプター 5V 3.0A
  • スイッチ付きの電源ケーブル 1.1m
  • リトラクタブル LAN ケーブル (1.5m)
  • HDMI ケーブル (90cm)

価格はボード単体で買うより高くなってしまいますが、 microSD カードに Raspbian がプリインストール済みのため、接続して電源を入れるとすぐ使えます。 初めての Raspberry Pi で色々失敗したくなかったので安心でした。 また、電源ケーブルにスイッチがついてるので、停止後の電源断や再起動したい時に、いちいちコンセントを抜き差しせずに済むのが、思った以上に便利です。

上記以外で最低限用意が必要なのは、モニタ、キーボード&マウス (USB 接続) です。 うちのモニタは HDMI ポートがついていないので、変換アダプタも必要でした。

初めての起動

付属の microSD には Raspbian がプリインストール済みなので、簡単でした。

※Raspberry Pi 本体には電源スイッチがなく、電源を接続すると、すぐに起動してしまうため、電源ケーブルは一番最後につなぎました。

  • 付属の HDMI ケーブルで Raspberry Pi とモニタを接続
  • Raspberry Pi の USB ポートにキーボード&マウスを接続
  • 付属の microSD カードを Raspberry Pi にセット
  • 付属の LAN ケーブルで Raspberry Pi と自宅のハブを接続
  • 付属の電源ケーブル&AC 電源アダプターを Raspberry Pi に接続し、コンセントにつなぐ

すぐに GUI モードで起動し、デフォルトのユーザー pi でログインした状態になります。

※ちなみに、デフォルトのユーザー/パスワードは pi/raspberry です。

初期状態ではキーボード設定が日本語 (106 や 109 など) になっていません。 私の場合、初期設定が済んだらキーボード&マウスは取り外し、PC から Tera Term で ssh 接続するつもりだったので、設定変更しませんでした。

が、、、後から思えばキーボード設定は変更しておいた方が楽だったかも。ネットワークの設定などで vi でファイルを編集したり保存する際、井桁 (#) やコロン (:) がなかなか打てずちょと苦労しました。

ネットワークの設定

デフォルトは DHCP になっていますが、固定 IP にしたかったので変更しました。

うちの LAN 環境にあわせて IP アドレス 192.168.1.8、サブネットマスク 255.255.255.0 を設定しました。

以下の設定例の 192.168.1.100 は自宅のルータ (DNS 兼用) です。

/etc/dhcpcd.conf に以下を追記します。

/etc/dhcpcd.conf
interface eth0
static ip_address=192.168.1.8/24
static routers=192.168.1.100
static domain_name_servers=192.168.1.100

SSH を有効にする

設定に raspi-config を使いました。

  • コマンドラインで sudo raspi-config
  • [5 Interfacing Options] を選択
  • [P2 SSH] を選択
  • [Would you like the SSH server to be enabled?] で Yes を選択
  • [The SSH server is enabled] と表示されるので Ok を選択
  • raspi-config を終了させ、コマンドラインで sudo reboot で再起動

再起動後、GUI 画面で「SSH 有効にしたけど、パスワードがデフォルトのままですよー」と警告が表示されますが、うちの内部でしか使わないので、とりあえず無視しています。

※必要であればパスワードを変更してください。

ここからは PC の Tera Term から ssh 接続でログインして作業しました。

WiFi を設定する

Raspberry Pi 3 Model B には WiFi がついてます。以下の出力のうち wlan0 が WiFi のネットワークインタフェースです。 ちょうど WiFi 環境があったので、設定してみました。

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:05:5c:14 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.8/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2400:4130:9de0:da00:ec79:5dd:af78:5af2/64 scope global mngtmpaddr noprefixroute dynamic
       valid_lft 14149sec preferred_lft 14149sec
    inet6 fe80::b7af:758c:9277:9e70/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether b8:27:eb:50:09:41 brd ff:ff:ff:ff:ff:ff

コマンド wpa_passphrase を使い、WiFi 接続のための設定内容を取得します。

wpa_passphrase <ssid> [passphrase]

例えば SSID が HogeHogeSSID、暗号キーが 9999999999999 なら、実行結果は以下のようになります。

$ wpa_passphrase HogeHogeSSID 9999999999999
network={
        ssid="HogeHogeSSID"
        #psk="9999999999999"
        psk=9c229d90dcd1ebbdbe2da6549916d9e9ebedb8f35556a65c98cac0161e5420eb
}

出力内容を /etc/wpa_supplicant/wpa_supplicant.conf に追記します。上記出力例でコメントになっている部分 (生の暗号キー) は除きました。

/etc/wpa_supplicant/wpa_supplicant.conf
country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
        ssid="HogeHogeSSID"
        psk=9c229d90dcd1ebbdbe2da6549916d9e9ebedb8f35556a65c98cac0161e5420eb
}

設定後、sudo reboot で再起動し、設定が有効になっているかを確認します。

$ ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.8  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 2400:4130:9de0:da00:ec79:5dd:af78:5af2  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::b7af:758c:9277:9e70  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:05:5c:14  txqueuelen 1000  (Ethernet)
        RX packets 100  bytes 10440 (10.1 KiB)
        RX errors 0  dropped 14  overruns 0  frame 0
        TX packets 85  bytes 14239 (13.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.244  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::148c:df06:b101:8800  prefixlen 64  scopeid 0x20<link>
        inet6 2400:4130:9de0:da00:dbde:c876:7b20:f2b5  prefixlen 64  scopeid 0x0<global>
        ether b8:27:eb:50:09:41  txqueuelen 1000  (Ethernet)
        RX packets 63  bytes 7321 (7.1 KiB)
        RX errors 0  dropped 15  overruns 0  frame 0
        TX packets 46  bytes 8143 (7.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0 にも固定 IP アドレス (192.168.1.9) を設定します。

/etc/dhcpcd.conf に以下を追記します。

/etc/dhcpcd.conf
interface wlan0
static ip_address=192.168.1.9/24
static routers=192.168.1.100
static domain_name_servers=192.168.1.100

設定後、sudo reboot で再起動し、PC の Tera Term から WiFi のアドレスに ssh 接続できることを確認します。

確認後、sudo halt で停止してから Raspberry Pi の電源を落とし、モニタ、マウス&キーボード、LAN ケーブルを取り外しました。

その後、電源を入れ直し、PC の Tera Term から WiFi のアドレスに ssh 接続します。

※この時点で eth0 の設定は不要なのですが、WiFi ルータの不調の際、いちいちモニタをつなぐのが面倒なのでそのままにしています。

毎回、Tera Term でユーザー、パスワードを入れるのが面倒なため、接続用のマクロファイルを作成しました。

pi@192.168.1.9.ttl
Hostname = '192.168.1.9'
Username = 'pi'
Password = 'raspberry'
PortNumber = '22'

  Command = Hostname
  strconcat Command ':'
  strconcat Command PortNumber
  strconcat Command ' /ssh /auth=password /user='
  strconcat Command Username
  strconcat Command ' /passwd='
  strconcat Command Password

  connect Command

end

起動をコンソールモードにする

ssh 接続しかしないので、起動モードをコンソールモードに変更します。

  • コマンドラインで sudo raspi-config
  • [3 Boot Options] を選択
  • [B1 Desktop / CLI] を選択
  • [B1 Console Text console, requiring user to login] を選択

起動中に Power LED (赤) を点滅させる

Raspberry Pi は起動中も停止しても、電源が入っている限り、赤の LED は点灯したままです。 なんとなく紛らわしいので、起動中のみ一定間隔で赤の LED が点滅するようにしました。

sudo vi /usr/local/bin/pwr-led-blink
/usr/local/bin/pwr-led-blink
#!/bin/sh
### BEGIN INIT INFO
# Provides:          pwr-led-blink
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start power led blink at boot
# Description:
### END INIT INFO

case "$1" in
  start)
    sh -c "echo timer > /sys/class/leds/led1/trigger"
    sh -c "echo 1000 > /sys/class/leds/led1/delay_on"
    sh -c "echo 3000 > /sys/class/leds/led1/delay_off"
    ;;
  stop)
    sudo sh -c "echo input > /sys/class/leds/led1/trigger"
    ;;
  restart)
    ;;
  force-reload)
    ;;
  *)
    echo "Usage: $0 start" >&2
    exit 3
    ;;
esac

exit 0
ファイルに属性を設定
sudo chmod 755 /usr/local/bin/pwr-led-blink

動作確認します。

開始
sudo /usr/local/bin/pwr-led-blink start
停止
sudo /usr/local/bin/pwr-led-blink stop

起動時に実行されるよう登録します。

sudo ln -s /usr/local/bin/pwr-led-blink /etc/init.d/pwr-led-blink
sudo update-rc.d pwr-led-blink defaults

※実行登録を解除する場合は、以下のコマンドを実行してから、/usr/local/bin/pwr-led-blink を削除してください。

sudo update-rc.d -f pwr-led-blink remove
sudo unlink /etc/init.d/pwr-led-blink
sudo systemctl daemon-reload

追加: 上記スクリプトを systemd から起動する

実行登録を解除します。

sudo update-rc.d -f pwr-led-blink remove
sudo unlink /etc/init.d/pwr-led-blink
sudo systemctl daemon-reload

systemd のための設定ファイルを作成します。

sudo vi /etc/systemd/system/pwr-led-blink.service
/etc/systemd/system/pwr-led-blink.service
[Unit]
Description=start power led blink at boot
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/pwr-led-blink start
[Install]
WantedBy=multi-user.target

権限を設定します。

sudo chmod 644 /etc/systemd/system/pwr-led-blink.service

systemd に登録します。

sudo systemctl daemon-reload
sudo systemctl enable pwr-led-blink.service

※実行登録を解除する場合は、以下のコマンドを実行してから、/usr/local/bin/pwr-led-blink を削除してください。

sudo systemctl disable pwr-led-blink.service
sudo rm /etc/systemd/system/pwr-led-blink.service
sudo systemctl daemon-reload

※メモ

systemd の登録一覧を取得する
systemctl list-unit-files
上記の pwr-led-blink.service の状態を取得する
systemctl status pwr-led-blink.service