RaspberryPiの設定手順を毎回忘れてしまうので記録しておくことにしました。
OSのダウンロード
RASPBIAN STRETCH LITEをダウンロードする
zipを解凍する
$ unzip 20**-**-**-raspbian-stretch-lite.zip
OSをSDカードに書き込む
接続されているデバイス名を表示してSDカードが接続されていることを確認する
$ diskutil list ...... /dev/disk2 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *31.0 GB disk2 1: Windows_FAT_32 boot 45.3 MB disk2s1 2: Linux 31.0 GB disk2s2
SDカードをフォーマットする場合は以下のコマンドを実行する
$ sudo diskutil eraseDisk FAT32 RPI MBRFormat /dev/disk2
SDカードをアンマウントしてからイメージファイルを書き込む
$ sudo diskutil umountDisk /dev/disk2 $ sudo dd bs=1m if=20**-**-**-raspbian-stretch-lite.img of=/dev/rdisk2
書き込み完了後SDカードの接続を解除する
$ diskutil eject /dev/disk2
起動確認
RaspberryPiにSDカード、キーボード、ディスプレイを接続して電源を入れる。raspberrypi login:
が表示されれば書き込みは成功。
初期設定では下記のアカウントになる
- login: pi
- password: raspberry
RaspberryPi3の初期設定
Wifiの設定
1.Wifiの設定を日本向けにする
$ sudo raspi-config
-> LocalisationOptions -> Change Wi-fi Country -> JP Japan
2.SSIDとPASSWORDを記録する
wpa_passphrase
コマンドでSSIDと暗号化したパスワードを/etc/wpa_supplicant/wpa_supplicant.conf
に記録する。平文で保存された#psk="password"
は削除する。
$ wpa_passphrase ssid password network={ ssid="ssid" #psk="password" psk="hash" }
$ sudo sh -c 'wpa_passphrase <ssid> <password> >> /etc/wpa_supplicant/wpa_supplicant.conf'
アクセスポイントがステルスの場合はscan_ssid=1
を追記する。RaspberryPi3は2.4GHzのみ対応している。
3.IPアドレスを固定にする
/etc/dhcpcd.conf
を開いて任意のIP、ルーターのIP、DNSサーバーのIPを記録する。
interface wlan0 static ip_address=xxx.xxx.xx.xx static routers=xxx.xxx.xx.xx static domain_name_servers=xxx.xxx.xx.xx
4.接続確認
rebootしてpingが通れば設定完了。
SSHの設定
デフォルト設定ではsshが接続拒否されてしまうため、bootディレクトリ下にsshファイルを作成する
$ sudo touch /boot/ssh
2.sshの有効化
$ sudo raspi-config
->
Interfacing Options -> SSH -> YES
で有効化する
3.接続確認
Macのターミナルでssh pi@<ip address>
or ssh pi@<hostname>.local
を実行して接続できれば完了。
Hostnameは$ sudo raspi-config
-> Network Options -> Hostname
で変更することができる。
RaspberryPiのIPアドレスを忘れたときは、Macのターミナルでarp-scan
を使用して同一Network内で使用されているIP/MACアドレスの一覧を取得して特定する。
$ arp-scan -localnet --interface=en0
4.ポート番号の変更
/etc/ssh/sshd_config
のPort
の値を任意の番号に変更してsshを再起動する。
$ sudo service ssh restart
5.公開鍵認証の設定
$ ssh-keygen -f ~/.ssh/id_rsa.rpi3 -b 4096
公開鍵をRaspberryPiに送信する
$ scp -P <ポート番号> ~/.ssh/id_rsa.rpi3.pub rpi@<IPアドレス>:
公開鍵を.ssh
フォルダに移動させて権限を変更する
$ mkdir .ssh $ mv id_rsa.rpi3.pub .ssh/ $ chmod 700 .ssh
/etc/ssh/sshd_config
を以下の設定に変更する
PasswordAuthentication no PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/id_rsa.rpi3.pub
sshを再起動してexitする
$ sudo service ssh restart $ exit
~/.ssh/config
に以下を記載する
Host rpi3 HostName <RaspberryPiのIPアドレス> User rpi Port <sshのポート番号> IdentityFile ~/.ssh/id_rsa.rpi3
以下のコマンドでログインできれば完了です
ssh rpi3
パッケージ管理システムの更新
パッケージ情報のリスト、インストール済みのアプリケーション、OSのディストリビューションを最新にする
$ sudo sh -c "apt-get update; apt-get upgrade -y; apt-get dist-upgrade -y"
ファームウェアを最新にする
$ sudo rpi-update
NTPの設定
/etc/systemd/timesyncd.conf
に以下を記載する。
[Time] NTP=ntp.nict.jp FallbackNTP=0.jp.pool.ntp.org 1.jp.pool.ntp.org 2.jp.pool.ntp.org 3.jp.pool.ntp.org
systemd-timesyncdを再起動して同期を確認する。
$ sudo systemctl restart systemd-timesyncd.service $ systemctl status systemd-timesyncd ● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/systemd-timesyncd.service.d └─disable-with-time-daemon.conf Active: active (running) since Thu 2018-08-30 17:45:33 JST; 20s ago Docs: man:systemd-timesyncd.service(8) Main PID: 997 (systemd-timesyn) Status: "Synchronized to time server [2001:df0:232:eea0::fff4]:123 (ntp.nict.jp)." CGroup: /system.slice/systemd-timesyncd.service └─997 /lib/systemd/systemd-timesyncd
raspi-configで設定すること
以下のコマンドを実行する
$ sudo raspi-config
タイムゾーンの変更
Localisation Option -> Change Timezone -> Asia -> Tokyo
ファイルシステムの拡張
SDの全容量を使用することが可能になる
Advanced Options -> Expand Filesystem
raspi-configの更新
Update
を選択する。
デフォルトユーザ名の変更
1.sudo権限を付与した仮のユーザを作成する
$ sudo useradd -M hoge //hogeユーザーを追加する $ sudo gpasswd -a hoge sudo //sudoグループに追加 $ sudo passwd hoge //パスワードを設定する
2.ユーザ名を変更する
hogeユーザでssh接続してpiユーザのユーザ名とグループを変更する
$ sudo usermod -l rpi pi //ユーザ名を変更 $ sudo usermod -d /home/rpi -m rpi //ホームディレクトリを変更 $ sudo groupmod -n rpi pi //グループ名を変更
3.rpiユーザでssh接続して仮のユーザを削除する
$ sudo userdel hoge //仮のユーザを削除 $ sudo passwd rpi //パスワード変更
4.piユーザがパスワードなしsudoできないようにする
設定ファイルを削除する
$ sudo rm /etc/sudoers.d/010_pi-nopasswd
Swapを無効にする
スワップファイルを作成しないように設定する
$ sudo systemctl stop dphys-swapfile $ sudo systemctl disable dphys-swapfile
rebootしてスワップのメモリ容量が0MBになっていること、スワップが無効「inactive (dead)」になっていることを確認する。
$ free -h $ systemctl status dphys-swapfile
スワップのメモリ容量を変更したいときは/etc/dphys-swapfile
のCONF_SWAPSIZE
の値を変更する。
tmpフォルダをRAMDISKに移動させる
1.tmpディレクトリをメモリ上に作成されたファイルシステムとしてマウントされるように設定する。/etc/fstab
に下記の行を追加する。
各フィールドを以下に示す
tmpfs /tmp tmpfs defaults,noatime,size=32m,mode=1777 0 0 tmpfs /var/tmp tmpfs defaults,noatime,size=32m,mode=1777 0 0
マウントオプションについてはfstabとmountのmanを確認する。
tmpfsを無制限に利用するとメモリ不足になる可能性があるのでサイズを指定する。
mode=1777
の1はsticky bitのフラグであり、全ユーザに各権限が与えられるが所有者以外には変更と削除ができなくなる。
2.rebootしてからdf
コマンドでramdiskで動作していることを確認する。
df -h Filesystem Size Used Avail Use% Mounted on ...... tmpfs 32M 0 32M 0% /tmp tmpfs 32M 0 32M 0% /var/tmp
ログの出力を減らす
/etc/rsyslog.conf
のRULES以下に記載されている設定で必要ないものをコメントアウトする。
以上です。