作ってみた!ラズパイガジェット達はこちら

Raspberry Pi zero W のヘッドレスインストール(キーボードやマウスなしでRaspbianをインストールする方法)

rpi0wncheero インストール(install)

ヘッドレスインストール(Headless Install)とは、Raspberry Piにキーボードやマウス、ディスプレイを繋がずにRaspbian(OS)をインストールする方法です。

Raspberry Pi zero WのようにWi-Fiが搭載されていて、OS側でも比較的簡単な仕組みが用意されていると誰でも楽にセットアップできます。

Raspberry Pi 本体に電源のみを接続し、SDカードにOSイメージを書き込んで、Wi-Fi環境からSSHでログインしセットアップをします。

様々なサイトで紹介されていますが、Wi-Fiの部分を試行錯誤してまとめてみました。環境によって変わる箇所であり、ご参考になればと思います。

用意する物;

 

  • Raspberry Pi Zero W本体(Raspberry Pi Zeroと3ならばWi-Fiが付いています)
  • SDカード(今回はClass10 32GB)
  • RASPBIAN JESSIE WITH DESKTOP(2017-07-05-raspbian-jessie.img)
  • 電源(今回はモバイルバッテリーCheero Power Plus3 mini 5200mAh)
  • 操作するマシン(今回はiMac)

 

今回、電源にモバイルアダプターを使用しました。もちろんAC電源のコンセントで構いません。

写真で見るとこのような構成です。

rpi0wncheero

 

SSHの有効化

なお、現在のRaspbianOSでは、デフォルトではSSHが無効になっています。

初めての起動からSSHを有効にするには以下のように/bootディレクトリに空の”ssh”というファイルを作成すればOKとのこと。(拡張子なしでファイル名がssh)

So we’ve provided a simple mechanism for enabling SSH before an image is booted.

The boot partition on a Pi should be accessible from any machine with an SD card reader, on Windows, Mac, or Linux. If you want to enable SSH, all you need to do is to put a file called ssh in the /boot/ directory. The contents of the file don’t matter: it can contain any text you like, or even nothing at all. When the Pi boots, it looks for this file; if it finds it, it enables SSH and then deletes the file. SSH can still be turned on or off from the Raspberry Pi Configuration application or raspi-config; this is simply an additional way to turn it on if you can’t easily run either of those applications.

A security update for Raspbian PIXEL – Raspberry Pi

SSHファイルの作成

方法1:Macの場合、テキストエディットで新規作成後に何も記入せず、ssh.txtで保存後、ファイルの名前変更で.txtを削除します。

方法2:Macのターミナルからtouchコマンドを利用

touch /Volumes/boot/ssh

SSHファイルが初回起動時にboot直下に存在した場合、SSHを有効にして、その作成した空のSHHファイルを削除するという仕組みです。また、次に説明するWi-Fiの設定ファイルもまた同じような動きで、本来のファイルを置き換えて、作成したファイルは削除することなります。

これが通らないと起動後にネットワークを通じてRaspberry Pi zero Wに入れません。正に手も足も出ない状態になってしまいます。

ヘッドレスインストールなのでモニターで確認できません。どういう仕組みか理解しているとトラブルの対応も分かり易いです。

Wi-Fiの設定ファイルの作成

無線LANにそのまま接続できるようにWi-FiアクセスポイントのSSID及びパスワードを記載した”wpa_supplicant.conf ”を作成します。

 

network={ ssid="YOUR_WIFI_SSID" psk="YOUR_WIFI_PASSWORD" key_mgmt=WPA-PSK }

 

やはり同じようにテキストエディットでタイプした後、wpa_supplicant.conf.txtで一旦は保存してファイル名の変更から.txtを削除します。

Macですからあまり気にしませんが、改行コードはLF、文字エンコーディングはUTF-8です。Macならばテキストエディットで保存するだけです。

 

この”wpa_supplicant.conf ”の中身を説明します。サイトにより様々でWi-Fiに繋がらないことがあったため改めて記述します。

当環境は、一般的なWPA2のAES暗号化方式です。ちなみに使用しているルーターは、NEC製品のAterm WH822Nです。プロバイダはauのコミュファ光になります。

 

以下の記述により、合っているのですが、ここまで書かなくてもWi-Fiには繋がります。

 ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
 update_config=1
 country=JP <- Wi-Fiの国別コード
 network={
 ssid="myhome_ssid" <- 接続する予定のWi-FiのSSID""で括る
 #psk="myhome_passwd" <- 最後に消す
 psk=hogehogehogehogehogehogehogehogehogehogehoge <- 暗号化されたパスワード
 proto=WPA <- 暗号プロトコルWPA(RSNの記載もありましたがWPAで良いでしょう)
 key_mgmt=WPA-PSK <- 暗号キーマネジメント
 pairwise=CCMP <- AESの場合はCCMP
 group=CCMP <- こちらもAESなのでCCMP
 scan_ssid=1 <- SSIDがステルスならば1、デフォルトは0
 }
広告

最低限に必要な項目は、

network={
ssid="myhome_ssid" <- 接続する予定のWi-FiのSSID""で括る
#psk="myhome_passwd" <- 最後に消す
psk=hogehogehogehogehogehogehogehogehogehogehoge <- 暗号化されたパスワード

 

SSIDとパスワードだけです。各項目が分からない場合は、上記の最低限で用意してください。仮に通らなかった場合は何か間違っているか、パラメーターが足りないかも知れません。

 

ただ、私がハマったのが、パスワードが平文の文字では接続できませんでした。そのため、パスフレーズを一旦は256bitの暗号化をする必要があります。

これはRaspbian上のターミナルコマンドで変換できるのですが、他のRaspbian環境か、他のLinux環境がないとコマンドが実行できません。Macにはありません。

 

暗号化方法:Linux環境で以下のコマンドです。

wpa_passphrase "XXXX(SSID)" "hogehoge(PASSWORD)"

 

SSIDもパスフレーズもダブルコーテーションで括ります。

暗号化したキーを記述するにはダブルコーテーションは付けないで、PSK=に続いて記述します。長いのでコピー&ペーストします。

パスフレーズが平文の場合はダブルコーテーションで括る必要があります。(平文で上手くいったことは一度も無かったので、どなたか教えてください)面倒ですがセキュリティ面でも安心です。

Raspbian OSの書き込みと準備

ステップ1 SDカードをフォーマット

ステップ2 EtcherでSDカードに書き込む

※分からない方はリンク先をご覧ください。

ステップ3 空のSSHファイルと”wpa_supplicant.conf ”をコピー

 

2つのファイルをSDカードの/boot直下にコピーします。

ファイルのコピー

/boot直下のファイル一覧

なお、初回起動時、Wi-Fiが繋がらない場合でも、このboot直下の追加した2つのファイルが無くなっていれば、SSHは有効のまま、Wi-Fiの設定ファイルもコピーされたという考えで良いです。その記述が間違っていたか足りないために動作しないと思われます。

また、Wi-Fiの設定ファイル(wpa_supplicant.conf)は何回でも書き換えてトライできます。Macなり母艦にSDカードを挿し、書き換えた.confファイルを同じようにまた配置してあげてください。この時、SSHファイルは要りません。

最終的に以下で問題なく動作しました。(Wi-Fiに自動的に繋がりMacからSSHでアクセスできました)

 

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
ssid="WARPSTAR-XXXXXX"
psk=XXXXXXXXXXXXXXXXXXXXXXX
key_mgmt=WPA-PSK
}

 

ケアレスミスで良くあるのが、余分なスペースを入れてしまうことです。見た目は同じでもTABや改行コードとは違い、空白スペースがあると読み込みが止まります。

空白スペースは無くして作成してください。

以下のキャプチャはCotEditorで不可視を薄いグレーで表示されている例です。

wpa_supplicantのコピー_conf

wpa_supplicant.conf

起動とインストール

SDカードをMacから抜いたら、Raspberry Pi zeo Wへ入れ、電源を繋いで起動させます。

今回はヘッドレスインストールなので進行状況は分かりませんが、緑色のLEDが点滅しますので、それが点灯するまでしばらく待ちます。およそ1分以内です。

MacのターミナルでSSH接続する

準備したファイルに間違いがなければ、Raspberry Pi zero Wは起動してWi-Fiネットワークへ自動的に接続し、SSHも有効になっています。

Macのターミナルから

ssh pi@raspberrypi.local

sshのパスワードを聞かれるので、raspberryと入力してください(画面にはタイプした文字は出ません)

初期値(デフォルト)のIDは、

pi

パスワードは、

raspberry

初期セットアップ

単にSSHで繋がればインストール自体は終わっています。通常通りにセットアップするだけです。

sudo raspi-config 

日本のロケーションに合わせた設定で日本語になります。

これらはヘッドレスインストールではなくても共通なのでこちらの記事でご紹介します。

モニターがないのは不便な面もありますので、SSHで繋がった後は、VNCを有効にしてMacなりえ仮想画面を表示して操作した方が良いかも知れません。ただ、zeroは反応が遅いので、イライラするかも知れません・・・。

 

ポイント接続出来ない場合!

raspberrypi.localが名前解決出来ていないかも知れません。Raspberry Pi zero WのIPアドレスを調べて、@以下を192.168.X.XXのように入力してみてください。IPアドレスの調べ方はいくつかありますがMacAPPの「LanScan」やiPhone/iPadで使える「Fing」が無料でありながら見やすく分かり易く簡単で良かったです。

 

Fing

https://www.fing.io

LanScan

https://debookee.com

 

Wi-Fiに接続できない方が多いのか、公式の会議室に同じような問題の質問があった。

PI ZERO W WIFI ISSUES ON RASPBIAN IN HEADLESS MODE

I’ve received my Zero W yesterday, installed Raspbian Jessie Lite 2016-11-25 version on headless mode. I could not see wifi interface when I type “ifconfig” command. Then I installed the latest 2017-02-16 version of Raspbian Lite. But then the device blinked twice didn’t boot up at all. Thought it was a faulty sd card but I’m using it now on my Rpi2 recalbox installed with no issues.

Am I missing something obvious?

Wi-Fi関係のファイルは主に3つ

  1. wpa_supplicant.conf
  2. /etc/network/interfaces
  3. /etc/dhcpcd. conf

ただ、今回のヘッドレスインストールでは、1のwpa_supplicant.confのみの設定で繋がります。

2のinterfacesは特に触らなくても大丈夫です。

3のdhcpcd.confは固定IPに設定したい場合に書き換えますが、どちらも一度セットアップしてから変更してあげれます。

特に2のinterfacesを説明しているサイトは多いですが、固定IPやゲートウェイの記述はdhcpcd.confに書くことが一般的になっているそうで、敢えて書き換える必要はありません。

/etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
allow-hotplug eth0
iface eth0 inet manual
auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

参考にした主なサイト

Raspberry Pi Zero Wのヘッドレス設定手順
Zero Wを入手しましたので、そのヘッドレス(モニタ・キーボードなし)設定手順を紹介します。基本的には以前紹…

http://www.angelcurio.com/raspberrypi/index.php?Raspberry%20Pi%2F無線LAN%2Fその1-とりあえずつないでみる実験

Raspberry Pi, PiZero, Raspbian Jessie, Networking and WiFi Setup – Rants & Raves – The Blog!
Raspbian 8.0 (jessie)で無線LANを使う - Qiita
無線LANを使う方法、調べればいろいろと出てくるのですが、RaspbianのOSバージョンで設定方法が異なるようです。 Raspbian 8.0 jessieの場合について、自分のメモも含めて書いていきます。 # 環境 + R...
wpa_supplicant.conf(5) - NetBSD Manual Pages
新・OS X ハッキング!(95) あのデバイスのIPアドレスを調べるには
今回は、OS XおよびiOSデバイスを対象に、自宅LANにおけるIPアドレス管理術を紹介したい。PCにスマートフォン、タブレットのみならずテレビやBDレコーダーなど、年々増えるネットワーク対応機器もこれでスマートに管理できるはずだ。
https://www.raspberrypi.org/forums/viewtopic.php?&t=42670
SSH接続エラー回避方法:.ssh/known_hostsから特定のホストを削除する/削除しないで対処する3つの方法 - Qiita
ssh接続エラー(ワーニング)になり接続できないことがある。 * エラー原因のknown_hostsの設定削除する方法 * 手軽にエラーを無視する方法 * エラーとならないようにサーバ側を設定する方法 について記載する。 **ただし...

 

おまけ

Wi-Fiのモジュールはは省電力で自動的に動作しています。多少はスキャンに影響が出る場合もあるかも知れません。省電力でなくすコマンドは以下です。

sudo iw dev wlan0 set power_save off

>>raspi-configの説明に続く