もりねずみーのやつ

インターネット上でしか生きられません

Raspberry Pi向けArch Linux ARMインストールの自動化(一部)

はじめに

用途が少し特殊なため、役に立つ人はごく少数かもしれない。

完全に自分が楽するためだけに作ったものなので、有益な情報になるかどうかわからないけど、役に立ってくれる人がいたら、少し嬉しい。

Arch Linux ARM OSインストール用スクリプト

概要

  • Raspberry Pi用のOS(Arch Linux ARM)をセットアップするスクリプト
  • SDカードを挿す→スクリプト実行→SDカードをRaspberry Piに挿し変えるだけ
  • OSイメージは、カレントディレクトリに無ければarchlinuxarm.orgから最新版をダウンロードしてくれる
  • SDカード容量の内、100MBをbootパーティションに、残りの容量全てをrootパーティションに割当て
  • rootパーティションフォーマットはF2FSを使用
  • ネットワーク設定は、systemd-networkdを使用

事前に必要なもの(スクリプト実行環境がArch Linuxの場合)

  • bsdtar
  • dosfs-tools
  • f2fs-tools

ソースコード

https://github.com/morinezumiiii/ArchLinuxARM-installer-for-raspberrypi

使い方

  1. SDカードをPCに挿す。
  2. 以下のようにスクリプトを実行
# cd ArchLinuxARM-installer-for-raspberrypi
# ./install.sh [SDデバイスパス] [IPアドレス] [ゲートウェイ] [DNS]

例:

# ./install.sh /dev/sdX 192.168.0.100 192.168.0.1 192.168.0.1
  1. スクリプトが完了したら、SDカードを抜き、Raspberry Piに挿し、電源を投入。

これで、指定したIPアドレス上のRaspberry PiにSSHでログイン出来る。

経緯

Arch Linux(x86/x86_64)とArch Linux ARMのインストールの違い

  • Arch Linuxx86/x86_64(以下x86版)(archlinux.org)
  • Arch Linux ARM:(以下ARM版)(archlinuxarm.org)

両者は、動作するプラットフォームや、パッケージリポジトリの場所が異なったりするが、同じArch Linux

ARM版はARM系プロセッサを積んだマイコンボード向けに、それぞれのARMアーキテクチャ毎にOSイメージの配布を行っている。

Raspberry Pi向けにおいては、ARMv6向け(Raspberry Pi Model A/B/A+/B+)と、ARMv7向け(Raspberry Pi 2 ModelB)に、配布を行っている。

x86版とRaspberry Pi向けARM版では、OSインストールの手順が異なり、ある程度の環境が作られた状態のものをインストールすることになる。

具体的には、archlinuxarm.orgからOSイメージをダウンロードし、bootパーティション/rootパーティションそれぞれをSDカードにコピーして手持ちのRaspberry Piに挿して電源を入れてあげるだけで、SSHで接続できる状態になる。

細かい設定等は、まずそのOSを立ち上げてからの作業となる。

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

ARM版公式サイトに、インストール手順がご親切に記載されている。

http://archlinuxarm.org/platforms/armv6/raspberry-pi

個人的な事情

私は、県内で日本Androidの会の茨城支部として、毎月勉強会を主催しています。

その際に、Raspberry Piを使ったワークショップ/ハンズオンを行う場合は、前日までに(現時点で)10台のRaspberry Piをセットアップしておく必要があります。

上記の公式インストール手順を、Raspberry Pi台数分を手作業で行っていると、かなりの時間がかかり、当日トラブルで再セットアップを行う必要があったりした場合も、大きな時間ロスとなり、参加者の方々に迷惑をかけてしまうので、今回自分用にスクリプト化しました。

その他設定

OSインストール後のセットアップ作業は、出来るだけ自動化させたいために、settings/setup.sh内に、スクリプトを用意し、それをRaspberry PiのSDカードのルートディレクトリ直下に配布し、SSHログイン後それを実行することでひと通りの必要なパッケージ類をインストールしたり、設定したりするようにしてあります。

Arch使いなら、arch-chrootpacmanを使ってマウントデバイス上のArch Linuxchrootした後、環境構築も出来るので、全部自動化させれるのだけど、その場合、ホスト側のArch LinuxもARMアーキテクチャのものを使って行う必要があるので、断念しました。

ここらへん、もっと改善できるといいのですが。

あと、複数台のSDカードリーダ/ライタを接続して、パラレルでSDカードを焼くというのも考えましたが、接続されたUSBデバイスがどのデバイスで、どのSDカードがどのIPアドレスなのかわからなくなりそうな恐れがあるので、こちらは敢えてやらないようにしました。

おわり

とりあえず、勉強会の準備が、少し、いや、かなり楽になりました。