Raspberry Pi 3 Model B を買ったときのメモと、セットアップしたときのメモ。
Google Home を買って、声で家中のモノをコントロールできたらいいなと思い始め、専用デバイスを買うのもいいかなとも思ったのですが、他にも色々遊べたらいいなと思い、Raspberry Pi 3 Model B (RSコンポーネンツ製) を購入。
合わせて、以下を購入。
- Micro SD カード
- 電源アダプタ
- ケース
- ブレッドボード + GPIO 拡張ボード
具体的には下の商品。 (「ブレッドボード + GPIO 拡張ボード」は購入したものが現在販売されていない様子だったため、メーカは同じだが、別のものを表示。)
AC アダプタは少し高い気もしたが、安定性を重視し、5V / 3.0A の Rapsberry Pi 3 Model B 対応のものを購入した。
ケースはカッコよかったという理由だけでこの子に。 (やや高いですが、質感がかなりよく、実際買ってよかったと思っています。)
ブレッドボード + ジャンパケーブルでもこと足りますが、ピンアサインがひと目で分かるので、GPIO 拡張ボードはかなりオススメできます!
Raspberry Pi は SD カードの相性がシビアらしいので、ちょっとこだわって SD カードを買う必要がある模様。
調べると、東芝の SD カードはかなり相性がイイようなので、東芝の SD カードを使うのがいいかと。
# 現時点で NOOBS をインストールするだけであれば、4 GB で足りるようだが、色々とデータなどを保存する可能性があるのであれば 8 GB 以上はあったほうがいいとのこと。そんなに高いものではないので、あとから不足して困るくらいであれば、大きめの 16 GB や 32 GB を買うのがいいのではないかと。
今回説明に使った環境は Raspbian 9.3 (stretch)。バージョンが異なると挙動もかなり変わるので、別バージョンの場合には想定通りの動作をしないこともありますので、ご注意を。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.3 (stretch)
Release: 9.3
Codename: stretch
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.3 (stretch)
Release: 9.3
Codename: stretch
説明の中ではエディタとして、(個人的な趣味で) vim (vi) を使いますが、お好みに合わせたエディタ (nano, Emacs, ...) をお使いくださいませ。
OS のインストール
今回は、Raspberry Pi で最もポピュラーな「Raspbian」を「NOOBS」でインストールしてみた。
画像とかないけど、ざっくりというと下記の流れ。
- NOOBS のダウンロード (https://www.raspberrypi.org/downloads/noobs/)
- SD カードのフォーマット (普通にエクスプローラとかでフォーマットすれば OK。FAT32 で!)
- ダウンロードした NOOBS を解凍して、フォルダの中身をまるっと SD カードにコピー
- Raspberry Pi に SD カードを挿入
- Raspberry Pi の電源 ON
- ガイドに沿って進める (HDMI 端子のあるディスプレイとUSB キーボード、USB マウスなどが必要)
- インストール完了!
エディタの設定を変更
エディタとして vi (vim) を使っているので、今回は vi 用。
他のエディタを使っているのであれば、そのエディタの設定とかした方がこれからの作業でのイライラが減るはず。
$ vi .vimrc
設定内容はお好みで。
set nocompatible
set backspace=indent,eol,start
set autoindent
set nowrap
set ruler
set number
set backspace=indent,eol,start
set autoindent
set nowrap
set ruler
set number
Wi-Fi の設定
有線LANで繋いでもいいのだけど、個人的には好きな場所において、電源を入れて使える方が Raspberry Pi の用途としては向いていると思う。
いろんなところに設定方法は書いてあるのだけど、平文で書き込むのばかりで、今一つなので、暗号化して保存できる下記手順がいいと思う。
あ、暗号化方式は「WPA/WPA2 パーソナル」である前提です。
wpa_passphrase コマンドでアクセスポイントの SSID とパスワードを暗号化し、wpa_supplicant.conf に書き込む。
$ wpa_passphrase "<ssid>" "<password>" | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf
続いて、wpa_supplicant.conf を編集。
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
そして、"scan_ssid=1" と "key_mgmt=WPA-PSK" の行を追記する。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
:
:
network={
ssid="<ssid>"
psk=<encrypt-password>
scan_ssid=1
key_mgmt=WPA-PSK
}
:
:
network={
ssid="<ssid>"
psk=<encrypt-password>
scan_ssid=1
key_mgmt=WPA-PSK
}
再起動すれば、Wi-Fi に繋がるはず。
IP アドレスの設定
Raspberry Pi は SSH なんかでリモート接続して使うものかと思うので、IP アドレスを固定するのがいいかと思います。
DHCP デーモンのコンフィグファイルを編集。
$ sudo vi /etc/dhcpcd.conf
SSID や IPアドレス、デフォルトゲートウェイ、DNS サーバなどを追記する。
# A sample configuration for dhcpcd.
# See dhcpcd.conf(5) for details.
:
:
ssid <ssid>
static ip_address=192.168.xxx.xxx/24
static routers=192.168.xxx.xxx
static domain_name_servers=192.168.xxx.xxx
# See dhcpcd.conf(5) for details.
:
:
ssid <ssid>
static ip_address=192.168.xxx.xxx/24
static routers=192.168.xxx.xxx
static domain_name_servers=192.168.xxx.xxx
IP アドレスの状況は下記コマンドで。
$ ifconfig
eth0: ...
:
:
lo: ...
:
:
wlan0: flags=4163 mtu 1500
inet 192.168.xxx.xxx netmask 255.255.255.0 broadcast 192.168.xxx.xxx
inet6 fe80::xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20
ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (イーサネット)
RX packets 0 bytes 0 (0.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: ...
:
:
lo: ...
:
:
wlan0: flags=4163
inet 192.168.xxx.xxx netmask 255.255.255.0 broadcast 192.168.xxx.xxx
inet6 fe80::xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20
ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (イーサネット)
RX packets 0 bytes 0 (0.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
各種アップデート
Raspberry Pi にはファームウェアがあり、普通の Linux とは違い、アップデートコマンドがある。
アップデート後は再起動必須。
$ sudo rpi-update
さらに、Linux のアップデート。Debian 系なので apt-get コマンドで。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get upgrade
これらは、定期的に実行する必要あり。
ユーザの変更
一応セキュリティ面を意識して、デフォルトである pi ユーザ (および pi グループ) の名前を変えておく。
# 別ユーザを作って、pi ユーザを消すってパターンをよく見るけど、なぜ?
$ sudo usermod -l <username> pi
$ sudo usermod -d /home/<username> -m <username>
$ sudo groupmod -n <username> pi
$ sudo usermod -d /home/<username> -m <username>
$ sudo groupmod -n <username> pi
あと、パスワードも。
$ passwd
root のパスワードについては設定されていないはずなので、そのままでいいかと。
$ cat /etc/shadow
root:*:12345:0:99999:7:::
:
root:*:12345:0:99999:7:::
:
ファイアウォール
一応、許可したい通信だけに絞っておいて上げるのが礼儀。
iptables (恐らくインストールされている) に加え、iptables-persistent というパッケージを入れる。
$ sudo apt-get install iptables iptables-persistent
今もし、SSH や VNC で Raspberry Pi を設定しているのであれば、その通信を許可しておく。 (SSH のデフォルトポートは 22 番。VNC は 5901 以降。)
$ sudo iptables -A INPUT -p tcp --dport <port> -j ACCEPT
フィルタの基本的な設定をする。INPUT (外部から内部への通信) および FORWARD (外部から外部の通信のリレー) は DROP とし、OUTPUT (内部から外部への通信) は ACCEPT としておく。
$ sudo iptables -P INPUT DROP
$ sudo iptables -P FORWARD DROP
$ sudo iptables -P OUTPUT ACCEPT
$ sudo iptables -P FORWARD DROP
$ sudo iptables -P OUTPUT ACCEPT
戻り通信など確立済みパケットの関連パケットを許可。
$ sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
その他必要な通信があれば、追加しておく。
$ sudo iptables -A INPUT -p tcp --dport <port> -j ACCEPT
結果を確認。
$ sudo iptables -L
問題なさそうであれば、保存。
$ sudo /etc/init.d/netfilter-persistent save
ちなみに、SELinux は Raspbian にはそもそも機能がないため何もしない (できない)。 (自力でカーネルをコンパイルすればイケるようですが、面倒なのでスキップ。)
ハートビート LED の設定
ディスプレイを繋がずに Raspberry Pi を使っていると、動いているのか動いていないのか非常にわかりづらい。
なので、デフォルトだと SD カードへのアクセスランプとして動く LED (ACT_LED) でハートビートを確認できるように設定する。
# 不要であれば、設定不要。
config.txt を編集。
$ sudo vi /boot/config.txt
"dtparam=act_led_trigger=heartbeat" を追記。
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details
:
:
dtparam=act_led_trigger=heartbeat
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details
:
:
dtparam=act_led_trigger=heartbeat
あとは再起動。
再起動後から LED の挙動が変わります。
とりあえず、こんなところでしょうか。
# 色々とセンサーあると楽しいですよ!
0 件のコメント :
コメントを投稿