RaspberryPi3 設定手順メモ

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の設定

1.ブートパーティション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_configPortの値を任意の番号に変更してsshを再起動する。 

$ sudo service ssh restart

5.公開鍵認証の設定

Macで公開鍵と秘密鍵のペアを生成する

$ 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-swapfileCONF_SWAPSIZEの値を変更する。

tmpフォルダをRAMDISKに移動させる

1.tmpディレクトリをメモリ上に作成されたファイルシステムとしてマウントされるように設定する。/etc/fstabに下記の行を追加する。

各フィールドを以下に示す

  1. バイス
  2. マウントポイント
  3. ファイルシステムの種類
  4. マウントオプション
  5. dumpフラグ
  6. fsckチェック
tmpfs    /tmp    tmpfs   defaults,noatime,size=32m,mode=1777 0   0
tmpfs   /var/tmp    tmpfs   defaults,noatime,size=32m,mode=1777 0   0

マウントオプションについてはfstabmountの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以下に記載されている設定で必要ないものをコメントアウトする。

以上です。