Hi,

I think I should take some times to document and public the things I wrote on my spare time for embedded devices.

I used to create firmwares for network devices for PCengines Alix, Fonera, ARM misc devices. But for exemples I actually have a 13MB firmware as an initramfs that use 33MB of RAM with the following content :

app-admin/logrotate-3.8.3
app-admin/sudo-1.8.5_p2
app-admin/sysklogd-1.4.2_pre20061230-r2
app-antivirus/clamd-stream-client-1.3
app-arch/bzip2-1.0.6-r3
app-arch/gzip-1.5
app-arch/tar-1.26
app-editors/elvis-2.2.0-r4
app-shells/bash-4.2_p37
dev-libs/libnl-1.1-r3
dev-libs/libnl-3.2.14
dev-libs/libpcre-8.30-r2
dev-libs/lzo-2.06
dev-libs/openssl-1.0.0j
dev-libs/popt-1.16-r1
flx/flash-9999
flx/flx-0.1.34
flx/flx-bash-9999
flx/flx-etc-9999
flx/genrules-9999
flx/init-0.1.34
flx/init-alix-leds-3.0
flx/init-clamav-0.92.1
flx/init-dnsmasq-2.32
flx/init-ntp-4.2
flx/init-openssh-4.5
flx/init-openvpn-2.0.9
flx/init-scripts-0.3.42
flx/init-squid-2.6
flx/init-thttpd-2.25b
flx/init-vixie-cron-3.0.1
flx/init-wdd-0.1.34
flx/monitor-9999
flx/remount-0.1.34
flx/system-conf-0.1.15
flx/update-9999
flx/validate-boot-9999
flx/wdd-0.1.34
mail-mta/exim-4.80.1
net-analyzer/iptraf-ng-1.1.3.1-r1
net-analyzer/net-snmp-5.7.2
net-analyzer/netcat-110-r9
net-analyzer/tcpdump-4.3.0
net-analyzer/traceroute-2.0.18
net-dialup/freeradius-2.2.0
net-dns/dnsmasq-2.63
net-dns/host-20070128-r1
net-dns/libidn-1.25
net-firewall/arptables-0.0.3.4-r2
net-firewall/ebtables-2.0.10.4
net-firewall/iptables-1.4.16.3
net-firewall/rtsp-conntrack-3.3
net-firewall/xtables-addons-1.45
net-libs/libpcap-1.3.0-r1
net-mail/mailbase-1
net-misc/bridge-utils-1.4
net-misc/curl-7.26.0
net-misc/ifenslave-1.1.0-r6
net-misc/iputils-20101006-r2
net-misc/ntp-4.2.6_p5-r1
net-misc/openssh-5.9_p1-r4
net-misc/openvpn-2.2.2
net-misc/stunnel-4.44
net-misc/vconfig-1.9
net-misc/wol-0.7.1
net-proxy/haproxy-1.4.22
net-proxy/squid-3.1.22
net-proxy/squidguard-1.4-r4
net-wireless/hostapd-9999
sys-apps/alix-leds-3.0
sys-apps/attr-2.4.46-r1
sys-apps/baselayout-2.1-r1
sys-apps/busybox-1.1.0
sys-apps/coreutils-8.20
sys-apps/diffutils-3.2
sys-apps/ethtool-3.0
sys-apps/file-5.11
sys-apps/findutils-4.4.2-r1
sys-apps/gawk-4.0.1
sys-apps/grep-2.14
sys-apps/hwids-20130114
sys-apps/i2c-tools-3.0.2
sys-apps/iproute2-3.3.0
sys-apps/less-451
sys-apps/lm_sensors-3.3.1
sys-apps/missing-links-5
sys-apps/module-init-tools-3.16-r2
sys-apps/net-tools-1.60_p20120127084908
sys-apps/pciutils-3.1.10
sys-apps/sed-4.2.1-r1
sys-apps/shadow-4.1.4.3
sys-apps/sysvinit-2.88-r3
sys-apps/util-linux-2.21.2
sys-apps/which-2.20
sys-boot/grub-0.97-r12
sys-devel/binutils-2.22-r1
sys-devel/gcc-4.6.3
sys-devel/libtool-2.4-r1
sys-fs/e2fsprogs-1.42
sys-fs/static-dev-0.1
sys-kernel/gentoo-allin1-3.5.7
sys-libs/cracklib-2.8.19
sys-libs/db-4.8.30
sys-libs/e2fsprogs-libs-1.42
sys-libs/glibc-2.15-r3
sys-libs/libcap-2.22
sys-libs/ncurses-5.9-r2
sys-libs/readline-6.2_p1
sys-libs/zlib-1.2.7
sys-process/procps-3.2.8_p11
sys-process/psmisc-22.16
sys-process/vixie-cron-4.1-r12
www-servers/thttpd-2.26.4-r1

Beber

On 2013-01-18 20:37, Mike Frysinger wrote:
On Thursday 17 January 2013 05:43:09 Kfir Lavi wrote:
I just killed some processes and arrived to bare system 64MB.
Now just sshd, bash and agetty are showing in ps aux as real processes.
The other are kernel processes.
The kernel is pretty lean. Should I expect 64MB as the initial system
memory use?
Can I lower it?

you have to look at where exactly memory is being used

when the kernel boots, it very clearly tells you what it is using as a starting point. in dmesg, look for the line starting with "Available:".

from there, run `ps auxOR`. the VSZ/RSS fields will tell you how much memory each process is using (be aware that some of it is shared e.g. glibc shared
libs).

then look at /proc/meminfo and see what is being used where.

i'm assuming your system is booting off a real rootfs (e.g. not an initramfs)
so usage there shouldn't be a big problem.

with that information, you can see what can be shrunk or what is unavoidable.

FWIW, i built Blackfin systems w/16MiB of RAM fairly easily. but those used uClibc and busybox (and dropbear for ssh). while much of userland was built with -Os, the kernel and uClibc were built with -O2 as the space/optimization
tradeoffs didn't seem worth it.
-mike

Reply via email to