前置き
Raspberry Pi Zero W (以下ZeroW)は1300円という値段で購入できる、 Wi-Fiに接続可能な本格的なコンピューターです。 ZeroW には発売元よりRaspbianというDebianベースのLinuxが提供されています。 しかしクアッドコアの Raspberry Pi 3 ならともかく、 シングルの ZeroW で動かすにはたとえGUIが省略されたLITE版だとしても、 ZeroWではやや非力に感じてしまいます。 つまりZeroWをより軽いLinuxで使いたいということで、 私が白羽の矢を立てたのが Alpine Linux (以下Alpine)でした。
AlpineはDocker等で使われる軽量OSの1つで、 そのサイズの小ささが特徴です。 また驚いたことにRaspberry Pi向けのイメージが公開されています。 ただ小さいということは普段使う上で便利な、 いろんなドライバやツールが入ってないということでもあります。 案の定ZeroWにインストールするにあたっていくつかハマりポイントがあり、 いくらかハマった結果 それらを回避してインストールができる簡単な方法を確立できました。 本記事ではそれを紹介します。
手順その1 - イメージの作成
-
Alpine Linux のイメージをダウンロード
ダウンロードページ から Raspberry Pi 向けのイメージをダウンロードします。 ページ下部の RASPBERRY PI セクションにある armhf のラベルが目印です。 以下のコマンドでもダウンロードできます。
$ curl -LO http://dl-cdn.alpinelinux.org/alpine/v3.6/releases/armhf/alpine-rpi-3.6.2-armhf.tar.gz
わずか65MBでダウンロードはあっという間です。
-
ダウンロードしたイメージを展開
ここでは今後の作業の都合上、
zw/
というディレクトリへ展開します。$ mkdir zw $ tar xzf alpine-rpi-3.6.2-armhf.tar.gz -C zw
-
zw/usercfg.txt
を作成これは Alpine のバグで
Can't open /dev/ttyS0
というエラーが繰り返し表示されるのを抑制するために行います。 以下のコマンドで示すようにenable_uart=1
を書きましょう。echo enable_uart=1 >> zw/usercfg.txt
ここで作成したファイルはZeroWのブート時に config.txt から読み込まれます。
-
Wi-Fi ドライバーのインストール
Alpine は小ささを優先しているためか、そのイメージにはZeroWのWi-Fiドライバーが含まれていません。 そのために、そのままのイメージを使ってしまうと LANアダプタの無いZeroWだけではネットワークを使ったセットアップができずに詰みます。 そこで以下のようにして Wi-Fiドライバー をダウンロードし、 ディレクトリ
zw/firmware/brcm
下に配置する必要があります。$ mkdir -p zw/firmware/brcm $ cd zw/firmware/brcm $ curl -LO https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm80211/brcm/brcmfmac43430-sdio.bin $ curl -LO https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm80211/brcm/brcmfmac43430-sdio.txt $ cd ../../..
このディレクトリに置いたファイルは ZeroW で Alpine を起動した際に
/lib/firmware/brcm
へ自動的にコピーされ、 ドライバーとして利用できるという寸法です。 -
microSDカードへイメージをコピー
こうしてできた
zw/
下のファイルとディレクトリをすべて microSD カードのルートディレクトリにそのままコピーします。 microSD カードのフォーマットは FAT32 で、 またパーティションにはブート可能とマークしてある必要があります。フォーマットにはSD Associationの SDメモリカードフォーマッター を使うとトラブルが少ないようです。 特に、購入してきた NOOBS 入りのmicroSDカードを再利用する場合は、 パーティションなどの情報に気をつけてください。 すべてのパーティションを消して1個の大きなパーティションにした上で、 FAT32 フォーマットするのが余計なトラブルを回避できてオススメです。
手順その2 - 起動と初回のセットアップ
-
ZeroW を起動
microSD にファイルとディレクトリを書き込んで準備ができたら、 早速 ZeroW に組み込んで電源を入れてみましょう。 以下の手順にはHDMIモニタとUSBキーボード、 そしてインターネットに繋がる Wi-Fi ネットワークが必須です。
-
ログイン
起動がうまく行けばユーザー名は
root
でパスワードは無し、 もしくは空でログインできます。 -
セットアップを実行
$ setup-alpine
これでセットアップが始まります。 幾つかの質問に答える必要がありますが、 基本的にはエンターキーを押すだけでデフォルトを選択していけば問題ありません。
ただし Wi-Fi 接続を設定する箇所だけは重要です。 デフォルトのインターネット接続に
wlan0
を使うと指定した後に、 アクセスポイントのSSIDとパスワードを聞かれます。 ここだけは慎重に選択・回答してください。 -
起動時に幾つかのサービスを開始・停止するよう設定する
起動時に Wi-Fi に接続できるようにするために、 以下のコマンドで wpa-supplicant を起動するようにしてください。
$ rc-update add wpa-supplicant boot
次にZeroWに存在しないハードウェアクロックをソフトウェアクロックで置き換えます。
$ rc-update add swclock boot $ rc-update del hwclock boot
-
以上の結果をコミット
Alpine では、システムに及ぼした変更は何もしなければ再起動するとすべて失われます。 そこで以下のコマンドでこれまでの変更結果を、 次回以降の起動に反映させましょう。
$ lbu commit -d
-
リブート!
$ reboot
でリブートし、再起動・ログイン後に以下のコマンドで動作を確認してみてください。
$ date $ ifconfig $ iwconfig wlan0
まとめ
以上で ZeroW に Alpine を簡単にインストールできます。
本当ならばこの後 ZeroW を Alpine でどう使うかのほうが ほとんどの人にとってはよっぽど大事なのですが、 この記事では一旦ここまでにしておきます。