The objective is to have a system to run in memory allowing uploading of payloads to the original device booted from. This means that the system can accommodate for any size of file system. While theoretically, the live file system can be resized, this is not a good idea, as it can cause errors and also relies on partitioning utilities being embedded in the final target filesystem, which will unnecessarily bloat the distribution. Instead, by loading a system into memory, we are allowed to write to the entire device, as it is no longer needed for the system’s operation. Erasing the device should never be done with a dd if=/dev/zero spanning the entire device. SD cards use Flash memory with limited write cycles and instead of this, the partition table is all the needs to be zeroed.
Root file system
This is built from Buildroot 2012-05 and compiled using a toolchain that will automatically download itself (the Buildroot system has been patched to reference the correct toolchain).
A custom configuration is used. Please see SVN: (testing/release)/installers/ramdist/build/KR_RAMDIST_CONFIG
Memory offloading mechanism
The Buildroot system is compiled into the kernel as an initrd and decompressed upon execution. This filesystem running in memory allows full access to the SD card and has all the packages that are needed for installing Raspbmc.
Building RAMDISTRIBUTION is easy. On a Debian or Ubuntu system the necessary packages are automatically downloaded and installed for you.
wget http://svn.stmlabs.com/svn/raspbmc/testing/installers/ramdist/build/create_br_installer.sh sudo sh create_br_installer.sh
2.0 – Use a buildroot installer
1.2 – Now use qemu-system-arm rather than QEMU. Produces release and testing images.
1.1 – Using Emdebian Squeeze, not Lenny. Using CDN system to build & configure the target system. Cut down target kernel slightly.
1.0 – Initial version