今日もBuildroot
昨日寝てる間にlighttpdをuhttpdに置き換えてBuildrootし直したのだが、容量が減るどころか微妙に増えた気が・・・
って感じだったのだが、lighttpdは消したのだが/usr/lib以下にlighttpd関連が残ってた。
なので make distclean してからbuildrootし直した。
13MB強になったので4MBほど減ったかな?
と思ったが、8189es入れたら15MB強になった。
まあ、httpdがない状態でも13MB強だったからuhttpdはほとんど消費しないかも。
httpdは入れときたいしこれで行く。
8189es.koは1.5MB近くあるのね・・・
だいぶ記事が別れてるんで、 Buildroot の手順まとめとく。
が、zImage とかは別途調整したいんで rootfs.ext2 だけ使ってる。
BusyBoxの機能は package/busybox/busybox.config で設定できる。
標準で depmod がないが
Buildrootでインストールできるkmodを入れれば代用できると思うがBusyBoxに機能追加のほうが小さいと思う。
menuconfigでは、
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にも要らない機能ありそうだがよくわからないのでそのままにした。
って感じだったのだが、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イメージができちゃう。$ make orangepi_r1_defconfig
$ make menuconfig
$ make ARCH=arm CROSS_COMPILE=arm-none-eabi-
が、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に変更。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
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でできないか?
/としてマウントしてるとこにoverlayはできないと思うから、別のところにoverlayしたrootfsを作ってswich_rootとかpivot_rootとかする必要があるような?
一般的にはやっぱinitrdとかinitramfsを使うようだが、initramfsを作ると1MB程度は消費しちゃいそう。
initrdは本物のrootfsと共通デバイスを使うことはできないか?
どちらも使わずにswich_rootとかpivot_rootでできないか?