やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Raspbian Buster ヘッドレス 初期設定 できないか調べた

 ディスプレイなしって意味。

前回まで

 ディスプレイとケーブルのHDMI規格が合わず、ディスプレイが使えなかった……。

 すべてはRaspberry Pi 4Bにてmicro HDMI type Dに変更されてしまったのが原因。type Aのままならケーブルを流用できて何も問題なかったのに。そう、私は悪くない。

 変換キャップが届くまで、どうにかしてセットアップする方法はないか?

今回

 他のマシンから遠隔操作してセットアップできないか調べた。

 実際にはやらず、手順だけメモる。一部Pi3B+を対象にやる。Pi4Bはまだ触らない。でもPi4Bのつもりで書く。

ヘッドレス

 他のマシンからリモート接続することを「ヘッドレス」と呼ぶらしい。ディスプレイをマシンに接続せず、既存別マシンのディスプレイを使える。

手順

  1. 準備する
    1. リモート操作される側(Pi4B)
    2. リモート操作する側(Pi3B+)
  2. リモート操作にて初期設定する

1. 準備する

1-1. リモート操作される側(Pi4B)

 まずは以下の通りSDカードにRaspbian Busterをインストールする。

 次に以下の設定をする。

  1. Wi-Fi設定する
  2. SSHを有効にする
  3. IPアドレスを下見する
  4. 初回ブートする
  5. IPアドレスを探す

1-1-1. Wi-Fi設定する

  1. Raspbian BusterをインストールしたSDカードを用意する
  2. 稼働するマシンに1をUSB接続するなりして中身をみる
  3. 2の/bootディレクトリ直下に移動する
  4. 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で設定できる。

  1. システムメニュー
  2. 設定
  3. Raspberry Pi の設定
  4. インタフェースタブ
  5. SSH, VNC有効にする
  6. OKボタン押下する

1-1-3. IPアドレスを下見する

 Wi-Fi親機に接続されているマシンのIPアドレスを確認する。

 これは後で接続する予定のRapberry Pi 4B以外の番号を把握するために行う。さもなくば1つずつ確認せねばならず面倒。

 IPアドレスの探し方はいくつかある。私はWi-Fi親機の設定画面から参照した。

  1. Wi-Fi親機の設定画面にアクセスする
    • ブラウザURL欄にて192.168.11.1を入力する(親機によってアドレスが異なる)
  2. DHCP接続中マシンとそのIPの一覧を表示する
  3. それっぽいのをメモしておく

自分の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.1Raspberry Pi 4Bが192.168.11.9/24だったときの例。

1-1-4. 初回ブートする

 Raspberry Pi 4Bを初回ブートする。

 以下でSDカードにRaspbian BusterをインストールしたSDカードを用意する。

 次は以下。

  1. 上記SDカードをPi4BのSDカード挿入口にいれる
  2. 電源を接続する
  3. 数分間待つ

 初回ブートは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. SSHログインする
  2. VNC Viewerをインストールする

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形式を入手してインストールした。数分かかった。

f:id:ytyaru:20191202110808p:plain

f:id:ytyaru:20191202110843p:plain

2. リモート操作にて初期設定する

  1. VNCを有効にする
  2. VNCでログインする
  3. 初期設定(セットアップ)

2-1. VNCを有効にする

 Pi4BのVNCを有効にする。

 SSHログインしたまま、以下の操作をする。

  1. 端末(ターミナル)を起動する
  2. sudo raspi-configコマンドを実行する
  3. 画面に従ってVNCを有効にする
    1. 5. Interfacing Option
    2. P3 VNC
    3. Yes
    4. Ok
  4. Tabキー押下してFinish

 もしディスプレイがあってGUI操作できるなら以下でも可。

  1. システムメニュー
  2. 設定
  3. Raspberry Pi の設定
  4. インターフェイスタブ
  5. SSH, VNC有効にする
  6. OKボタン押下する

2-2. VNCでログインする

 Ri3B+にて。

  1. システムメニュー
  2. インターネット
  3. VNC Viewer
    f:id:ytyaru:20191202111001p:plain
  4. GOT IT
  5. URL欄にIPアドレスを入力する
  6. Countinue
    f:id:ytyaru:20191202111122p:plain
  7. Username, Passwordを入力する(デフォルトはpi, raspberry
    f:id:ytyaru:20191202111131p:plain
  8. 表示される
    f:id:ytyaru:20191202111144p:plain

 これで別マシンから操作できる。なお表示された画像は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さん?