パーフェクトガイド: Raspberry Pi Zero WHをヘッドレスでセットアップする
つい Raspberry Pi Zero WHを買ってしまいましたので、Pi3に続いてこちらもヘッドレス(モニタ、キーボード、マウス無し)でセットアップしてみたいと思います。
ということで、まずは情報の整理から。
Raspberry Pi Zero WHはコンパクトで、通信インフラとしては WiFiと Bluetoothを標準装備してます。
なので、「WiFiで接続すればええやん」ということになるのですが、家の WiFiルーターは MACアドレスによる接続制限をかけてありますので WiFiで接続するにはまずMACアドレスの入手が必須なわけです。
それと、ヘッドレスで Pi Zero WHを利用するにはリモートデスクトップ接続も必要なのでした。
ということで Windows7を用いて
ちなみに、Raspberry Piのセットアップ(OSのインストール)は
1. SDカードのフォーマット(FAT32)
NOOBSで OSをセットアップするには SDカードをフォーマットする必要があります。
フォーマット自体はツールを使って簡単に行えますが、Raspberry Piのセットアップを繰り返したりする場合にはフォーマットの前にパーティション情報をクリアする必要があります。
1-1. パーティション情報のクリア
Windowsにはパーティションを操作する diskpart というコマンドが用意されています。
このコマンドを管理者権限で実行された「コマンドプロンプト」で実行することになります。
詳しい操作方法はこちらを参考になさってください。
1-2. SDカードのフォーマット
パーティション情報をクリアできたら SDカードを FAT32形式でフォーマットしてください。
Raspberry Piの公式サイトでは
尚、どちらも操作を間違えるとパソコンのドライブのデータが消えますので十分注意なさってください。
2. Raspberry Pi Zero WHの MACアドレスを取得する
Pi Zero WHのパッケージには MACアドレスはおろかマニュアルすら付属していませんでした。
ということで、MACアドレスによる接続制限をかけてある WiFiルーターに接続するにはまずMACアドレスの入手が必須なわけです。
どうやるか?
それはいったん Pi Zero WHを起動して SDカードの FAT32部分に MACアドレスの情報が入ったファイルを書き込むということになります。
2-1. PINN Liteのダウンロードする
PINNは NOOBSの代わりとなる次世代のインストーラーです。これの Lite版を用いて Linuxカーネルを実行させてハードウェア(WiFi)の情報を取得します。
ということで下記ページから PINN liteをダウンロードしてください。
2018/11/29 追記:
2-2. SDカードへ展開する
ZIPファイルの中身をフォーマット済みのSDカードのルートフォルダ(直下)にコピーしてください。
※ 必ず ZIPファイルの中身を SDカードの直下にコピーしてください。アーカイブツールによってはSDカードの直下にフォルダを作成してその中にZIPの中身を展開する場合がありますが、それでは Pi Zero WHの起動に失敗します。
2-3. MACアドレスを取得するために追加ファイルを作成する
SDカードのルートフォルダに下記シェルファイルを作成してください。
pinn_init.sh ← サンプルファイルをダウンロードできます
getmac ← サンプルファイルをダウンロードできます
注1:文字コードは気にしなくていいですが UTF-8のBOM付きはNGです
注2:改行コードは LFでないとダメです (Windowsのメモ帳でこれらのファイルを作ると改行コードは CR+LFになりますので注意してください)
2-4. PINN Liteで起動する
PINN Liteを展開して上記シェルを書き込んだ SDカードをPi Zero WHに挿入して電源を投入してください。
緑のLEDが点滅すれば正常に起動中です。
点滅が止まってから2分ぐらいまって電源を切ってください。(コンセントを抜く)
SDカードを取り出し、Windowsに読み込ませて、SDカードに myipinfo というファイルが作成されていれば MACアドレスの取得成功です。
myipinfoをメモ帳で開いて MACアドレスを確認してください。
2-5. WiFiルータに MACアドレスを登録してアクセス制限を解除する
ついでに、MACアドレス指定でIPアドレスを固定しておくとなにかと便利だと思います
参考:
3. WiFi接続用の設定ファイルを作成する
Raspberry Piの WiFi設定ファイルは "wpa_supplicant.conf" というファイル名です。
インストール時に SDカードにコピーしますので予め作成しておきます。
wpa_supplicant.conf ← サンプルファイルをダウンロードできます
1行目のわけ判らん行は必須です。(これがないとWiFiに接続できませんでした)
ssidと psk(WiFiルーターのパスワード)は適宜書き換えてください。
scan_ssid=1の行は WiFiルーターがステルスSSIDになっている場合に必要です。
network部の行の始まりの空白は「スペース」ではなくて「タブ」です。
注1:文字コードは気にしなくていいですが UTF-8のBOM付きはNGです
注2:改行コードは LFでないとダメです (Windowsのメモ帳でこれらのファイルを作ると改行コードは CR+LFになりますので注意してください)
4. リモートデスクトップ接続ソフトをインストールする
お好きなクライアントソフトをパソコン側にインストールしてください。
私は UltraVNCを利用しました。
5. SSHクライアントソフトのインストール
お好きなクライアントソフトをパソコン側にインストールしてください。
私は TeraTermを利用しました。
6. リモートデスクトップを使用してセットアップ
さてようやくセットアップ(OSインストール)の本番です。
6-1. SDカードをフォーマットする
まず SDカードをフォーマットしてください。(PINNを使って MACアドレスを取得した場合はパーティション情報の削除も必要です)
5-2. NOOBSのダウンロード
次にOSのパッケージ(NOOBS)をダウンロードしてください。
オフィシャルサイトはダウンロードに時間がかかるのでミラーサイトからのダウンロードがお勧めです。
なるべく更新日時が最新のフォルダを開いて NOOBS_v2_x_x.zip というファイルをダウンロードしてください。
6-3. SDカードへ展開する
ZIPファイルの中身をフォーマット済みのSDカードのルートフォルダ(直下)にコピーしてください。
※ 必ず ZIPファイルの中身を SDカードの直下にコピーしてください。アーカイブツールによってはSDカードの直下にフォルダを作成してその中にZIPの中身を展開する場合がありますが、それでは Pi Zero WHの起動に失敗します。
6-4. インストールコマンドの修正
SDカードのルートフォルダにある recovery.cmdline をメモ帳で開いて、インストールコマンドの末尾に vncinstall を追加してください。
6-5. SSHアクセスを有効化する
SDカードのルートフォルダに sshファイルを作成してください。
中身は空でOKです。
このファイルを作成しておくことでセットアップ後の SSHアクセスが有効化されます。
6-6. WiFi設定ファイルのコピー
作成してあった WiFi設定ファイル wpa_supplicant.conf を SDカードのルートフォルダにコピーしてください。
セットアップ時にOSの設定ファイルとして使用されます。
6-7. セットアップを開始する
NOOBSを展開して上記の修正とファイルを書き込んだ SDカードをPi Zero WHに挿入して電源を投入してください。
緑のLEDが点滅すれば正常に起動中です。
点滅が止まってから2分ぐらいでVNCでリモートデスクトップ接続できるようになります。
VNCクライアントソフト(私の場合は UltraVNC Viewer)で Pi Zero WHにIPアドレス指定で接続するとセットアップ画面が表示されます。
もしVNCで接続できない場合は WiFi接続に失敗していますので、WiFiの設定ファイルを見直してください。
セットアップは OSを選んで左上の Insatallボタンを押すだけです。
セットアップは15分ほどかかりますが、途中でユーザーの操作を要求されることはありませんので放置で問題ありません。
セットアップが完了したら Pi Zero WHを再起動してくださいSSHで接続できるようになります。
7. SSHでログインする
IPアドレスを指定して SSHでログインしてください。
初期設定では、ユーザー名は pi 、パスワードは raspberry になっています。
8. セットアップ後のリモートデスクトップ環境の整備
SSHでログインした状態で、VNCの環境設定を行ってください。
参考:
8-1. VNCを有効化する
設定ツール raspi-config を実行して、VNCを有効化してください。
メニューの階層は raspi-config -> Interfaceing Options -> VNC -> Enable です。
8-2. VNCの接続セキュリティ設定を変更する
VNCの標準設定では Windowsからはアクセスできませんので、次のどちらかのコマンドでテキストエディタを起動して設定ファイルに Authentication=VncAuth という1行を追加してください。(もしすでに Authentication=SystemAuth という行があったら書き換えてください)
8-3. VNC接続のためのパスワードを設定する
セキュリティのために VNC接続自体にパスワードの設定が必要です。
次のコマンドでパスワードを設定してください。
8-4. 画面解像度を設定する
モニターを接続していないと 画面の解像度がVGAモード(640x480)になります。
リモートデスクトップの解像度も VGA(640x480)になりますので、設定ツール raspi-config を実行して、デフォルトの解像度を設定してください。
メニューの階層は raspi-config -> Advanced Options -> Resolution -> 解像度の選択 です。
8-5. 再起動する
以上の設定でリモートデスクトップ接続のための準備が完了しました。
次のコマンドで Ri Zero WHを再起動してください。
9. リモートデスクトップ接続で初期設定を行う
Pi Zero WHを再起動すると VNCクライアントソフトでリモートデスクトップ接続できるようになります
リモートデスクトップで接続するとロケール(言語)の設定、デフォルトパスワードの変更、OSのアップデートなど一連の初期設定を促され、改めて再起動してセットアップの完了となります。
以上で Raspberry Pi Zero WHのヘッドレスセットアップが完了です。
作業に滞りがなければ約1時間ほどで、セットアップできると思います。
Pi3に比べるとデスクトップ環境は少しもっさりした動作ですが、これはCPUの性能差(値段の差)なのでこんなものでしょうね。
後でわかったことですが、Pi Zeroは CPUのアーキテクチャが古いので Scratch2は動作しないんだそうです。
(ランタイムとしての Flashが Pi Zeroをサポートしてないということでした)
ということで、まずは情報の整理から。
Raspberry Pi Zero WHはコンパクトで、通信インフラとしては WiFiと Bluetoothを標準装備してます。
なので、「WiFiで接続すればええやん」ということになるのですが、家の WiFiルーターは MACアドレスによる接続制限をかけてありますので WiFiで接続するにはまずMACアドレスの入手が必須なわけです。
それと、ヘッドレスで Pi Zero WHを利用するにはリモートデスクトップ接続も必要なのでした。
ということで Windows7を用いて
- SDカードのフォーマット
- MACアドレスの入手
- WiFi接続用の設定ファイルの作成
- リモートデスクトップ接続ソフトのインストール
- SSHクライアントソフトのインストール
- リモートデスクトップを使用してセットアップ
- SSH接続でログインする
- セットアップ後のリモートデスクトップ環境の整備
- リモートデスクトップ接続で初期設定を行う
ちなみに、Raspberry Piのセットアップ(OSのインストール)は
- OSイメージをSDカードに直接書き込む方法
- NOOBSと呼ばれる FAT32形式のファイルシステムを経由して Raspberry Pi自身にOSイメージを書き込ませる方法
1. SDカードのフォーマット(FAT32)
NOOBSで OSをセットアップするには SDカードをフォーマットする必要があります。
フォーマット自体はツールを使って簡単に行えますが、Raspberry Piのセットアップを繰り返したりする場合にはフォーマットの前にパーティション情報をクリアする必要があります。
1-1. パーティション情報のクリア
Windowsにはパーティションを操作する diskpart というコマンドが用意されています。
このコマンドを管理者権限で実行された「コマンドプロンプト」で実行することになります。
詳しい操作方法はこちらを参考になさってください。
"Raspberry Pi用に使用したSDカードをWindowsで使えるように戻す"
https://qiita.com/tamamius/items/26f37dad9ed711f46533
実行するコマンドはの3つです。
- list disk
- select disk
- clean
1-2. SDカードのフォーマット
パーティション情報をクリアできたら SDカードを FAT32形式でフォーマットしてください。
Raspberry Piの公式サイトでは
"SD Memory Card Formatter - SD Association"を推奨していますが、要するに FAT32形式でフォーマットできればどんなツールでもOKです。
https://www.sdcard.org/downloads/formatter_4/index.html
尚、どちらも操作を間違えるとパソコンのドライブのデータが消えますので十分注意なさってください。
2. Raspberry Pi Zero WHの MACアドレスを取得する
Pi Zero WHのパッケージには MACアドレスはおろかマニュアルすら付属していませんでした。
ということで、MACアドレスによる接続制限をかけてある WiFiルーターに接続するにはまずMACアドレスの入手が必須なわけです。
どうやるか?
それはいったん Pi Zero WHを起動して SDカードの FAT32部分に MACアドレスの情報が入ったファイルを書き込むということになります。
2-1. PINN Liteのダウンロードする
PINNは NOOBSの代わりとなる次世代のインストーラーです。これの Lite版を用いて Linuxカーネルを実行させてハードウェア(WiFi)の情報を取得します。
ということで下記ページから PINN liteをダウンロードしてください。
Download | PINN lite
https://sourceforge.net/projects/pinn/files/pinn-lite.zip/download
2018/11/29 追記:
このブログを書いたころ、PINNのバージョンは 2.8.3でした。
もし最新の PINNでうまくいかない場合は アーカイブ https://sourceforge.net/projects/pinn/files/archive/ から pinn-283.zip をダウンロードしてみてください。
2-2. SDカードへ展開する
ZIPファイルの中身をフォーマット済みのSDカードのルートフォルダ(直下)にコピーしてください。
※ 必ず ZIPファイルの中身を SDカードの直下にコピーしてください。アーカイブツールによってはSDカードの直下にフォルダを作成してその中にZIPの中身を展開する場合がありますが、それでは Pi Zero WHの起動に失敗します。
2-3. MACアドレスを取得するために追加ファイルを作成する
SDカードのルートフォルダに下記シェルファイルを作成してください。
pinn_init.sh ← サンプルファイルをダウンロードできます
#!/bin/sh
cp /tmp/mnt/getmac /tmp
/tmp/getmac &
getmac ← サンプルファイルをダウンロードできます
#!/bin/sh
sleep 20
mount -o remount,rw /mnt
ifconfig -a | grep HWaddr >/mnt/myipinfo
mount -o remount,ro /mnt
注1:文字コードは気にしなくていいですが UTF-8のBOM付きはNGです
注2:改行コードは LFでないとダメです (Windowsのメモ帳でこれらのファイルを作ると改行コードは CR+LFになりますので注意してください)
2-4. PINN Liteで起動する
PINN Liteを展開して上記シェルを書き込んだ SDカードをPi Zero WHに挿入して電源を投入してください。
緑のLEDが点滅すれば正常に起動中です。
点滅が止まってから2分ぐらいまって電源を切ってください。(コンセントを抜く)
SDカードを取り出し、Windowsに読み込ませて、SDカードに myipinfo というファイルが作成されていれば MACアドレスの取得成功です。
myipinfoをメモ帳で開いて MACアドレスを確認してください。
2-5. WiFiルータに MACアドレスを登録してアクセス制限を解除する
ついでに、MACアドレス指定でIPアドレスを固定しておくとなにかと便利だと思います
参考:
"I'm looking for a tool that determine "mac address" before setup. | Issue #501 | raspberrypi/noobs | GitHub"
https://github.com/raspberrypi/noobs/issues/501
3. WiFi接続用の設定ファイルを作成する
Raspberry Piの WiFi設定ファイルは "wpa_supplicant.conf" というファイル名です。
インストール時に SDカードにコピーしますので予め作成しておきます。
wpa_supplicant.conf ← サンプルファイルをダウンロードできます
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
ssid="SSID-XXXXXXXXXXXXX"
scan_ssid=1
psk="WiFi-PASSCODE"
}
1行目のわけ判らん行は必須です。(これがないとWiFiに接続できませんでした)
ssidと psk(WiFiルーターのパスワード)は適宜書き換えてください。
scan_ssid=1の行は WiFiルーターがステルスSSIDになっている場合に必要です。
network部の行の始まりの空白は「スペース」ではなくて「タブ」です。
注1:文字コードは気にしなくていいですが UTF-8のBOM付きはNGです
注2:改行コードは LFでないとダメです (Windowsのメモ帳でこれらのファイルを作ると改行コードは CR+LFになりますので注意してください)
4. リモートデスクトップ接続ソフトをインストールする
お好きなクライアントソフトをパソコン側にインストールしてください。
私は UltraVNCを利用しました。
"「UltraVNC」PCリモート操作ソフト - 窓の杜ライブラリ"
https://forest.watch.impress.co.jp/library/software/ultravnc/
5. SSHクライアントソフトのインストール
お好きなクライアントソフトをパソコン側にインストールしてください。
私は TeraTermを利用しました。
"Tera Term (テラターム) プロジェクト日本語トップページ - OSDN"
https://ja.osdn.net/projects/ttssh2/
6. リモートデスクトップを使用してセットアップ
さてようやくセットアップ(OSインストール)の本番です。
6-1. SDカードをフォーマットする
まず SDカードをフォーマットしてください。(PINNを使って MACアドレスを取得した場合はパーティション情報の削除も必要です)
5-2. NOOBSのダウンロード
次にOSのパッケージ(NOOBS)をダウンロードしてください。
オフィシャルサイトはダウンロードに時間がかかるのでミラーサイトからのダウンロードがお勧めです。
なるべく更新日時が最新のフォルダを開いて NOOBS_v2_x_x.zip というファイルをダウンロードしてください。
"Index of /pub/raspberrypi/NOOBS/images | 北陸先端科学技術大学院大学"
http://ftp.jaist.ac.jp/pub/raspberrypi/NOOBS/images/
6-3. SDカードへ展開する
ZIPファイルの中身をフォーマット済みのSDカードのルートフォルダ(直下)にコピーしてください。
※ 必ず ZIPファイルの中身を SDカードの直下にコピーしてください。アーカイブツールによってはSDカードの直下にフォルダを作成してその中にZIPの中身を展開する場合がありますが、それでは Pi Zero WHの起動に失敗します。
6-4. インストールコマンドの修正
SDカードのルートフォルダにある recovery.cmdline をメモ帳で開いて、インストールコマンドの末尾に vncinstall を追加してください。
6-5. SSHアクセスを有効化する
SDカードのルートフォルダに sshファイルを作成してください。
中身は空でOKです。
このファイルを作成しておくことでセットアップ後の SSHアクセスが有効化されます。
6-6. WiFi設定ファイルのコピー
作成してあった WiFi設定ファイル wpa_supplicant.conf を SDカードのルートフォルダにコピーしてください。
セットアップ時にOSの設定ファイルとして使用されます。
6-7. セットアップを開始する
NOOBSを展開して上記の修正とファイルを書き込んだ SDカードをPi Zero WHに挿入して電源を投入してください。
緑のLEDが点滅すれば正常に起動中です。
点滅が止まってから2分ぐらいでVNCでリモートデスクトップ接続できるようになります。
VNCクライアントソフト(私の場合は UltraVNC Viewer)で Pi Zero WHにIPアドレス指定で接続するとセットアップ画面が表示されます。
もしVNCで接続できない場合は WiFi接続に失敗していますので、WiFiの設定ファイルを見直してください。
セットアップは OSを選んで左上の Insatallボタンを押すだけです。
セットアップは15分ほどかかりますが、途中でユーザーの操作を要求されることはありませんので放置で問題ありません。
セットアップが完了したら Pi Zero WHを再起動してくださいSSHで接続できるようになります。
7. SSHでログインする
IPアドレスを指定して SSHでログインしてください。
初期設定では、ユーザー名は pi 、パスワードは raspberry になっています。
8. セットアップ後のリモートデスクトップ環境の整備
SSHでログインした状態で、VNCの環境設定を行ってください。
参考:
"VNC (Virtual Network Computing) - Raspberry Pi Documentation"
https://www.raspberrypi.org/documentation/remote-access/vnc/
8-1. VNCを有効化する
設定ツール raspi-config を実行して、VNCを有効化してください。
メニューの階層は raspi-config -> Interfaceing Options -> VNC -> Enable です。
sudo raspi-config
8-2. VNCの接続セキュリティ設定を変更する
VNCの標準設定では Windowsからはアクセスできませんので、次のどちらかのコマンドでテキストエディタを起動して設定ファイルに Authentication=VncAuth という1行を追加してください。(もしすでに Authentication=SystemAuth という行があったら書き換えてください)
sudo nano /root/.vnc/config.d/vncserver-x11
sudo vi /root/.vnc/config.d/vncserver-x11
8-3. VNC接続のためのパスワードを設定する
セキュリティのために VNC接続自体にパスワードの設定が必要です。
次のコマンドでパスワードを設定してください。
sudo vncpasswd -service
8-4. 画面解像度を設定する
モニターを接続していないと 画面の解像度がVGAモード(640x480)になります。
リモートデスクトップの解像度も VGA(640x480)になりますので、設定ツール raspi-config を実行して、デフォルトの解像度を設定してください。
メニューの階層は raspi-config -> Advanced Options -> Resolution -> 解像度の選択 です。
sudo raspi-config
8-5. 再起動する
以上の設定でリモートデスクトップ接続のための準備が完了しました。
次のコマンドで Ri Zero WHを再起動してください。
sudo reboot
9. リモートデスクトップ接続で初期設定を行う
Pi Zero WHを再起動すると VNCクライアントソフトでリモートデスクトップ接続できるようになります
リモートデスクトップで接続するとロケール(言語)の設定、デフォルトパスワードの変更、OSのアップデートなど一連の初期設定を促され、改めて再起動してセットアップの完了となります。
以上で Raspberry Pi Zero WHのヘッドレスセットアップが完了です。
作業に滞りがなければ約1時間ほどで、セットアップできると思います。
Pi3に比べるとデスクトップ環境は少しもっさりした動作ですが、これはCPUの性能差(値段の差)なのでこんなものでしょうね。
後でわかったことですが、Pi Zeroは CPUのアーキテクチャが古いので Scratch2は動作しないんだそうです。
(ランタイムとしての Flashが Pi Zeroをサポートしてないということでした)
この記事へのコメント