Raspbian Buster ヘッドレス 初期設定 できないか調べた
ディスプレイなしって意味。
前回まで
- Raspberry Pi 4B (4GB) を2個予約した(KSY先行予約販売)
- Raspberry Pi 4B 届いた! 開封の儀
- Raspberry Pi 4B ヒートシンク取付
- Raspberry Pi 4B ケース装着
- HDMIまちがえて買ってた……(type A, C, D の罠)
ディスプレイとケーブルのHDMI規格が合わず、ディスプレイが使えなかった……。
すべてはRaspberry Pi 4Bにてmicro HDMI type Dに変更されてしまったのが原因。type Aのままならケーブルを流用できて何も問題なかったのに。そう、私は悪くない。
変換キャップが届くまで、どうにかしてセットアップする方法はないか?
今回
他のマシンから遠隔操作してセットアップできないか調べた。
実際にはやらず、手順だけメモる。一部Pi3B+を対象にやる。Pi4Bはまだ触らない。でもPi4Bのつもりで書く。
ヘッドレス
他のマシンからリモート接続することを「ヘッドレス」と呼ぶらしい。ディスプレイをマシンに接続せず、既存別マシンのディスプレイを使える。
手順
1. 準備する
1-1. リモート操作される側(Pi4B)
まずは以下の通りSDカードにRaspbian Busterをインストールする。
次に以下の設定をする。
1-1-1. Wi-Fi設定する
- Raspbian BusterをインストールしたSDカードを用意する
- 稼働するマシンに1をUSB接続するなりして中身をみる
- 2の
/boot
ディレクトリ直下に移動する - 3に
wpa_supplicant.conf
ファイルを作成する
SDカードのパスはマウント状況によって異なる。以下のコマンドなどで確認すること。
df -h
...
/dev/sd?1 ... (SDカードの/boot)
...
(SDカードの/boot)/wpa_supplicant.conf
country=JP ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="SSID" psk="パスワード" }
なお、以下の項目は各自のWi-Fi親機で設定したそれに合わせる。
SSID
パスワード
もし既存Pi3B+などでその設定があれば、使いまわせるはず。私の場合はそれをコピーした。既存のWi-Fi設定ファイルは以下のパスにある。
/etc/wpa_supplicant/wpa_supplicant.conf
これをBuster入りSDカードにコピーする。
cp /etc/wpa_supplicant/wpa_supplicant.conf (SDカードの/boot)
1-1-2. SSHを有効にする
Buster入りSDカードの/boot
配下にssh
という名前の空ファイルを作成する。
空ファイルは以下コマンドで作れる。別にファイルマネージャからマウス操作でもいい。
cd (SDカードの/boot) touch ssh
もしディスプレイが使えるなら
もしディスプレイが使えるなら、以下のようにGUIで設定できる。
- システムメニュー
設定
Raspberry Pi の設定
インタフェース
タブSSH
,VNC
を有効
にするOK
ボタン押下する
1-1-3. IPアドレスを下見する
Wi-Fi親機に接続されているマシンのIPアドレスを確認する。
これは後で接続する予定のRapberry Pi 4B以外の番号を把握するために行う。さもなくば1つずつ確認せねばならず面倒。
IPアドレスの探し方はいくつかある。私はWi-Fi親機の設定画面から参照した。
- Wi-Fi親機の設定画面にアクセスする
- ブラウザURL欄にて
192.168.11.1
を入力する(親機によってアドレスが異なる)
- ブラウザURL欄にて
- DHCP接続中マシンとそのIPの一覧を表示する
- それっぽいのをメモしておく
自分のIPを表示する方法
ターミナルにてip addr show
とすれば、そのマシンのIPアドレスを表示できる。ただし今回はPi4Bのディスプレイがないため、Pi4Bに対してこの方法は使えない。
ip addr show
1: lo: ... ... 2: eth0: ... link/ether b8:27:eb:??:??:?? brd ff:ff:ff:ff:ff:ff 3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether b8:27:eb:??:??:?? brd ff:ff:ff:ff:ff:ff inet 192.168.11.5/24 brd 192.168.11.255 scope global wlan0 valid_lft forever preferred_lft forever inet6 ????::????:????:???:???/?? scope link valid_lft forever preferred_lft forever
名前 | デバイス |
---|---|
eth0 |
有線LAN |
wlan0 |
無線LAN |
今回は無線LAN接続したいので、そちらのIPを探す。上記の例では192.168.11.5
。
ただしIPアドレスは時間経過で変動する。固定化する設定を後でやる。初期設定が終わってからでないとできないと思う。
IP固定化する方法
いずれやる予定。まだやらない。
/etc/dhcpcd.conf
interface wlan0 static ip_address=192.168.11.9/24 static routers=192.168.11.1 static domain_name_servers=192.168.11.1
上記はWi-Fi親機が192.168.11.1
、Raspberry Pi 4Bが192.168.11.9/24
だったときの例。
1-1-4. 初回ブートする
Raspberry Pi 4Bを初回ブートする。
以下でSDカードにRaspbian BusterをインストールしたSDカードを用意する。
次は以下。
- 上記SDカードをPi4BのSDカード挿入口にいれる
- 電源を接続する
- 数分間待つ
初回ブートはSDカードの領域を広げる作業を行うため、時間がかかるらしい。
1-1-5. IPアドレスを探す
Raspberry Pi 4BのIPアドレスを探す。このIPを元にして別マシンからSSH接続する。
IPアドレスの探し方はいくつかある。私はWi-Fi親機の設定画面から参照した。
Raspberry Pi 4Bが192.168.11.9/24
だったと仮定して話を進める。
1-2. リモート操作する側(Pi3B+)
Pi4Bは起動したまま、一旦離れる。ここから先は別マシンからPi4Bをリモート操作する。
リモート操作するマシンは何でも良い。ここではPi3B+を使う。
1-2-1. SSHログインする
ssh -l pi 192.168.11.4
以下のように出たので、yes
を入力してENTERキー押下。
The authenticity of host '192.168.11.4 (192.168.11.4)' can't be established. ECDSA key fingerprint is SHA256:Sq5WBWpXmZ0p1vompTb9DKrbfE8lbKK3m1FcWo8W1Ow. Are you sure you want to continue connecting (yes/no)?
以下のように警告が出た。そしてなぜかそのまま終了してしまった……。あれ? 操作できないよ?
Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. SSH is enabled and the default password for the 'pi' user has not been changed. This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.
ログイン先のターミナルになると思うのだが、このマシンのターミナルに返ってきてしまう。なぜ……。デフォルトのパスワードを変えないとダメなのか? ググってもそんな情報なかったと思うのだが。こんな現象も聞かないのだが。
結論。うちのPi3B+からPi3B+へはSSHログインできなかった。
なぜだ……。もう話が進められない……。いや、無理やり進めよう。ただのメモだし。
1-2-2. VNC Viewerをインストールする
リモート操作するためにVNC Viewerをインストールする。
スタンドアロン版はなぜか「ファイルがありません」と怒られて認識すらされず。DEB形式を入手してインストールした。数分かかった。
2. リモート操作にて初期設定する
2-1. VNCを有効にする
Pi4BのVNCを有効にする。
SSHログインしたまま、以下の操作をする。
- 端末(ターミナル)を起動する
sudo raspi-config
コマンドを実行する- 画面に従ってVNCを有効にする
5. Interfacing Option
P3 VNC
Yes
Ok
- Tabキー押下して
Finish
もしディスプレイがあってGUI操作できるなら以下でも可。
- システムメニュー
設定
Raspberry Pi の設定
インターフェイス
タブSSH
,VNC
を有効
にするOK
ボタン押下する
2-2. VNCでログインする
Ri3B+にて。
- システムメニュー
インターネット
VNC Viewer
GOT IT
- URL欄にIPアドレスを入力する
Countinue
Username
,Password
を入力する(デフォルトはpi
,raspberry
)
- 表示される
これで別マシンから操作できる。なお表示された画像はPi3B+から別のPi3B+にログインした画像である。
でも本番ではPi4BへSSHログインしてrpi-config
コマンドにてVNCを有効化する手はずになっている。つまりSSHログインできなければVNCログインできない。今回Pi3B+でSSHログインできなかったのだが、Pi4Bではできるのだろうか?
2-3. 初期設定(セットアップ)
Pi3B+からPi4BへVNCを介してログインする。
まだやっていないが、Pi3B+と同じなら、初回セットアップ用ダイアログが出ているはず。
あとは画面に従ってセットアップすればいい。Wi-Fiは設定済みなので、キーボードくらいか?
以下の点に注意。
所感
もしこの通りにできなかったら、電源をぶっこ抜くことになりそう。怖くて躊躇してしまう。あと数日待つか、それともバルス覚悟でやるか。悩ましい。
もしくはCtrl
+T
でターミナル起動し、shutdown
+Enter
で終了できるか? それならいいのだが。そんな細かい情報みつからんし探すの大変。どうなのBusterさん?