Ubuntu – Running Ubuntu Server from a USB key / thumb drive (being mindful of flash’s write limitations)

nasserverusb-drive

Having become disillusioned with hacking Buffalo NAS devices, I've decided to roll my own home server. After some research, I have settled on an HP Proliant Microserver with Ubuntu Server and a ZFS RAID-Z array for data.

I settled on this configuration after trying and regretfully rejecting FreeNAS because the Logitech Media Server (LMS) software isn't available on the AMD64 flavour of this platform and because I think Debian/Ubuntu server is a better future-proof platform. I considered Open Media Vault, but concluded that it isn't quite yet ready for my purposes.

That said, FreeNAS does include the option to run itself off a 2GB+ flash device like USB key or thumb drive. Apparently FreeNAS is mindful of the write limitations of flash devices and so creates virtual disks for running the OS, writing only the required configuration information back to flash. This would give me an extra data drive slot.

Q: Can Ubuntu Server be configured sensibly to run off a flash device such as a USB key/thumb drive? If so, how? The write limitations of flash should be accounted for.

Best Answer

There are two options: Roll your own ramdisk or use Debian Live

Roll-your-own is faster to set up, but harder to maintain and update. Debian Live is slower to set up, but more robust and reliable in the long run.

Roll your own ramdisk by using the instructions in this forum thread: http://ubuntuforums.org/archive/index.php/t-1848440.html

Debian Live http://www.debian.org/devel/debian-live is the most robust project to create compressed, live, RAM-based Debian or Ubuntu system, including server systems. Live uses the standard kernel and packages.

The website has extensive documentation and examples.

First, document all the presets you want in the new server. Live build cannot copy your existing server environment - you must do that manually. Document all your packages (beyond Ubuntu-standard), customized config files, users, interfaces, networks settings, upstart jobs. If you have kept a log, this is where it will pay off.

In a non-server, network-connected environment (like a desktop or laptop), install the live-build and live-tools packages. Live-build will create a set of config hook dirs to copy all your customizations into. Then it will create a bootable squashfs image of the complete system. Retain the config hooks; don't clean them - there's always another change to make!

Copy the image to a USB stick, and boot from it. When you

You can try live-build with zero customizations, and it will give you a nice, usable vanilla system.