HDMIが変更されてケーブルがなかったためヘッドレス化で対応した。
動機
Pi4Bを使いたいが、ディスプレイ接続するためのケーブルがなかった。
対処
他のマシンからPi4Bにネット接続してセットアップする。今回はそのための準備。
背景
Pi4BからHDMIの仕様が変更された。
モデル | HDMI |
---|---|
Pi3B+ | type A |
Pi4B | type D |
前提
構成
[Pi4B]--[SD slot]--[micro SD] | +--[USB 3.0]--[HDD case]--[HDD] | [IEEE] . . . Wi-Fi Router . . . [IEEE] | [Pi3B+] +-----[Display] +-----[Keyboard] +-----[Mouse]
既存PCからPi4Bへネットワークを介して接続する。既存PCのディスプレイやキーボードを使ってPi4Bを操作できる。
手順
1. 準備する
1-1. リモート操作される側(Pi4B)
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アドレスを確認する。
IPアドレスの探し方はいくつかある。私はWi-Fi親機の設定画面から参照した。
- Wi-Fi親機の設定画面にアクセスする
- ブラウザURL欄にて
192.168.11.1
を入力する(親機によってアドレスが異なる)
- ブラウザURL欄にて
- DHCP接続中マシンとそのIPの一覧を表示する
- Pi4BらしきIPアドレスをメモしておく
ラズパイ | MACアドレスのベンダID |
---|---|
Pi3B+ | b8:27:eb |
Pi4B | dc:a6:32 |
自分の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.10/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.10/24
だったときの例。
1-1-4. 初回ブートする
Raspberry Pi 4Bを初回ブートする。
- Raspbian BusterをインストールしたSDカードを用意する
- 1をPi4BのSDカード挿入口に挿す
- 電源を接続する
- 数分間待つ
初回ブートはSDカードの領域を広げる作業を行うため、時間がかかるらしい。
1-1-5. IPアドレスを探す
Raspberry Pi 4BのIPアドレスを探す。このIPを元にして別マシンからSSH接続する。
IPアドレスの探し方はいくつかある。私はWi-Fi親機の設定画面から参照した。下見したときから新たに追加されているIPアドレスがPi4Bと思われる。
以降、Raspberry Pi 4BのIPアドレスが192.168.11.10
だったと仮定して話を進める。
1-2. リモート操作する側(Pi3B+)
Pi4Bは起動したまま、一旦離れる。ここから先は別マシンからPi4Bをリモート操作する。
リモート操作するマシンは何でも良い。ここではPi3B+を使う。
1-2-1. SSHログインする
ssh pi 192.168.11.10
これでPi3B+からPi4Bを操作できるようになった。
1-2-2. VNC Viewerをインストールする
リモート操作するためにVNC Viewerをインストールする。
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でログインする
Pi4BへSSHログインしている端末にて、以下コマンドを実行する。1920x1080
はディスプレイの解像度に合わせる。
vncserver -randr=1920x1080
VNC用ログインアドレスが表示される。(192.168.11.10:1
) 末尾の:1
はディスプレイ番号。
... New desktop is raspberrypi:1 (192.168.11.10:1)
Pi3B+にてVNC Viewer
を起動する。
- システムメニュー
インターネット
VNC Viewer
GOT IT
- URL欄にIPアドレスを入力する(例
192.168.11.10:1
) Countinue
Username
,Password
を入力する(デフォルトはpi
,raspberry
)
- 成功するとPi4Bのデスクトップ画面が表示される
以下参考。
3. リモート接続する
3-1. SSH
既存PCの端末からPi4BのIPアドレスを入力してSSHログインする。
ssh pi@192.168.11.10
詳細は以下。
3-2. VNC
Pi4BにてVNCサーバを起動する。
vncserver -randr=1920x1080
このとき出力されたURL192.168.11.10:1
をメモする。
New desktop is raspberrypi:1 (192.168.11.10:1)
既存PCのVNC ViewerのURL欄に192.168.11.10:1
を入力する。
詳細は以下。