RasbianのStretchがリリースされてから、何回かOSを入れることがあったのでメモ
OSインストール
今回は以下の環境でインストールを実施
- NOOBS 2.4.4
- Rasbian Lite (Stretch)
インストールまでは以下を実施
- SD Card FormatterでMicroSDをフォーマット
- 展開したNOOSの中身を丸ごとコピー
- MicroSDから起動
- 無線LANに接続し、Rasbian Liteをインストール
この時Languageは「English(US)」、Keyboardは「jp」とすること
初期設定
piユーザのパスワード変更
piユーザのでデフォルトパスワードはraspberryなので変更する。
以下のどちらかで実施
- passwdコマンドによる変更
- sudo raspi-configコマンドから「1 Cange User Password」を選択
rootユーザのパスワード変更
初期状態はrootユーザのパスワードは未設定、必要に応じて設定
- sudo passwdコマンドによる変更
ホスト名の変更
デフォルトはraspberryのため、適宜変更する。
以下のどちらかで実施
- sudo raspi-configコマンドから「2 Hostname」を選択
- sudo vi /etc/hostname で直接編集
Localeの修正
インストール時にLangageを日本語にしていないため、修正する。
インストール時に日本語にすると、フォルダ名の一部が日本語になるためここで修正する。
- sudo raspi-configコマンドから「4 Localisation Options」を選択
SSH / I2Cなどの各種サービスの有効化
デフォルトではSSHが無効化されているため、有効化する。
- sudo raspi-configコマンドから「5 Interfacing Options」を選択
以下のサービスを有効化する。CLI環境のためVNCは無効化。- P1 Camera
- P2 SSH
- P5 I2C
環境変数LANG変更用スクリプト作成
ロケールを日本語環境にしていると、ターミナルで文字化けを起こすことがある。
ログインする環境に応じてLANGを変更するスクリプトを記述する。
$ sudo vi /etc/profile.d/lang.sh #!/bin/sh case $TERM in linux) LANG=C ;; *) LANG=ja_JP.UTF-8 ;; esac export LANG=$LANG $ chmod +x /etc/profile.d/lang.sh
Wifi接続のパスフレーズの暗号化
GUIを利用してWifi接続すると設定ファイルにパスフレーズが平文で格納されます。
パスフレーズの漏洩を防ぐためにパスフレーズの暗号化を行います。
$ sudo wpa_passphrase "SSID" "PASS_PHRASE" >> /etc/wpa_supplicant/wpa_supplicant.conf $ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf #psk="PASS_PHRASE" の行を削除します。 また他に平文のものがあればそちらもnetworkブロックごと削除します。
Wifi自動再接続スクリプトの設定
raspberry piのwifiは気がつくと切れていることがある。
自動再接続するためのスクリプトをcronで自動実行する。
$ sudo vi /usr/local/bin/reconnect_wifi #!/bin/sh OSVER=`grep VERSION_ID /etc/os-release | awk -F '"' '{print $2}'` ping -c 1 `ip route | grep default | awk '{print $3;}'` >/dev/null 2>&1 if [ $? != 0 ] then logger "wifi connection error was occured. trying reconecct..." case $OSVER in "8") sudo sh -c "ifdown wlan0 && ifup wlan0" ;; "9") sudo systemctl restart dhcpcd ;; esac sleep 10 if [ `ip route | grep default | wc -l ` -eq 0 ] then logger "wifi is not connected." else logger "wifi is connected." fi fi $ sudo chmod +x /usr/local/bin/reconnect_wifi $ sudo crontab -e * * * * * sh /usr/local/bin/reconnect_wifi
Wifiのパワーマネジメント機能をOFFにする(11/7追記)
デフォルトではWifiのパワーマネジメント機能が働いています。
これにより通信が不安定になったりすることがあるため、OFFにします。
$ sudo iwconfig wlan0 wlan0 IEEE 802.11 Mode:Master Tx-Power=31 dBm Retry short limit:7 RTS thr:off Fragment thr:off Power Management:on $ sudo /sbin/iw dev wlan0 set power_save off $ sudo iwconfig wlan0 wlan0 IEEE 802.11 Mode:Master Tx-Power=31 dBm Retry short limit:7 RTS thr:off Fragment thr:off Power Management:off
起動時に設定するには/etc/rc.localなどにコマンドを書いておけばよい
cat /etc/rc.local #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi # Raspberry Pi Zero W WiFi Power Management off sudo /sbin/iw dev wlan0 set power_save off exit 0
【参考】本当にパワーマネジメントは有効になっているのか?
どうやらStretchではパワーマネジメント機能はデフォルトでオフになっているようです。
確かにdmesgには無効化しているログが出るのですが、iwconfigは有効で表示されます。
どっちが正しいかは正直よくわかりません。
ただ、現状だと表示が不一致になっているので上記は設定したほうがいいと思います。$ dmesg | grep power
[ 16.969625] brcmfmac: power management disabled
$ sudo iwconfig wlan0 | grep 'Power Management'
Power Management:on