以前、Raspberry Pi 2でヘッドレスにRaspbianをインストールしてファイルサーバ化する手順をまとめたけれど、あれからだいぶ時間がたってしまったので、改めてRapbian Jessie Liteをヘッドレスにインストールして初期設定する手順をまとめ直すことにした。
Rapbian Jessie Liteを書き込んだmicroSDカードを準備するまで
しばらくRaspberry Pi自体から離れているうちにPC環境も移行していたので、改めてPCにツール類を入れ直して、Raspberry Piをいじれる環境を整えるところからやり直し。
Rapbian Jessie Liteのイメージファイルは、日本ミラーとしていつもお世話になっている北陸先端科学技術大学院大学から「2017-07-05-raspbian-jessie-lite.zip」をダウンロード。
まず、PCにSDメモリカードフォーマッターをインストールして、今まで使っていたmicroSDカードをフォーマットする。
いつの間にかSDメモリカードフォーマッターのバージョンが新しくなっていたようで、以前は「オプション設定」という項目から「論理サイズ調整」をONにした記憶があるけれど、今は「オプション設定」自体が無くなっていた。
今までRaspberry Pi 2で使っていたmicroSDカードなので、bootなど複数のパーティションが見えたけれど、とりあえずmicroSDカード上のパーティションが選択されていることだけ確認してそのままフォーマットをかけたら、まっさらなmicroSDカードになった。
次は、PCにWin32 Disk Imagerをインストールして、microSDカードにイメージファイルを書き込み。
これも以前とは少し画面が異なっている気がしたけれど、特に設定する項目もないのでダウンロードしてZIPから解凍したRapbian Jessie Liteのイメージファイルを選択して、書き込み先のmicroSDカードは自動的に選択されていたので、そのまま「Write」を実施した。
最後に、sshを有効にするために、Rapbian Jessie Liteが書き込まれたmicroSDカードのbootパーティションを開いて、拡張子なしの「ssh」というファイルを作成した。
Raspberry Pi 2を立ち上げて初期設定するまで
準備のできたmicroSDカードをRaspberry Pi 2に挿し直して、LANケーブルをつないでから電源用のmicroUSBケーブルをつないで起動。
例によって、Raspberry PiがDHCPで取得したIPアドレスを調べるのにiOSアプリのFingを利用。問題なくネットワーク上にRaspberry Piが現れた。
PCにTeraTermをインストールして、Fingで見つけたRaspberry PiのIPアドレスにsshで接続。初期ユーザはpi
、パスワードはraspberry
。
df -h
を叩いて、ファイルシステムが正しく認識されていることを確認。
pi@raspberrypi:~ $ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 15G 930M 14G 7% /
devtmpfs 458M 0 458M 0% /dev
tmpfs 462M 0 462M 0% /dev/shm
tmpfs 462M 12M 450M 3% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 462M 0 462M 0% /sys/fs/cgroup
/dev/mmcblk0p1 42M 21M 21M 51% /boot
pi@raspberrypi:~ $
raspi-configの設定
まず、sudo raspi-config
を叩いて、以下の設定を変更。
Localeを変更
-
4 Localisation Options
を選択。 -
I1 Change Local
を選択。 -
en_GB.UTF-8 UTF-8
でスペースを押して*
を外す。 -
ja_JP.UTF-8 UTF-8
でスペースを押して*
を付ける。 -
Default local for the system environment:
でja_JP.UTF-8
を選択。
Timezoneを変更
- 再度、
4 Localisation Options
を選択。 -
I2 Change Timezone
を選択。 -
Asia
→Tokyo
を選択する。
Cameraモジュールをディゼーブル
-
5 Interfacing Options
を選択。 -
P1 Camera
を選択。 -
Would you like the camera interface to be enabled?
でNo
を選択。
GPUメモリの割り当てを64MBから16MBに変更
-
7 Advanced Options
を選択。 -
A3 Memory Split
を選択。 -
64
→16
に変更する。
再起動
Finish
を選んで、再起動する。
Raspbianの更新
再起動したらsshで入り直して、システムを最新版にする。
まずは/etc/apt/sources.list
を書き換えて、リポジトリ先を国内のJAISTに変更する。
pi@raspberrypi:~ $ cat /etc/apt/sources.list
#deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
deb http://ftp.jaist.ac.jp/raspbian jessie main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi
pi@raspberrypi:~ $
アップデート系のコマンドを一通り実施して、再起動。
pi@raspberrypi:~ $ sudo apt-get update
pi@raspberrypi:~ $ sudo apt-get dist-upgrade
pi@raspberrypi:~ $ sudo rpi-update
pi@raspberrypi:~ $ sudo reboot
以前はapt-get update
の後にapt-get upgrade
も叩いたけれど、apt-get dist-upgrade
だけで更新含めパッケージの追加やら削除やら、全部面倒をみてくれるらしい。
再起動後に掃除系のコマンドも一通り叩いてみたものの、この時点で削除されるパッケージはなかった。
pi@raspberrypi:~ $ sudo apt-get autoremove
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
pi@raspberrypi:~ $
pi@raspberrypi:~ $ sudo apt-get autoclean
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
pi@raspberrypi:~ $
pi@raspberrypi:~ $ sudo apt-get clean
pi@raspberrypi:~ $
また、念のため以下のコマンドを叩いて設定ファイルをシステムに残して削除されたパッケージがあるか確認してみたけれど、何もなかった。
pi@raspberrypi:~ $ dpkg -l | awk '/^rc/ { print $2 }'
pi@raspberrypi:~ $
更新後のシステムを確認。
pi@raspberrypi:~ $ cat /etc/devian_bian_version
8.0
pi@raspberrypi:~ $
pi@raspberrypi:~ $ hostnamectl
Static hostname: raspberrypi
Icon name: computer
Chassis: n/a
Machine ID: 8d0193e221c44a60a0e896a4944e917b
Boot ID: 637bbeed3c3d47f9b06a55e57d88fa46
Operating System: Raspbian GNU/Linux 8 (jessie)
Kernel: Linux 4.9.40-v7+
Architecture: arm
pi@raspberrypi:~ $
デフォルトのランレベルを変更
例によって、デフォルトのランレベルを5相当から3相当に変更。
pi@raspberrypi:~ $ systemctl get-default
graphical.target
pi@raspberrypi:~ $
pi@raspberrypi:~ $ sudo systemctl set-default multi-user.target
Created symlink from /etc/systemd/system/default.target to /lib/systemd/system/multi-user.target.
pi@raspberrypi:~ $
pi@raspberrypi:‾ $ sudo systemctl set-default multi-user.targetystemctl get-default
multi-user.target
pi@raspberrypi:~ $
一度再起動し、multi-user.target
で起動していることを確認。
無線LANを設定するまで
次は、手元のHUBのポートが埋まりきってしまっているので、無線LANで接続できるようにする。無線LANを搭載したRaspberry Pi 3を購入しようかとも思ったのだけど、そこまでマシンパワーが必要なことをするわけでもないので、Wi-Fiドングルを導入することにした。Raspberry Pi 2では定番のPLANEX GW-USNANO2Aを購入。
Wi-FiドングルをRaspberry Piにつないだら、lsusb
を叩いて認識されたことを確認。
pi@raspberrypi:~ $ lsusb
Bus 001 Device 004: ID 2019:ab2a PLANEX GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS]
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
pi@raspberrypi:~ $
sudo raspi-config
を叩いて、Wi-fi Countryを変更。
-
4 Localisation Options
を選択。 -
I4 Change Wi-fi Country
を選択。 -
JP Japan
を選択。
Finish
を選んで、再起動する。
再起動後、どう認識されているかを確認。
pi@raspberrypi:~ $ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
pi@raspberrypi:~ $
pi@raspberrypi:~ $ iwconfig
eth0 no wireless extensions.
lo no wireless extensions.
wlan0 unassociated Nickname:"<WIFI@REALTEK>"
Mode:Auto Frequency=2.412 GHz Access Point: Not-Associated
Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Power Management:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
pi@raspberrypi:~ $
iwlist scan
を叩いて、手元の無線アクセスポイントが認識されているか確認。
pi@raspberrypi:~ $ sudo iwlist wlan0 scan
wlan0 Scan completed :
Cell 01 - うちの無線アクセスポイントの情報が表示
pi@raspberrypi:~ $
無線アクセスポイントが認識されていることを確認したので、wpa_passphrase
を叩いて設定ファイルに記載する内容を確認する。
pi@raspberrypi:~ $ wpa_passphrase うちのESSID うちのパスフレーズ
network={
ssid="うちのESSID"
#psk="うちのパスフレーズ"
psk=暗号化されたパスフレーズ
}
pi@raspberrypi:~ $
nanoエディタで/etc/wpa_supplicant/wpa_supplicant.conf
を開いて、wpa_passphrase
の出力結果を書き込んで編集した。
pi@raspberrypi:~ $ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="うちのESSID"
psk=暗号化されたパスフレーズ
}
pi@raspberrypi:~ $
wlan0をifdown
/ifup
して、無線アクセスポイントに接続されたことを確認。
pi@raspberrypi:~ $ sudo ifdown wlan0
pi@raspberrypi:~ $ sudo ifup wlan0
pi@raspberrypi:~ $
pi@raspberrypi:~ $ iwconfig wlan0
wlan0 IEEE 802.11bgn ESSID:"うちのESSID" Nickname:"<WIFI@REALTEK>"
Mode:Managed Frequency:2.437 GHz Access Point: (後略)
pi@raspberrypi:~ $
実際には、network={……}
内にオプションを付け加えないといけないかと思い色々と試したのだけどエラーになってしまい、一番単純なESSIDと暗号化されたパスフレーズだけを記載するやり方に戻したところ、つながるようになった。sudo sh -c 'wpa_passphrase うちのESSID うちのパスフレーズ >> /etc/wpa_supplicant/wpa_supplicant.conf'
で直接書き込んでも良かったかもしれない。
接続ができるようになったところで、無線LANのパワーマネジメント機能をオフにする。iwconfig
の表示がPower Management:off
となっていても当てにならないらしいので、8192cuドライバのパラメータを確認する。
pi@raspberrypi:~ $ cat /sys/module/8192cu/parameters/rtw_power_mgnt
1
pi@raspberrypi:~ $
pi@raspberrypi:~ $ cat /sys/module/8192cu/parameters/rtw_enusbss
0
pi@raspberrypi:~ $
pi@raspberrypi:~ $ cat /sys/module/8192cu/parameters/rtw_ips_mode
1
pi@raspberrypi:~ $
やはり、rtw_power_mgnt
の値が1
の最小限の電力管理になっている。/etc/modprobe.d/8192cu.conf
を作成して値を0
にする。情報元の海外のフォーラムを読むとこれだけ変えればいいらしいのだけれど、念のためrtw_enusbss=1
も追加。rtw_ips_mode=1
を加えている情報もあったのだけど、パラメータ的にはもともと1
になっているので追加しなかった。作成して、再起動。
pi@raspberrypi:~ $ sudo cat /etc/modprobe.d/8192cu.conf
options 8192cu rtw_power_mgnt=0 rtw_enusbss=1
pi@raspberrypi:~ $
pi@raspberrypi:~ $ sudo reboot
再起動後、8192cuドライバのパラメータが変更されたことを確認。
pi@raspberrypi:~ $ cat /sys/module/8192cu/parameters/rtw_power_mgnt
0
pi@raspberrypi:~ $
pi@raspberrypi:~ $ cat /sys/module/8192cu/parameters/rtw_enusbss
1
pi@raspberrypi:~ $
pi@raspberrypi:~ $ cat /sys/module/8192cu/parameters/rtw_ips_mode
1
pi@raspberrypi:~ $
iwconfig
とifconfig
を叩いて、無線アクセスポイントに接続し、IPアドレスを取得できているか確認。
pi@raspberrypi:~ $ iwconfig wlan0
wlan0 IEEE 802.11bgn ESSID:"うちのESSID" Nickname:"<WIFI@REALTEK>"
Mode:Managed Frequency:2.437 GHz Access Point: (後略)
pi@raspberrypi:~ $
pi@raspberrypi:~ $ ifconfig wlan0
wlan0 Link encap:イーサネット ハードウェアアドレス 00:22:cf:fb:85:20
inetアドレス:192.168.0.12 ブロードキャスト:192.168.0.255 マスク:255.255.255.0
inet6アドレス: (後略)
pi@raspberrypi:~ $
無事接続を確認したので、一旦シャットダウンしてLANケーブルを外して立ち上げ直し、無線LAN側のIPアドレスに対してssh接続できることも確認した。
Macのターミナルからも、ssh pi@raspberrypi.local
と叩いてssh接続できることを確認。