My 5W Business Server and Why ARM is the future (but not really the now)

The weather is getting colder.  Some would say I am going to miss my tower server’s room heating capabilities.  Still I cant help looking up at my tiny 5W blinky light server and feeling good about my electric bill.

I cant quite remember what made me venture into the world of ARM for a desktop solution… blind hope I think. I saw the Stats of these Efika MX Smarttop computers and creamed myself, and after a little research into USB NIC’s to make sure my plan would work,  I couldn’t resist buying two of them.

Theres something hugely satisfying about efficiency… i think im attracted to it because im so hugely inefficient myself.. The computational ammount per Watt of these mini-beasts is astounding.. and that led me down the dark road of chasing every last MHz to the point i cracked open some Gentoo and read some serious CPU tech sheets.  Im sure Matt Sealey of Genesi is tutting at my noobishness for thinking Gentoo and not his hours of optimising Ubuntu is the way forward, but i couldn’t control myself.

I hate and love Gentoo as i hate and love Linux… its a whole different end of the spectrum of computer frustration than what Microsoft provides… the answers are there it just takes a LONG time to find them… (The Microsoft way is for the answers to NOT be there but it takes a SHORT time to ignore them!)

And yeah, by long time i mean’t it took me literally six weeks from receipt of Efika to running a custom compiled kernel with Gentoo, iptables firewall and DHCP server!

Here were my setbacks:

1. U-Boot.

As with all things linux… reading reading and more reading eventually led me to find answers about this poorly documented bootloader.  Like a noob i spent a whole day editing the ‘boot.scr’ file with a text editor and pulling my hair out that it was not doing anything.  Looking back i have NO idea why i ignored the HEX header.. i think i thought to myself if it was machine code then WHAT THE FUCK was this plain text script doing here that i can obviously edit.
For those who did the same you need the u-boot tools, specifically the ‘mkimage’ command then run something like this on your plain text boot script:

mkimage -A arm -O linux -a 0 -e 0 -T script -C none -n "EfikaMX Boot" -d mybootscriptHERE boot.scr

2. Initramfs.

This one KILLED me… there’s so much ambiguity surrounding this subject on the internet.. Initrd didn’t help to clarify things either and to start with i was so confused. I learned all about the boot process and to make things worse i was getting Kernel Panic at first but then somehow made it go away with some boot args in the ‘boot.scr’ file such as ‘init=’ etc.  The short of it is that the Kernel DOESNT tell you when it cant read the initramfs it just panics that there is no INIT… For days i couldn’t figure out why the hell my initramfs file wasn’t working.. i would fuck around with the mkimage U-boot header.. i would cpio it again and again to no avail.

Turns out there was some BAD initramfs making guidelines on the internet… in blogs no less!.. Tip.. Read GENTOO’s and no one elses..

My specific falldown was this part: find . -print0 | cpio --null -ov --format=newc | gzip -9 > /boot/my-initramfs.cpio.gz

turns out the -print0 part is pretty damn necessary.. i had followed someone elses guide that left that part out and it fucked my whole initramfs.


More to come…..