春雨日記 about me tags

未だにARMv6サポートがあるディストリは限られてきています.今回は,Alpine Linuxを使用してみました.

Linux on ARMv6

ラズパイがあるからと胡座をかいていられたのは過去の話,今はArchLinux ARMのサポートすら無くなり,大きいところでRaspbianとAlpine Linuxぐらいになってしまいました.

まあ,v6を諦めればv5対応でdebianとかいくつかありますが,vfpを捨てるのは大変もったいないというところで,実は古いArchを起動する記事を書いた後Raspbianをメインで使っていました.

しかし,byobuでhtopを開いただけでLoad Averageが1を超えてしまったりと,現代的なソフトウェアではもはや厳しさを感じていたため,第二の選択肢である(軽いと評判な)Alpine Linuxを試してみようという次第です.

ちなみにRaspbian on G-Clusterは結構快適で,普通にdebootstrapで入れるとラズパイ関係のソフトウェアも入らない事からほぼピュアなv6対応debianとして使う事が出来ました.軽い作業のみならモダンソフトウェアにあやかれるのでおすすめです.

Alpine Linuxのインストール

で,Archならpacstrap,debianならdebootstrapなど,各種ディストリにはrootfsを構成してくれるツールがあるとばかり思って居ましたが,Alpineはぱっと見でわかりません.

普通にPCにインストールしてみた所,setup-alpineなるコマンドを使ってインストールしましたが,肝心な所は起動ディスクをコピーしてるだけみたいです.

RAMディスクメインで動作するディスクレスモードはnandデバイス的に有り難いですが,どう考えてもramが足りないので普通に入れてみます.

*まだよく知らないので変なこと書いてたらすいません.

ホストマシンはUbuntuでやります.

1. 準備

セットアップ時に必要なパッケージを入れます.

1
sudo apt install qemu-user-static binfmt-support libarchive-tools

https://www.alpinelinux.org/downloads/ よりarmhf用の「MINI ROOT FILESYSTEM」をダウンロードします.

1
wget https://dl-cdn.alpinelinux.org/alpine/v3.16/releases/armhf/alpine-minirootfs-3.16.0-armhf.tar.gz

なんと2.5MB,凄すぎる….

最後に起動用USBメモリなどを適当にパーティショニングし,/mntにマウントします.

これで準備はOK

2. インストール

/mntに展開します.

1
sudo bsdtar -xpf alpine-minirootfs-3.16.0-armhf.tar.gz -C /mnt/

一瞬です笑

binfmtサポートがあるので異なるアーキテクチャでもchrootできます.

1
chroot /mnt/ ash

DNSを設定

1
echo 'nameserver 1.1.1.1' > /etc/resolv.conf

ベースシステム(OpenRCなど)のインストール

1
2
3
4
5
apk update
apk add alpine-base
# 好きな物もついでに
apk add nano
apk add dhcpcd #無いと困る

システムを設定

1
setup-alpine

ネットワーク設定とマウント系は全部noneで行きます.

1
nano /etc/inittab

ttyS0のコメントアウトを外す(これをやらないとログインできない)

これでOKです.

必要ならばカーネルモジュール達をコピーした後,setup時に起動したsshdとかを全部killしてumountします.

ついでにblkidも忘れずに.

あとは前回の記事を見ながら起動します.

起動

正直合ってるか分からないんですが,とりあえず動いてくれました.

2.5MBのrootfsがいつの間にか77MBになってますがまあヨシ…

init.dみたいなのは本当に数年ぶりというか,大体7年ぶりなのでなんか泣けてきますね…

終わりに

77MBという小ささに収まったのでNAND起動をやりたいものです.