今さらながら初めてみました。
初めてだったので、足りないものがあると困ると思い、 Amazon マーケットプレイスで「Physical Computing Lab」さんから 「Raspberry Pi3 コンプリートスターターキット (Standard)」を購入しました。 内容物は以下のとおりでした (2017/11 月時点)。
価格はボード単体で買うより高くなってしまいますが、 microSD カードに Raspbian がプリインストール済みのため、接続して電源を入れるとすぐ使えます。 初めての Raspberry Pi で色々失敗したくなかったので安心でした。 また、電源ケーブルにスイッチがついてるので、停止後の電源断や再起動したい時に、いちいちコンセントを抜き差しせずに済むのが、思った以上に便利です。
上記以外で最低限用意が必要なのは、モニタ、キーボード&マウス (USB 接続) です。 うちのモニタは HDMI ポートがついていないので、変換アダプタも必要でした。
付属の microSD には Raspbian がプリインストール済みなので、簡単でした。
※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 に以下を追記します。
interface eth0
static ip_address=192.168.1.8/24
static routers=192.168.1.100
static domain_name_servers=192.168.1.100
設定に raspi-config を使いました。
再起動後、GUI 画面で「SSH 有効にしたけど、パスワードがデフォルトのままですよー」と警告が表示されますが、うちの内部でしか使わないので、とりあえず無視しています。
※必要であればパスワードを変更してください。
ここからは PC の Tera Term から ssh 接続でログインして作業しました。
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 に追記します。上記出力例でコメントになっている部分 (生の暗号キー) は除きました。
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 に以下を追記します。
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 でユーザー、パスワードを入れるのが面倒なため、接続用のマクロファイルを作成しました。
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 接続しかしないので、起動モードをコンソールモードに変更します。
Raspberry Pi は起動中も停止しても、電源が入っている限り、赤の LED は点灯したままです。 なんとなく紛らわしいので、起動中のみ一定間隔で赤の LED が点滅するようにしました。
sudo vi /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
実行登録を解除します。
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
[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
※メモ
systemctl list-unit-files
systemctl status pwr-led-blink.service