ジャンル不定の日記です。

Buildrootをやってみた

Orange pi R1のOSをSPIフラッシュに入る16MB未満で作りたいと考えてるが、
コマンド群をまとめる BusyBox は必要と思われる。BusyBoxならinitとかコンソールもまとめて置き換えられる。
BusyBoxのサイト見てたら、uClibcなるものを知った。glibcを置き換えるものでこれも必須ぽい。
さらに、BusyBoxとuClibcでrootfsを作るというBuildrootというものを知ったのでやってみた。

すごく簡単にu-boot linux rootfsを全部作れちゃう。
アプリが何も入ってないディストリビュージョンみたいな感じ。

$ git clone git://git.buildroot.net/buildroot --depth=1
$ make orangepi_r1_defconfig
$ make menuconfig
$ make ARCH=arm CROSS_COMPILE=arm-none-eabi-
これでSD用のimageが出来上がるんでddで書き込むだけ。

menuconfigではとりあえず、
Toolchain --->
 Enable WCHAR support
System configuration --->
 (0000) Root password
 [*] Install timezone info
Target packages --->
 Networking applications --->
  [*] dnsmasq
  [*] dhcp support
  [*] hostapd
    [*] iptables
  [*] openssh
  [*] pppd
 Text editors and viewers --->
  [*] nano
ここだけいじった。
BusyBoxだけでviもどきが使えると思うが、viは使いこなせないのでnanoを選択したが、nanoにWCHAR supportが必要。
ルーター用なんで dnsmasq hostapd iptables pppd openssh を選択した。
RTL8152Bは標準で入るんでeth1は有効になるがwlan0は出てこないんで8189esは別途ビルドが必要そう。
kernelバージョンは標準で5.3.12だったが変更もできそうな感じ。

SDカード用のイメージは標準で60MBになるが、
/boot 10MB
/ 55MB
くらい?
/の使用済みは13MB強だった。

bootはほぼkernelなんで5MBあれば足りそうだが、/もっと削らないとダメな感じ。
というわけで、再度menuconfigを確認したが、削れるものは少ないので大きく減らすのは無理そう・・・
ファイルシステムを圧縮されるやつに代えるしか無いか?
と思ってちょい調べたのだが、圧縮されるファイルシステムは読み込み専用のものが多いみたいで、別の読み書きできるファイルシステムと重ねて使うぽい。

というわけで、次回はその辺を。
Buildrootは超使えた。