Raspberry Pi へディスプレイをつけずにインストール可能なmicroSDディスクイメージを作成する方法

Raspberry Pi へディスプレイをつけずにインストールする方法はいくつかあります。一番単純なのはSSHを有効化して起動することです。また、Raspberry Pi が2台あると、作業がはかどります。Linuxマシンでもいいのですが、自宅でmacOS、Windowsマシン以外にLinuxマシンも持っているという人はなかなかいないですからね。ただ、Raspberry Pi なら5000円もあれば入手できますし、Zeroだと800円もかかりませんから、SDカードをよく書き込むような人は2台持っていてもおかしくないだろう、と考えています。

ということで、ここではRaspberry Piを使う場合の説明になります。

用意するもの

下記では2台のラズパイが必要な感じで書いてありますが、新しいRaspbianのイメージを書き込んだmicroSDカードが欲しいのなら同じマシンでもいいです。また、Raspberry PiはACアダプタや電源ケーブルも含めて用意が必要ですね。

  • ディスプレイ・キーボード・マウスに接続したイメージ書き込み用Raspberry Pi
  • 16GB microSDカードにインストールされたRaspbian
  • USB microSDアダプター
  • USB WiFiアダプタ(Raspberry Pi 3は不要)
  • 書き込んだイメージを使うRaspberry Pi
  • Raspbianを書き込む8GB以上のmicroSDカード
  • USB WiFiアダプタ(Raspberry Pi 3は不要)

新しいイメージの用意

Etcher by resin.io」を使うとイメージ書き込みが簡単らしいのですが、ここでは原始的にやります。

  1. イメージ書き込み用Raspberry Piを16GB microSDカードにインストールされたRaspbianで起動します。
  2. USB microSDアダプターにRaspbianを書き込む8GB以上のmicroSDカードを挿してイメージ書き込み用Raspberry Piにつけます。
  3. 自動でマウントされるのでアンマウントします。
  4. Download Raspbian for Raspberry Piからイメージファイルをダウンロードして展開してからddコマンドでイメージを書き込みます。
  5. 書き込みが終わったらUSB microSDアダプターを抜きます。

ddコマンドで書き込むときに使うので、デバイスを確認しておきます。次の例だと /dev/sda1、/dev/sda2から数字をのぞいた /dev/sdaがmicroSDカードと対応するデバイスファイルだとわかります。

$ mount | grep "media" | awk '{print $1}'
/dev/sda1
/dev/sda2

アンマウントの方法はいろいろありますが、mountコマンドで確認して、microSDカードの分をumountコマンドでアンマウントすればいいですね。

$ mount | grep "media" | awk '{print $3}'
/media/pi/boot
/media/pi/139ca52c-d45e-44ca-8b8c-12c0af0c9cf5
$ sudo umount /media/pi/boot
$ sudo umount /media/pi/139ca52c-d45e-44ca-8b8c-12c0af0c9cf5

Raspbianからダウンロードするファイルは、通常版ならhttps://downloads.raspberrypi.org/raspbian_latest、Lite版ならhttps://downloads.raspberrypi.org/raspbian_lite_latestです。Webブラウザなりwgetで入手しましょう。ZIPファイルが入手できるはずなので、unzipします。

$ wget -O raspbian.zip https://downloads.raspberrypi.org/raspbian_latest
$ unzip raspbian.zip

2017-03-19時点では、最新版は2017-03-02-raspbian-jessie.imgというファイル名で用意されます。これを/dev/sdaへddコマンドで書き込みます。

$ sudo /bin/dd of=/dev/sda if=2017-03-02-raspbian-jessie.img bs=4M

SSHで接続可能にする

新しいイメージにいくつか設定をします。SSHの自動起動とWiFiの接続設定が必要です。

  1. 先ほど抜いたUSB microSDアダプターを、新しいイメージが書き込まれたmicroSDカードを刺したまま、再度イメージ書き込み用Raspberry Piにつけます。
  2. SSHアクセスができるように、/bootにsshというファイル名で中身が空のファイルを用意
  3. WiFiの設定ファイルであるwpa_supplicant.confファイルを/bootに用意
  4. マウントされたmicroSDカードの領域をアンマウントします。

microSDカードが認識されると、/media/pi/boot がmicroSDカードの/bootになるので、そこへsshファイルを作成します。sudoコマンドで作成する必要があります。

$ sudo touch /media/pi/boot/ssh

viやnanoでwpa_supplicant.confファイルを作成します。sudoコマンドで作成する必要があります。

$ sudo vi /media/pi/boot/ssh

wpa_supplicant.confファイルの内容は次の通り。ssidで指定しているpi(WiFi用のSSID)とpskで指定しているraspberry(WiFi用のパスフレーズ)は実際のものを指定しましょう。

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
  ssid="pi"
  psk="raspberry"
}

書き込んだらアンマウントして、新しいイメージを書き込んだmicroSDカードを抜きます。

$ mount | grep "media" | awk '{print $3}'
/media/pi/boot
/media/pi/139ca52c-d45e-44ca-8b8c-12c0af0c9cf5
$ sudo umount /media/pi/boot
$ sudo umount /media/pi/139ca52c-d45e-44ca-8b8c-12c0af0c9cf5

起動と設定

Raspbianを書き込んだ8GB以上のmicroSDカードを使ってRaspberry Piを起動します。Avahiの機能が使えるマシン(Raspbian、macOSでは標準でインストールされていて、WindowsではiTunesをインストールすると使えるようになるBonjourを使えばいい)からなら、このRaspberry Piは「raspberrypi.local」という名前でアクセスができます。pingで応答があったら、SSHアクセスをpiユーザーでします。パスワードの初期値は「raspberry」です。設定はraspi-configで可能です。

$ ping raspberrypi.local
$ ssh pi@raspberrypi.local
$ sudo raspi-config

補足:ホスト名変更

Raspbianの設定を変更しておかないと、raspberrypi.localの名前のマシンが増えていってアクセスできないので、新しいイメージで起動したRaspberry Piへ接続するマシンのホスト名は別のものにしておく必要があります。そのためには次の作業が必要です。これで再起動すると、rpi001という名前に変わり、Avahiではrpi001.localという名前でアクセスできるようになります。

$ sudo sed -i 's/raspberrypi/rpi001/' /etc/hostname
$ sudo sed -i 's/raspberrypi/rpi001/' /etc/hosts
同じタグの記事: Raspberry Pi
同じタグの記事: Raspbian
同じタグの記事: SDカード
同じカテゴリの記事: Linux