RaspberryPi
raspbian
Raspberrypi3
Stretch

Raspbian Stretch Lite on Raspberry Pi 3 初期設定メモ

概要

Raspberry Pi 3をヘッドレスで運用する際の設定メモ.

準備

OSイメージのダウンロード

Raspbianの公式ページから最新バージョンのRaspbian Liteのイメージをダウンロード・展開する.
(2018/01/02時点の最新バージョンは2017/11/29リリースのもの)

OSイメージの書き込み

Windows環境ではDD for Windowsを用いるのがよさそう.

  1. SDカードをPCに接続し,ドライブレターを確認しておく(間違いがないように).
  2. DD for Windowsをダウンロード・展開し,DDWin.exe管理者権限で実行する.
  3. ディスク選択から,接続したSDカードのドライブレターを選択する.
  4. ファイル選択から,ダウンロードしたOSイメージ(今回は2017-11-29-raspbian-stretch-lite.img)を選択する.
  5. 書込をクリックし,OSイメージが書き込まれるまで待つ.
  6. 書き込み処理が終わったら,sshを有効化するためにSDカードのルートディレクトリにsshという名前で空のファイルを作成する. boot.png
  7. SDカードを取り出す.

初期設定

起動

  1. Raspberry Pi 3にSDカードを挿入し,LANケーブルを接続した状態で電源を接続する.
  2. DHCPでIPアドレスが割り振られるはずなので,ルータのログ等を確認してRaspberry PiのIPアドレスを確認する. log.png
  3. 適当なSSHクライアントでRaspberry Piに接続する.(ID:pi,パスワード: raspberry)
$ ssh pi@192.168.0.14
pi@192.168.0.14's password:
Linux raspberrypi 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l

pi@raspberrypi:~ $

アカウント関連の設定

  • rootのユーザを設定する
pi@raspberrypi:~ $ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
pi@raspberrypi:~ $
  • 新しいユーザ username を追加する.
pi@raspberrypi:~ $ sudo adduser username
Adding user `username' ...
Adding new group `username' (1001) ...
Adding new user `username' (1001) with group `username' ...
Creating home directory `/home/username' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for username
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] Y
pi@raspberrypi:~ $
  • username をグループに追加する.
# piの所属するグループを確認する
pi@raspberrypi:~ $ id pi
uid=1000(pi) gid=1000(pi) groups=1000(pi),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),101(input),108(netdev),999(spi),998(i2c),997(gpio)
# usernameを同じグループに追加する
pi@raspberrypi:~ $ sudo usermod -aG adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio username
# 確認
pi@raspberrypi:~ $ id username
uid=1001(username) gid=1001(username) groups=1001(username),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),101(input),108(netdev),999(spi),998(i2c),997(gpio)
pi@raspberrypi:~ $
  • 一度ログアウトする.
pi@raspberrypi:~ $ exit
  • 新しく作成したユーザでログインする.
$ ssh username@192.168.0.14
username@192.168.0.14's password:
Linux raspberrypi 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l

username@raspberrypi:~ $
  • ユーザ pi を削除する
username@raspberrypi:~ $ sudo userdel -r pi

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for username:
userdel: pi mail spool (/var/mail/pi) not found
username@raspberrypi:~ $
  • ログアウトする.
username@raspberrypi:~ $ exit

Raspberry Pi 固有の初期設定

raspi-config

username@raspberrypi:~ $ raspi-config
  • 2 Network Options の設定
    • N1 Hostname でホスト名を設定 (username-pi)
  • 3 Boot Options の設定
    • B1 Desktop / CLIB1 Console を選択
  • 4 Localisation Options の設定
    • I1 Change Locale の設定
      • en_GB.UTF-8 UTF-8のチェックを外し(Spaceキー),ja_JP.EUC-JP EUC-JPja_JP.UTF-8 UTF-8 にチェック
      • Default localeをja_JP.UTF-8に設定
    • I2 Change TimezoneAsia/Tokyo に設定
    • I4 Change Wi-fi CountryJP に設定
  • 7 Advanced Options の設定
    • A1 Expand Filesystem を実行して,SDカードの全容量を使用できるように設定
    • A3 Memory Split で,GPUに割り当てるメモリを最小の16MBに設定
  • 8 Update で,raspi-config を更新

  • 再起動する.

username@raspberrypi:~ $ sudo reboot
  • 新しいホスト名でSSHログインできることを確認する.
$ ssh username@username-pi.local
username@username-pi.local's password:
Linux username-pi 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l

username@username-pi:~ $
  • SDカードの全容量が認識されていることを確認する.
username@username-pi:~ $ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root         15G 1023M   14G    8% /
devtmpfs         484M     0  484M    0% /dev
tmpfs            489M     0  489M    0% /dev/shm
tmpfs            489M   13M  476M    3% /run
tmpfs            5.0M  4.0K  5.0M    1% /run/lock
tmpfs            489M     0  489M    0% /sys/fs/cgroup
/dev/mmcblk0p1    41M   21M   21M   51% /boot
tmpfs             98M     0   98M    0% /run/user/1001
  • 表示言語を英語にしたい場合は,~/.bashrcLANG="en_US.UTF-8" と記述する.

SDカードの延命対策

参考: https://azriton.github.io/2017/03/16/Raspbian-Jessie-Lite%E3%81%AESD%E3%82%AB%E3%83%BC%E3%83%89%E5%BB%B6%E5%91%BD%E5%8C%96/

  • SDカードでSwapを用いると寿命が短くなるので,Swap領域を0にする.
username@username-pi:~ $ sudo swapoff --all
username@username-pi:~ $ sudo apt-get purge -y --auto-remove dphys-swapfile
username@username-pi:~ $ sudo rm -rf /var/swap
username@username-pi:~ $ free -mh
              total        used        free      shared  buff/cache   available
Mem:           976M         29M        779M         12M        167M        884M
Swap:            0B          0B          0B
  • ログ出力を抑制する.
    • /etc/rsyslog.conf#### RULES #### 以下で,必要のないものをコメントアウトする.
    • (cron 以外は抑制するようにしている.)

パッケージの削除

  • 必要ないパッケージを削除する.
    • 以下のスクリプトを実行する.
create_minumum_raspbian.sh
#! /bin/bash

# Update repos
sudo apt update

# Packages to remove
DOCS="man manpages libraspberrypi-doc debian-reference-en debian-reference-common"
GCC="gcc-4.5-base:armhf gcc-4.6-base:armhf gcc-4.7-base:armhf"
DEV=`sudo dpkg --get-selections | grep "\-dev" | grep -v "deinstall" | sed s/install//`
SOUND="omxplayer "`sudo dpkg --get-selections | grep -v "deinstall" | grep sound | sed s/install//`
PYTHON=`sudo dpkg --get-selections | grep -v "deinstall" | grep python | sed s/install//`
JAVA="java-common oracle-java7-jdk oracle-java8-jdk"
LEARNING="scratch squeak-vm squeak-plugins-scratch supercollider sonic-pi wolfram-engine"

# Purge packages
sudo apt purge -y $DOCS $GCC $DEV $SOUND $PYTHON $JAVA $LEARNING
sudo rm -rf /usr/local/games/
sudo rm -rf /usr/games/

# Autoremove
sudo apt autoremove -y
# Upgrade packages and distribution
sudo apt upgrade -y
sudo apt dist-upgrade -y
# Clean archive files
sudo apt clean -y

# Update firmwares
sudo apt install -y rpi-update
sudo rpi-update

# Clear logs
cd /var/log/
sudo rm `find . -type f`
history -c

# Reboot
sudo reboot
  • 再起動されるので,しばらくしてからSSHで再ログインする.

不要デーモンの無効化

  • chkconfig をインストールする.
username@username-pi:~ $ sudo apt install -y chkconfig
  • triggerhappyalsa-utilsplymouth を停止する.
username@username-pi:~ $ sudo chkconfig triggerhappy off
username@username-pi:~ $ sudo chkconfig alsa-utils off
username@username-pi:~ $ sudo chkconfig plymouth off

NTPによる時刻設定

  • ntpをインストールする.
username@username-pi:~ $ sudo apt install ntp
  • /etc/ntp.confpool ***.debian.*** iburst をコメントアウトし,NICT等のNTPサーバを追加する.
username@username-pi:~ $ sudo vim /etc/ntp.conf

# pool 0.debian.pool.ntp.org iburst
# pool 1.debian.pool.ntp.org iburst
# pool 2.debian.pool.ntp.org iburst
# pool 3.debian.pool.ntp.org iburst
pool ntp.jst.mfeed.ad.jp
pool ntp.nict.jp iburst

username@username-pi:~ $ sudo service ntp restart
  • 動作確認する.
username@username-pi:~ $ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp.jst.mfeed.a .POOL.          16 p    -   64    0    0.000    0.000   0.001
 ntp.nict.jp     .POOL.          16 p    -   64    0    0.000    0.000   0.001
 ntp3.jst.mfeed. 133.243.236.17   2 u    4   64    3    8.211    0.739   1.132
 ntp1.jst.mfeed. 133.243.236.17   2 u    1   64    3    7.267   -0.481   0.898
+ntp-a3.nict.go. .NICT.           1 u   55   64    1    7.969   -0.003   0.985
 ntp2.jst.mfeed. 133.243.236.17   2 u   64   64    1    8.284    0.083   0.001
+ntp-a2.nict.go. .NICT.           1 u   55   64    1    8.065   -0.056   1.122
+ntp-a3.nict.go. .NICT.           1 u   54   64    1    8.453    0.132   1.156
+ntp-b2.nict.go. .NICT.           1 u   56   64    1    8.597   -0.114   1.278
+ntp-b3.nict.go. .NICT.           1 u   52   64    1    9.856    0.801   1.665
*ntp-a2.nict.go. .NICT.           1 u   50   64    1    8.144    0.127   0.910

定期再起動の設定

  • rootに移行する.
username@username-pi:~ $ sudo -s
root@username-pi:/home/username#
  • crontabを設定する.(コマンド crontab -e を間違えないように注意)
# エディタが起動するので,設定を記入する
# 2日おき,AM4:00に再起動を行う場合
root@username-pi:/home/username# crontab -e
# Reboot
0 4 */2 * * /sbin/shutdown -r now

# 設定を確認する
root@username-pi:/home/username# crontab -l
# Reboot
0 4 */2 * * /sbin/shutdown -r now