概要
Raspberry Pi 3をヘッドレスで運用する際の設定メモ.
準備
OSイメージのダウンロード
Raspbianの公式ページから最新バージョンのRaspbian Liteのイメージをダウンロード・展開する.
(2018/01/02時点の最新バージョンは2017/11/29リリースのもの)
OSイメージの書き込み
Windows環境ではDD for Windowsを用いるのがよさそう.
- SDカードをPCに接続し,ドライブレターを確認しておく(間違いがないように).
- DD for Windowsをダウンロード・展開し,
DDWin.exe
を管理者権限で実行する. - ディスク選択から,接続したSDカードのドライブレターを選択する.
-
ファイル選択から,ダウンロードしたOSイメージ(今回は
2017-11-29-raspbian-stretch-lite.img
)を選択する. - 書込をクリックし,OSイメージが書き込まれるまで待つ.
- 書き込み処理が終わったら,sshを有効化するためにSDカードのルートディレクトリに
ssh
という名前で空のファイルを作成する. - SDカードを取り出す.
初期設定
起動
- Raspberry Pi 3にSDカードを挿入し,LANケーブルを接続した状態で電源を接続する.
- DHCPでIPアドレスが割り振られるはずなので,ルータのログ等を確認してRaspberry PiのIPアドレスを確認する.
- 適当な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 / CLI
でB1 Console
を選択
-
-
4 Localisation Options
の設定-
I1 Change Locale
の設定-
en_GB.UTF-8 UTF-8
のチェックを外し(Spaceキー),ja_JP.EUC-JP EUC-JP
とja_JP.UTF-8 UTF-8
にチェック - Default localeを
ja_JP.UTF-8
に設定
-
-
I2 Change Timezone
でAsia/Tokyo
に設定 -
I4 Change Wi-fi Country
でJP
に設定
-
-
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
- 表示言語を英語にしたい場合は,
~/.bashrc
にLANG="en_US.UTF-8"
と記述する.
SDカードの延命対策
- 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
-
triggerhappy
,alsa-utils
,plymouth
を停止する.
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.conf
のpool ***.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