Raspberry Pi 3のヘッドレスセットアップ

みんな大好きラズパイ、の今回はヘッドレスセットアップの方法をメモしておきます。

1年半くらい、SanDiskのSDカードで動かしていたラズパイが、いつのまにか繋がらなくなるという症状を最近起こしていた(再起動したら治る)ので、新しいSDカードを導入したときのセットアップ作業の記録です。

もくじ:

はじめに

今回は簡単な自宅サーバ用にするため、デスクトップ環境は不要なのでヘッドレスでセットアップします。これで電源コードさえ繋いでおけば使えるミニマシンが出来上がります。

必要な準備はこんな感じ。一応今回使ったものも合わせて書いておきます。

  • Raspberry Pi 3 model B, ACアダプタなど一式
  • Raspbian Stretch Lite (2017-11-29-raspbian-stretch-lite.zip)
  • Micro SDカード (Toshiba Class U3, MicroSDHC, 32GB)
  • カードリーダ (エレコム製USB3.0マルチカードリーダー MR3-A006BK)
  • 作業用のWindows PC (Windows 10 Pro)
  • SSHクライアント(TeratermやPuttyなどのソフト、またはcmderなどのLinux環境コンソールエミュレータ)

よくあるセットアップ方法では、HDMIコネクタにモニタを、USBポートにキーボードとマウスを接続していますが、今回はヘッドレスなので不要です。

Raspberry Pi 3

Raspberry Pi 3 (model B)は現在、入手しやすいラインナップのなかで最もスペックが高いモデルですね。数少ない無線LANアダプタ(チップ)が搭載されていることも特徴的なモデルです。

あくまで個人的な感覚で言うなら、パソコンとして使うには非力ですが、常時稼働のLinuxサーバとして自宅で使うにはアリ、というくらいのパワーは出ます。
Webカメラや学習リモコンなどのガジェットとして使う、という用途なら、もっとスペックの低いRPi2やZeroといったモデルも選択肢に入ると思います。

ちょっと注意しなければならないのは、電源周り。Micro USBで給電しますが、要求する電力はUSBパワー機器としては高め。パソコンのコネクタに繋いでもまず間に合いません。電流大きめの充電器を流用するか、ネットで調べて実績のある電源モジュールを使うと良いと思います。

ブート用Micro SDカードの作成

RPi3には内部ストレージが搭載されておらず、SDカードをディスク領域として使います。そのため、SDカードにブート用のイメージを書き込んでおく必要があります。

イメージのダウンロード

OSとしてRaspbianを使いました。他にもRPiで動作するOSは色々ありますが、おそらくRaspbianが一番使いやすく、ネットにも情報が多いです。

公式サイトからダウンロードして下さい。今回はデスクトップ環境は不要なのでLite版を使います。

SDカードの書き込み

公式サイトでWindows向けにお勧めされていたEtcherを使いました。

Etcherとは:

  • Node.js(Electron)製のイメージライタ
  • Github: https://github.com/resin-io/etcher
  • ポータブル版あり。環境を汚さず便利

今回は公式サイト(https://etcher.io/)から、作業用PCの環境に合わせて64bit版ポータブルの実行ファイルをダウンロード。

Micro SDカードをリーダ経由で接続し、Etcherを起動します。以下の3ステップで焼けました。Zipの解凍は不要です。

  1. イメージ(今回はzipファイル)を選ぶ
  2. SDカードを挿したドライブを選ぶ
  3. 実行(管理者権限が必要なので確認ダイアログがポップアップ)し、完了まで待ちます

完了した後は、どうやら気を利かせてアンマウントしてくれているようなのですが、ファイルを追加する必要があるので再度接続します。

SSH接続用の設定

RPi3で初回起動時にSSH(サーバ)を有効にするには、ブート用パーティションに「ssh」という名前のファイルを置いておく必要があります。内容は何でも良く、空でも可。

エクスプローラで作成しても大丈夫ですが、私の場合はcmderを使っているのでマウントされたドライブを指定してtouchするだけでした。

これで作成は終了なので、SDカードを取り出しておきます。

無線LANのセットアップ

作成したSDカードをRPi3に挿入して電源を入れます(電源USBコネクタを接続)。

SSH接続

まずはLANケーブルで有線接続すると、デフォルトでDHCPが有効になっています。IPアドレスを調べてSSH接続します。
アドレスは頑張って調べて下さい。私の場合は自宅でBuffalo製ルータのDHCPサーバ機能を使っているので、ルータの管理画面でDHCPリースを調べました。

初期の接続アカウントはユーザ名:pi、パスワード:raspberryです。

wpa_supplicantの設定

今回使用したアクセスポイントの設定はWPA2-PSK(AES)です。
普通にWifiに接続する場合と同じように、SSID(アクセスポイント名)とパスワードが必要になりますが、今回はwpa_supplicantを使って設定します。

設定ファイルを作成するために、以下のコマンドを実行します。

コマンドを解釈すると、wpa_passphraseコマンドにSSIDとパスワードを指定すると、設定を表す暗号化されたパスワードを含む文字列を返してくるので、それを設定ファイルwpa_supplicant.confに追記する、という意味です。
/etc以下のディレクトリに管理者権限が必要なのでsudoしています。

上記コマンドの結果、設定ファイルは以下のようになっていると思います。wpa_passphraseコマンドの結果として、コメントアウトされた平文のパスワードも出力されてしまうので、気になる場合は削除して下さい。

ちなみにキーの出力結果はハードウェア依存ではないので、他のRPi3や、何となれば他のLinuxマシンにwpa_supplicantパッケージをインストールして作成したキーでも使い回せます。

また、チップやファームの相性で、省電力機能が有効化されて時間経過で接続が切断されることがあるので、下記の設定ファイルも置いておくと有効かもしれません。

IPアドレスの固定

固定アドレスはDHCPクライアント設定(/etc/dhcpcd.conf)を編集して構成します。

インタフェース名はおそらくwlan0で変わらないと思いますが、アドレスは環境に合わせて入力してください。

一旦シャットダウン、有線LANケーブルを外して再度起動すると、無線LANに設定したアドレスでSSH接続できるようになるはずです。

初期設定

一応、ここまでの設定で使い始めることもできますが、追加して実施したほうがいい設定も記載しておきます。

raspi-config

CUIツールとしてraspi-configが用意されているので、必要に応じて設定していきます。

よくやる設定項目はこんな感じ。

  • ログインパスワード
  • ホスト名
  • ロケール、タイムゾーン(Asia/Tokyo)、Wifi Country (JP Japan)
  • ファイルシステムの拡張(Advanced Option -> Expand FileSystem)

スワップ停止

SDカード延命のため、スワップファイルを停止します。

不要なパッケージの削除

ネットでよく言及されているパッケージはこんな感じでしょうか。

今回はLite版だったためか、あまり不要なパッケージはありませんでした。