nano-headless
Tom Gall
tom.gall at linaro.org
Sat Nov 6 13:05:20 UTC 2010
I've put a little time into generating a hyper small footprint linaro
headless image. From UDS the two sizes to try and fit into as I
understand are 64M and 128M installed. So with that in mind, via live
helper I created a headless image where none of the recommended
packages were installed. This brings the installed size of the root fs
down to 165Meg installed (excluding hwpacks)
With a little script-foo which I've created to be part of the
live-helper build I can get the rootfs installed size down to
82,240,000. This is without turning to the usual things to slim things
down like busybox as well as without going through /bin /sbin /usr/bin
/usr/lib /lib and pulling out specific function that isn't needed.
What I have done is gone after the low hanging fruit. That is i18n
locales, documentation, zoneinfo, charmaps and some X11 & firefox
things that obviously aren't needed since those things aren't
installed in headless anyway. All of that gets us down to `125Meg. To
get the next approx 40Meg I have to take out /var/lib/dpkg and
/var/lib/apt. This could make a certain amount of sense for a demo
system running on out NAND flash. This is somewhat problematic however
in so much if you want to use linaro-media-create with hwpacks, well
you need apt to work and that comes with the as mentioned 40 Meg price
tag.
Anyway this seemed to be a good Friday night over a beverage type of
hack to gain a little data just to see the effort required.
All in all I do think this is a reasonable approach to get to a "nano"
sized system that would fit into flash. To get that last mile tho, I
think we'd need to turn to busybox, audit the libs and binaries,
adjust the kernel build such that modules are kept to a minimum and
only function actually needed is built in the kernel as well as
working out the last bit of install via something
linaro-media-create-like so that one could at least get things onto an
SD card without too much hackery for test yet not gain the full 123
meg noted below.
Raw Data:
--------------
du of the 82 Meg system, hwpack not yet installed
4 ./proc
4 ./home
4 ./sys
9784 ./lib
3364 ./sbin
4 ./selinux
12 ./dev
4 ./srv
12 ./root
928 ./var
4 ./tmp
3688 ./bin
61456 ./usr
4 ./opt
2260 ./etc
4 ./mnt
4 ./boot
4 ./media
82240
du of the 125 Meg system (without /var/lib/apt and /var/lib/dpkg
chopped out) hwpack not installed yet
4 ./proc
4 ./home
4 ./sys
9784 ./lib
3364 ./sbin
4 ./selinux
12 ./dev
4 ./srv
12 ./root
44064 ./var
4 ./tmp
3688 ./bin
61456 ./usr
4 ./opt
2260 ./etc
4 ./mnt
4 ./boot
4 ./media
125376 .
du of installed system (based on the 125Meg image) after hwpack
installed and system is booted
4 ./home
4 ./opt
4 ./srv
4 ./mnt
65312 ./usr <--- grew by 4 Meg
3764 ./bin
3444 ./sbin
16 ./root
4 ./tmp
75816 ./var <-- var is ~31 Meg larger after hwpack install!!
4 ./selinux
0 ./sys
4 ./media
2276 ./etc
86524 ./lib <-- lib after hwpack install is ~79 Meg larger!!
10400 ./boot <-- grew by 10 Meg
188 ./dev
16 ./lost+found
0 ./proc
248484 . <-- grew by ~123Meg
For those interested in following in my footsteps, my live helper
maverick config is located in here:
lp:~tom-gall/linaro/live-helper.config.maverick.headless-nano
du of original 165 Meg headless image without recommended packages.
4 ./proc
4 ./home
4 ./sys
852 ./lib/udev
4 ./lib/firmware
508 ./lib/security
148 ./lib/plymouth
200 ./lib/terminfo
40 ./lib/init
4 ./lib/modules
16 ./lib/lsb
9784 ./lib
3364 ./sbin
4 ./selinux
4 ./dev/pts
4 ./dev/shm
12 ./dev
4 ./srv
12 ./root
16 ./var/spool
4 ./var/lock
4 ./var/mail
12 ./var/log
43392 ./var/lib
4 ./var/run
4 ./var/tmp
4 ./var/opt
4 ./var/backups
612 ./var/cache
4 ./var/local
44064 ./var
4 ./tmp
3688 ./bin
34604 ./usr/lib
1580 ./usr/sbin
54756 ./usr/share
4 ./usr/games
4 ./usr/src
10260 ./usr/bin
40 ./usr/include
56 ./usr/local
101308 ./usr
4 ./opt
20 ./etc/udev
64 ./etc/pam.d
8 ./etc/rc5.d
8 ./etc/cron.monthly
36 ./etc/cron.daily
8 ./etc/rc4.d
4 ./etc/profile.d
8 ./etc/rsyslog.d
144 ./etc/console-setup
16 ./etc/skel
68 ./etc/initramfs-tools
8 ./etc/cron.hourly
28 ./etc/modprobe.d
56 ./etc/apt
48 ./etc/security
48 ./etc/default
20 ./etc/apparmor.d
8 ./etc/rc3.d
12 ./etc/kbd
8 ./etc/X11
664 ./etc/ssl
8 ./etc/insserv
4 ./etc/insserv.conf.d
8 ./etc/cron.d
16 ./etc/bash_completion.d
8 ./etc/alternatives
24 ./etc/sysctl.d
32 ./etc/dhcp3
12 ./etc/ld.so.conf.d
28 ./etc/iproute2
12 ./etc/apparmor
8 ./etc/terminfo
16 ./etc/update-motd.d
24 ./etc/dpkg
8 ./etc/rcS.d
4 ./etc/lsb-base
12 ./etc/firefox
8 ./etc/sudoers.d
172 ./etc/init
4 ./etc/opt
8 ./etc/ca-certificates
8 ./etc/rc1.d
36 ./etc/network
8 ./etc/python
8 ./etc/linaro
8 ./etc/rc6.d
8 ./etc/ldap
16 ./etc/logrotate.d
16 ./etc/logcheck
20 ./etc/kernel
8 ./etc/depmod.d
108 ./etc/init.d
8 ./etc/rc0.d
12 ./etc/vim
8 ./etc/rc2.d
8 ./etc/python2.6
12 ./etc/dbus-1
8 ./etc/cron.weekly
2280 ./etc
4 ./mnt
4 ./boot
4 ./media
165248 .
Regards,
Tom
More information about the linaro-dev
mailing list