Like I mentioned in my post about hard disk noises, I recently bought a mini-itx board and built a really small computer.


The intent was to replace my more than 7 years-old desktop computer that was begining to misbehave, and to have the new thing replace my linksys router's DNS and DHCP services. The computer that I had before was mainly used as an Asterisk server and also as my SSH portal, and backups were pushed to an external usb disk plugged to it. The new one, I thought, should be doing all the same, plus host the services I mentioned above. The best thing would be for it to replace entirely the linksys router... but that would be for a second phase.

Here's the hardware I bought:

You'll notice I haven't mentioned any RAM in the list. That's because I was lucky enough to have a friend who wanted to get rid of two DDR2 1Gb chips and gave them to me :)

The final result can be seen at the top of the article, with my external usb disk on top of it. It looks nice and its really small, so it can fit in the mid-section, in between the legs of my coffe table. Also, the board itself doesn't need fans, and since I have an external power adapter, I don't need any fan in there at all making it very silent. Finally, since the disks are 5400 RPM, they don't add too much noise to the final result and I don't notice its presence in the living room at all. The case helps with heat dissipation since it has lots of small holes on the top and side panels.

The whole thing cost me around 350$. The disks were as expensive as the mother board + casing + PSU combined (who said storage was cheap?).


Ordering the stuff was overall quite easy, and with the help of price matches, It wasn't that expensive. I've had one bad surprise with the casing, though: in the specs, it said "Supports up to two 2.5 in. disks" but there was only one hard disk bracket (small metal plate with holes in it for screwing a disk in place) included with it, and I've had to order one directly from the manufacturer since I couldn't find it on the online store. The bracket costs 2$ .... plus 17$ for shipping! How ridiculous, it should've been included with the damn casing in the first place.

Another issue was that the Pico-UPS included only one SATA power adapter, and one Molex. But that wasn't too big a problem, since Molex to SATA adapters can be found in pretty much any computer store for 5 bucks.

When placing everything in the casing, placing the SATA data cables was quite a bit of a puzzle because they were too long for my setup. I finally found a way to fit things in nicely: by laying the excedent cable in between the back plane and the RAM, and twisting the cable up, revealing just enough cable to get to the hard disks, which are suspended above the board.


Now the only thing that's missing from this computer is a second network port. It would've been really nice to have a second built-in network adapter, but the board doesn't. So in order to build a router out of this, I'll have to figure out a way to have a NIC in the PCI slot, and to have its RJ-45 jack exposed to the outside. Like I said earlier, I won't do that now.

Installing Debian Squeeze GNU/Linux on this machine was really easy. The Atom-based CPU supports the same instruction set as an i386 system. After copying an install disk on a usb drive, the only trick was to add to the key a driver for the network interface. The driver can be downloaded as a .deb on the page. Once you have it, plug your USB key in another computer, mount the extra partition that was automatically created by the tiny install image (how nice!), copy the .deb in there, and unmount. Now the installer will automagically find the .deb file on your key and load the drivers during installation for being able to install from the net, and it will also install the drivers automatically on the disks with the rest of the system (how nice again!).

I set up software RAID 1 on the disks during installation, with LVM2 partitions on top. LVM makes it really simple to manage partitions for Xen-based virtual servers. Having control over the DNS and DHCP services in a standard Debian system really empowers me to do what I want with my network, and makes it simple to back up the services' configuration. I configure almost everything with Puppet, and will try to get around to configuring everything with it in short to medium terms by integrating and/or creating modules (open source, of course!) for other services like apcupsd and Asterisk.