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

今日もBuildroot

昨日寝てる間にlighttpdをuhttpdに置き換えてBuildrootし直したのだが、容量が減るどころか微妙に増えた気が・・・
って感じだったのだが、lighttpdは消したのだが/usr/lib以下にlighttpd関連が残ってた。
なので make distclean してからbuildrootし直した。
13MB強になったので4MBほど減ったかな?
と思ったが、8189es入れたら15MB強になった。
まあ、httpdがない状態でも13MB強だったからuhttpdはほとんど消費しないかも。
httpdは入れときたいしこれで行く。
8189es.koは1.5MB近くあるのね・・・

だいぶ記事が別れてるんで、 Buildroot の手順まとめとく。

$ git clone git://git.buildroot.net/buildroot --depth=1
$ make orangepi_r1_defconfig
$ make menuconfig
$ make ARCH=arm CROSS_COMPILE=arm-none-eabi-
これで Orange pi R1 用のOSイメージができちゃう。
が、zImage とかは別途調整したいんで  rootfs.ext2 だけ使ってる。

BusyBoxの機能は package/busybox/busybox.config で設定できる。
標準で depmod がないが
# CONFIG_DEPMOD is not set

CONFIG_DEPMOD=y
に代えれば depmod できるようになる。
Buildrootでインストールできるkmodを入れれば代用できると思うがBusyBoxに機能追加のほうが小さいと思う。

menuconfigでは、
Toolchain  --->
    Custom kernel headers series (5.4.x)
    [*] Enable WCHAR support
System configuration  --->
    [*] Enable root login with password
        (0000) Root password
Kernel  --->
    [*] Linux Kernel
        Kernel version (Custom version)  --->
            (5.4.12) Kernel version
Target packages  --->
    Networking applications  --->
        [*] dnsmasq
            [ ]   tftp support
        [*] hostapd
        [*] nftables
        [*] openssh
        [*] pppd
        [*] uhttpd
    Shell and utilities  --->
        [*] sudo
    Text editors and viewers  --->
        [*] nano
こんな感じで、rootパスワードの設定と、KErnelを5.4.12に変更。
5.4.xにした場合はCustom kernel headers series (5.4.x)にしないと途中でエラー落ちする。
nanoをインストールするのにEnable WCHAR supportが必要。
パッケージは、
dnsmasq hostapd nftables openssh pppd uhttpd sudo nano
を入れた。
dnsmasqのtftpdは明らかに要らないんで消した。
hostapdにも要らない機能ありそうだがよくわからないのでそのままにした。

rootfsのoverlayを考えてるが、やっぱ簡単ではない感じ・・・
/としてマウントしてるとこにoverlayはできないと思うから、別のところにoverlayしたrootfsを作ってswich_rootとかpivot_rootとかする必要があるような?
一般的にはやっぱinitrdとかinitramfsを使うようだが、initramfsを作ると1MB程度は消費しちゃいそう。
initrdは本物のrootfsと共通デバイスを使うことはできないか?
どちらも使わずにswich_rootとかpivot_rootでできないか?