changeset 1030:81003c9f31cb

Add a new FAQ: how to get a writeable root filesystem.
author Rob Landley <rob@landley.net>
date Wed, 07 Apr 2010 16:39:41 -0500
parents edf0d611a8ba
children 425fc32f43a3
files www/FAQ.html
diffstat 1 files changed, 47 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/www/FAQ.html	Wed Apr 07 15:50:03 2010 -0500
+++ b/www/FAQ.html	Wed Apr 07 16:39:41 2010 -0500
@@ -5,11 +5,13 @@
 <ul>
 <li><p><a href=#where_start>Q: Where do I start?</a></p></li>
 
+<li><p><a href=#add_package>Q: How do I add $PACKAGE to my system image's root filesystem?</a></p></li>
+
 <li><p><a href=#ubuntu_mispackaged_qemu>Q: ./run-emulator.sh says qemu-system-mips isn't found, but I installed qemu.  Why isn't this working?</a></p></li>
 
 <li><p><a href=#case_sensitive_patch>Q: I added my uClibc patch to sources/patches but it didn't do anything, what's wrong?</a></p></li>
 
-<li><p><a href=#package_breaks>Q: Why did packate build $NAME die because it couldn't find $PREREQUISITE, even though it's installed?</a></p></li>
+<li><p><a href=#package_breaks>Q: Why did package build $NAME die because it couldn't find $PREREQUISITE, even though it's installed?</a></p></li>
 </ul>
 
 <a name=where_start /><h2>Q: Where do I start?</h2>
@@ -55,20 +57,24 @@
 <p>Go to the <a href=downloads>downloads directory</a> and grab the highest
 numbered release tarball, extract it, and run <b>./build.sh</b> to list
 the available targets.  The run <b>./build.sh $TARGET</b> to compile
-the one you like.  The results are in the "build> directory.</p>
+the one you like.  The results wind up in the "build" directory.</p>
 
 <p>The build scripts are written in bash, and fairly extensively commented.
 All the scripts at the top level are designed to be run directly, and
 build.sh is just a wrapper script that calls them in order.  The less commonly
 used scripts in <b>sources/more</b> are also designed to be run directly.</p>
 
-<p>Go to the <a href=/ht/firmware>mercurial archive</a> to grab the latest
-development version out of source control.  If you don't want to use mercurial,
-you can grab a <a href=/hg/firmware/archive/tip.tar.bz2>tarball</a> of the
-current code at any time.</p>
+<p>A large number of variables can be set to configure the build, either
+by modifying the file "config" (which documents them all) or by exporting
+them as environment variables.</p>
+
+<p>To grab the latest development version of the build scripts out of the
+source control system, go to the <a href=/ht/firmware>mercurial archive</a>.
+If you don't want to install mercurial, you can grab a
+<a href=/hg/firmware/archive/tip.tar.bz2>tarball</a> of the current code at
+any time.</p>
 </li>
 
-
 </ul>
 
 <p>For the first two, the <a href=downloads/binaries>downloads/binaries
@@ -84,7 +90,41 @@
 <p>If all else fails, look at the pretty
 <a href=screenshots>screenshots</a>.</p>
 
+<a name=add_package /><h2>Q: How do I add $PACKAGE to my system image's root filesystem?</h2>
 
+<p>A: The easy way is to build a new system image with a writeable root
+filesystem and enough extra space to install your package in.</p>
+
+<p>FWL builds squashfs images by default, and the prebuilt binary tarballs in
+the downloads/binaries directory are built with the default values.  Squashfs
+is a read-only compressed filesystem, which means it's pretty durable (you
+never need to fsck it), but also a bit limiting.  The dev-environment.sh
+script attaches a 2 gigabyte ext2 image to /dev/hdb (which is mounted on
+/home) so you always have writeable space to build stuff in, but that doesn't
+let you modify the root filesystem on /dev/hda: you can't install packages
+you build into /bin and such on a read-only root filesystem.</p>
+
+<p>The "SYSIMAGE_TYPE" and "SYSIMAGE_HDA_MEGS" config entries let you change
+the default system image type generated by the system-image.sh script.  You
+can edit the file "config" or specify them as environment variables, ala:</p>
+
+<blockquote><pre>
+SYSIMAGE_TYPE=ext2 SYSIMAGE_HDA_MEGS=2048 ./build.sh $TARGET
+</pre></blockquote>
+
+<p>That creates a 2 gigabyte ext2 image, which you can boot into and install
+packages natively under, using the "./run-from-build.sh $TARGET" script.
+If you've already built a system image, you can repackage the existing root
+filesystem by just running system-image.sh (instead of the whole build.sh).
+As always, your new system image is created in the "build" subdirectory.</p>
+
+<p>Note: since this is a writeable image, you'll have to fsck it.  You can
+also use "tune2fs -j" to turn it into an ext3 image.</p>
+
+<p>(The "hard way" to go with the above "easy way" is to cross compile the
+additional package and add it to the build/root-filesystem-$TARGET directory
+so system-image.sh packages it up into the squashfs.  You're on your own if
+you want to do that, it's not recommended.  Native building is much easier.)</p>
 
 <a name=ubuntu_mispackaged_qemu /><h2>Q: ./run-emulator.sh says qemu-system-$TARGET isn't found, but I installed the qemu package and the executable "qemu" is there.  Why isn't this working?</h2>