Raspberry Pi ZeroにArch Linux ARMをインストールする

購入

まず購入。Amazon.co.jpでは3,000円からになっている。なので海外から購入。私が購入したのはPimoroniなのだが、今見ると売ってない。本体が5.50GBP、郵便代が3.33GBPの計8.83GBP。PayPalの手数料込みで1,214JPYになった。リスクがあるのは同じなのでAmazonでは買わない方が良いだろう。

で、ROYAL MAILからAIR MAILで届いたのだが、本体だけではどうにもならない。必要な部品はAmazonで購入した。これが結構掛かる。

* Transcend microSDHCカード 16GB Class10
* iBUFFALO スマートフォン/タブレット用 USB2.0ハブ
* BUFFALO 11n対応 11g/b 無線LAN子機 WLI-UC-GNM2
* ModMyPi Pi Zero Case — ケース for Raspberry Pi Zero
* ELECOM Micro-USB(A-MicroB)ケーブル 0.15m
* HORIC HDMI ミニ 変換アダプタ 7cm シルバー HDMIタイプAメス-HDMIタイプC(mini)オス

合計で5,041円。本体の4倍を超える。単純にRasPiを楽しむのが目的ならRaspberry Pi 3を買ったほうがリーズナブルかも知れない。

Raspberry Pi Zeroは本体の小型化のためにインターフェースが少なく、小さくなっている。ストレージがmicroSDなのは同じだが、ディスプレイ端子はMini HDMIになり、USBもmicro-Bポートが一つ。2つあるように見えるが、一つは電源用なので使えない。なのでキーボードや無線LANアダプタを繋げるためにHUBを購入した。micro-Bポートに直接挿せるスマフォ用だ。もうちょっとケーブルが短いほうが良かった。

インストール

RasPiといえばRaspbianだと思う。Raspbianであれば、Raspberry Pi ZeroをUSBケーブル1本で遊ぶことも出来る。自分も試してみたのだが、親機が動いていないと遊べないのが難点。親機上の仮想マシンと変わらない。なので、使い慣れたArch Linuxをインストールする。RasPiはバージョンによりCPUが異なるので、ARMv6用の手順に従う。

* ARMv6 (BCM2835): Raspberry Pi Model A, A+, B, B+, Zero
* ARMv7 (BCM2836): Raspberry Pi 2 (Model B+ ベース)
* ARMv8 (BCM2837): Raspberry Pi 3

分かれてはいるが、ダウンロードするファイルが異なるだけで手順は一緒だ。難点は、UNIXベースのコンピュータが前提となっていることか。

1. SDカード上にパーティションを2つつくる(100Mと残り)
2. ファイルシステムを作る(FAT32とext4)
3. 最新のファイルをダウンロード
4. ダウンロードしたファイルをSDカードに展開する

必要な作業は上記の通りなので、頑張ればmacOS上でも行けそうに思うが、ext4のファイルシステムを作成するのは面倒なのでVMWare上にArch Linuxを入れて対応した。私の愛機はMacBook Airなのだが、本体のSDカードリーダはArch Linuxから認識できない。なのでUSB接続の外付けカードリーダを使った。

SDカードを挿入し、ディスプレイと接続し、HUBの先に無線LANとキーボードを接続して起動。起動は成功したが、無線LANが繋がらない……

無線LAN

今回使ったWLI-UC-GNM2は、Raspberry Piでの動作報告が多かったので購入したのだが、はじめは認識しなかった。Arch Linuxではダメなのか? と思い、色々調べてみても問題なさそうなので、再起動してみたら無事認識した。理由は不明だが認識したので良しとしている。

無線LANの設定はワイヤレス設定に従えば良し。dhcpcdがインストールされていなかったので、一旦固定IPを振ってネットに接続してインストールした。

ヘッドレスで運用するつもりなので、DHCPでアドレスを振ると実は面倒。そこでAvahiを導入する。sshサービスが公開されていないので設定を加える。

$ cat /etc/avahi/services/ssh.service
<?xml version=”1.0" standalone=’no’?>
<!DOCTYPE service-group SYSTEM “avahi-service.dtd”>

<service-group>
<name replace-wildcards=”yes”>%h</name>

<service>
<type>_ssh._tcp</type>
<port>22</port>
</service>
</service-group>

実はAvahiも最初はうまく動かなかったのだが、何度か再起動しているうちに動くようになった。動くようになった理由は不明。

終わりに

特にRaspberry Pi Zeroだからといった事は無く動くようになったのだが、再起動すると無線LANアダプタを認識しなくなったりする。なので、ドライバあたりを調整する必要があるのかも知れない。あと、Arch Linuxのアップグレードに伴って動かなくなる可能性がある。今回のZeroとは別にRaspberry Pi 2が稼働中なのだが、これが当初は安定しなかった。普段はヘッドレスなのだが、障害時にはディスプレイとキーボードが必要なので、すぐに接続できるようにしている。ヘッドレスの意味があまりないのが玉に瑕…

$ lsmod
Module Size Used by
ccm 8100 2
arc4 1808 2
rt2800usb 17879 0
rt2800lib 79776 1 rt2800usb
rt2x00usb 11874 1 rt2800usb
rt2x00lib 44548 3 rt2x00usb,rt2800lib,rt2800usb
mac80211 570755 3 rt2x00lib,rt2x00usb,rt2800lib
cfg80211 481745 2 mac80211,rt2x00lib
crc_ccitt 1681 1 rt2800lib
bcm2835_gpiomem 3515 0
bcm2835_wdt 3679 0
bcm2835_rng 2103 0
rng_core 7910 1 bcm2835_rng
uio_pdrv_genirq 3322 0
uio 9130 1 uio_pdrv_genirq
sch_fq_codel 8238 5
snd_bcm2835 21199 0
snd_pcm 87729 1 snd_bcm2835
snd_timer 20249 1 snd_pcm
snd 62428 3 snd_bcm2835,snd_timer,snd_pcm
ip_tables 11565 0
x_tables 18073 1 ip_tables
ipv6 345667 24

ちょと調べたのだが、これで良いのかわからなかった。lsusbはRT3070だと言っているのだが……

$ lsusb
Bus 001 Device 003: ID 0411:01ee BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM2 Wireless LAN Adapter [Ralink RT3070]
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

HUB経由でなく無線LANアダプタを接続できると、持ち運びに便利かもしれない。

My Raspberry Pi Zero
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.