Well it doesnt seem that hard to get it going:
1) Boot the kernel from /boot (Harddisk or flash)
2) Set the root device to /dev/sdX or /dev/mtdblock5 once the kernel has loaded the usb-modules/nand drivers.
Several considerations to this:
a) Booting will be slooooow
, since USB and NAND are rather slow compared to the harddisk interface. We wont boot 50 times a day, so this isnt really important (actually my system has uptimes of several months).
b) well, sort of a), everything modifying the root device on flash will tend to go on slowly (i.e. apt-get update && apt-get upgrade). But as soon as the daemons have loaded themselves into RAM things should go on smoothly.
c) swap: Since all LS'es and relatives are low-spec machines we dont have much RAM and things get swapped out. On the contrary, and out of the same reason one cant run many services on a LS (most often a File Server, a time server, some sort of p2p, rarely mythtv or similiar and a webserver (i'd suggest tinyhttpd for memory-footprints-sake).
As a consequence, swap usage is at 100MB at max.
Thats a dimension which we should consider to be suitable for a flash disk (the integrated wear-leveling mechanisms should make sure the usb stick doesnt get worn out too fast, when comparing the 100MB swap file to an usb stick with 4gb obtainable at every store).
As explained in b) and c) we should try to minimize the stress done to the flash device. In the depicted use-case in c) the big writers are the p2p app and mythtv, which tend to produce huge amounts of data. Its therefore not advised to let them have their working directories on the flash itself.
noatime (fstab) should be used, ramrun enabled in /etc/defaults/, putting some /var directories to RAM.
Which leaves us to do something with /var/log, which is modified quite often. Several solutions exist:
- use a syslog host on another machine for receiving all events
- put /var/log to flash too (that wears your flash, but it being around 100MB too if big, one can consider it)
- put it into the tmpfs (but this costs you very much RAM)
- disable syslogd and klogd (if you are very sure your systems works as expected)
I dont think that the filesystem gets modified that extremely often after doing this so your stick wont get worn out in reasonable time (lets say 3 years). When doing a test run with lm-profiler i only got some few write accesses from mlnet (mldonkey) and smbd (whose data i wouldnt put on an usb-stick/flash anyway) for 10 minutes and some read accesses (which are completely irrelevant for flash memory).
If we use an usb-stick big enough, keep the footprints of our programs low, mount the data direcories of space hoggers (p2p and consorts) on the hdd we should get a system that boots slow but operates fast. But, the more data gets swapped out the slower it gets (but that aint new when using embedded machines,anyway