やってみる

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

Raspbian Buster ヘッドレス化

 HDMIが変更されてケーブルがなかったためヘッドレス化で対応した。

動機

 Pi4Bを使いたいが、ディスプレイ接続するためのケーブルがなかった。

対処

 他のマシンからPi4Bにネット接続してセットアップする。今回はそのための準備。

背景

 Pi4BからHDMIの仕様が変更された。

モデル HDMI
Pi3B+ type A
Pi4B type D

前提

  1. Raspberry Pi 4Bについて
  2. 目的・購入・組立
  3. SD+HDD作成

構成

[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. リモート操作される側(Pi4B)
    2. リモート操作する側(Pi3B+)
  2. リモート操作にて初期設定する
  3. リモート接続する
    1. SSH
    2. VNC

1. 準備する

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

  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アドレスを確認する。

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

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

 MACアドレス中にある先頭6桁のベンダIDで絞り込める。

ラズパイ 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.1Raspberry Pi 4Bが192.168.11.10/24だったときの例。

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

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

  1. Raspbian BusterをインストールしたSDカードを用意する
  2. 1をPi4BのSDカード挿入口に挿す
  3. 電源を接続する
  4. 数分間待つ

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

1-2-1. SSHログインする

ssh pi 192.168.11.10

 これでPi3B+からPi4Bを操作できるようになった。

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でログインする

 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を起動する。

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

 以下参考。

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を入力する。

 詳細は以下。