diff www/news.html @ 388:3eeb77934265

Add project summary page to website, moving news to its own page.
author Rob Landley <rob@landley.net>
date Tue, 12 Aug 2008 18:53:09 -0500
parents
children f2b7db2e4315
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/news.html	Tue Aug 12 18:53:09 2008 -0500
@@ -0,0 +1,240 @@
+<!--#include file="header.html" -->
+<b><h1>News</h1></b>
+
+<h2>August 6, 2008</h2>
+<p><a href=downloads/firmware-0.9.0.tar.bz2>Version 0.9.0</a> is out
+(<a href=http://landley.net/hg/firmware/shortlog/378>changeset 378</a>)
+and can rebuild itself under itself.  (The packaging step still requires User
+Mode Linux to create ext2 images, which only works on x86 and x86-64 hosts.
+The next release should replace that with something more portable.)
+The root filesystem is now based on BusyBox 1.11.1 (plus a few bug fixes).</p>
+
+<p>The prebuilt binary images have been moved into their own
+<a href=downloads/binaries>binaries</a> directory.
+The prebuilt binary <a href=downloads/binaries/cross-compiler>cross
+compilers</a> are statically linked against uClibc for better portability.
+Updated the <a href=downloads/README>README</a> to better describe the
+contents of the <a href=downloads/binaries/system-image>system-image
+tarballs</a>.</p>
+
+<p>The forkbomb.sh script can now take a number of parallel targets to
+launch, for example "./forkbomb.sh --fork 3".  (The resulting display is kind
+of horrible but the out-$ARCH.txt files are still legible.)  Leaving off the
+number still builds all targets in parallel, with the original display.</p>
+
+<p>The include.sh script was reorganized so that interesting environment
+variables the user might want to export for themselves are set near the top
+of the script.  Currently this includes:</p>
+
+<ul>
+<li><p><b>BUILD_SHORT</b> - Makes the mini-native.sh stage skip building
+development tools.  The resulting mini-native root filesystem contains uClibc
+and busybox, but nothing else.  (Export "BUILD_SHORT=headers" to put back the
+toolchain headers for use by another compiler, such as tinycc.)</p>
+
+<li><p><b>BUILD_STATIC</b> - Tell cross-compiler.sh to create static
+binaries, for a more portable cross compiler toolchain.  (If you want them
+linked against uClibc, build a mini-native for your host, chroot into it, and
+then rebuild under that.)</li>
+
+<li><p><b>PREFERRED_MIRROR</b> - Tell download.sh to fetch packages from a
+non-default location (falling back to the standard mirror list if it can't get
+one from there).</p></li>
+
+<li><p><b>RECORD_COMMANDS</b> - Record a list of all command lines used during
+each build stage log files named "cmdlines.$STAGE.$PACKAGE" under the build
+directory.  Each file can be turned into a list of the command names used via
+"awk '{print $1}' build/cmdlines* | sort -u".  The script
+sources/toys/report_recorded_commands.sh gives a report of all commands
+used by each package after a call to "RECORD_COMMANDS=1 ./forkbomb.sh".
+(This is an easy way to find out exactly what environmental dependencies a
+package needs to build, or at least what it uses out of $PATH).</p></li>
+</ul>
+
+<p>Updated documentation is in progress...</p>
+
+<h2>June 6, 2008</h2>
+<p><a href=downloads/firmware-0.4.0.tar.bz2>Version 0.4.0</a> is out
+(<a href=http://landley.net/hg/firmware/shortlog/345>changeset 345</a>),
+with kernel 2.6.25.4 and the "distcc trick" working out of the box.</p>
+
+<p>The distcc trick accelerates a native build by calling out to the
+cross compiler.  To use it, download the appropriate cross-compiler-$ARCH and
+system-image-$ARCH tarballs, run the "run-with-distcc.sh" from the system image
+directory with the path to the cross compiler directory as its first argument.
+(You need to have distcc installed on the host system.)</p>
+
+<p>After building from source, the cross-compiler and system-image directories
+remain in the build directory.  The "emulator-build.sh" runs these with
+distcc acceration set up.  The script "smoketest.sh" is a wrapper
+around emulator-build.sh which feeds a script into qemu's stdin to compile
+and run a multi-threaded "hello world" under the emulator, using distcc and
+the cross compiler.</p>
+
+<p>If smoketest.sh works for a platform, it means a lot of stuff worked to get
+that far.  The cross compiler worked to build the system, and the emulated
+system booted so QEMU, the uClibc config, and the kernel config agreed.
+The emulated system has a working virtual hard drive and serial port, and for
+distcc to work it has a working virtual network connection.  Running "make"
+would also require a working realtime clock.</p>
+
+<p>The seven commands missing in order to run the FWL build under itself
+are bzip2, sort, diff, wget, install, od, and find.  (The busybox versions,
+where available, had a bug, and they're not in toybox yet.)  I'm trying to
+get those in for the next release in September.</p>
+
+<p>Sorry I missed a release back in April.  Shouldn't happen again.</p>
+
+<h2>January 29, 2008</h2>
+<p><a href=downloads/firmware-0.3.1.tar.bz2>Version 0.3.1</a> is out
+(<a href=http://landley.net/hg/firmware/shortlog/275>changeset 275</a>), with
+kernel 2.6.24.  The <a href=downloads/images>images</a>
+are now tarballs each containing the ext2, zImage, and run script files.
+The run scripts now run qemu-setup.sh by default so /proc, /sys, /dev
+and the virtual network are initialized, and the default shell is busybox
+ash (so cursor keys and history work).</p>
+
+<p>Sparc is still broken (tracked it down to a dynamic linking bug, I think,
+haven't fixed it yet) and m68k is failing to build with an internal compiler
+error (next release I should upgrade the compiler).  All the other targets
+have a working virtual network, and all but powerpc exit qemu when you
+exit the PID 1 command shell.</p>
+
+<p>Building on an x86-64 host< should no longer be insanely slow (the
+gcc-min-heapsize arguments that allow 32-bit hosts to build in
+128 megs of ram do very impolite things to 64-bit hosts), and the resulting
+x86-64 cross compiler should now be properly relocatable.</p>
+
+<p>Better build dependency tracking: the host-tools script is now
+populating a single directory with all the commands needed by the build, and
+restricting $PATH to that directory (so it can't accidentally call any
+commands that aren't explicitly listed).  It's building toybox and busybox to
+provide most of these commands (the remaining ones are listed towards the end
+of include.sh), and creating symlinks to the remaining ones out
+of the original $PATH.  This allows it to build on a wider range of host
+distributions.</p>
+
+<h2>November 2, 2007</h2>
+<p><a href=downloads/firmware-0.3.0.tar.bz2>Version 0.3.0</a> is out
+(changeset 242), with kernel 2.6.23.  PowerPC finally works under
+qemu (network and everything), and it's building a m68k target
+(although I have no emulator to run that).  That means there are
+ten targets, of which eight run under qemu.  (Sparc is still
+broken, let me know if anybody actually cares.)</p>
+
+<p>The new "./forkbomb.sh --fork" script builds all the targets in
+parallel, or use --nofork if you haven't got the memory for that
+(and --watch to watch and existing build if you ctrl-c out of
+the display before it's done).</p>
+
+<p>The build is now smarter about extracting only one copy of the
+source code (in build/sources) and re-using it for multiple builds,
+building out of tree (via cp -rs to create a tree full of symlinks
+so the package doesn't need native out-of-tree support).</p>
+
+<h2>September 2, 2007</h2>
+<p>Added <a href=new_platform.html>a porting guide</a>.  I'm working on
+m68k, ppc, big endian arm, and maybe blackfin targets for the next release,
+and thought other people might be interested in the process.  (The vast
+majority of it is fiddly debugging.  These are the other steps.)</p>
+
+<h2>June 27, 2007</h2>
+<p><a href=downloads/firmware-0.2.2.tar.bz2>Version 0.2.2</a> is out
+(changeset 185).  Using uClibc 0.9.29 release, several small bugfixes,
+new mips big-endian config, actually work when /bin/sh->dash (mostly
+by explicitly saying /bin/bash everywhere), automatically detect
+the number of CPUs in the machine to feed -j to make, and better
+diagnostic output.</p>
+
+<h2>April 9, 2007</h2>
+<p><a href=downloads/firmware-0.2.1.tar.bz2>Version 0.2.1</a> is out
+(changeset 156).  Significant upgrades to armv4l: the native compiler works
+now, and it's using soft-float.  Added armv5l and i586 targets to show how
+to do that kind of variant.  Added preliminary powerpc support (although
+qemu can't run it yet).  Reorganized the download directory and rewrote
+the <a href=downloads/README>README</a>.  Added squashfs back (the kernel
+supports it, but it's not using it yet).  Moved uClibc to miniconfig.
+(Yes, the patch for this is huge, and yes I need to push it all upstream into
+the Linux kernel.  On the bright side, this one builds on a host that doesn't
+have curses installed.)  Stopped trying to build qemu (at least until they
+get the gcc 3.x dependencies cleaned out), now just warn if it's not there
+(so far the build only uses it to sanity-test the cross compiler, which is
+now skipped automatically if it's not there).</p>
+
+<p>I note that some versions of Ubuntu (Edgy and up) are pushing a political
+agenda.  They install bash, but point /bin/sh to dash instead.  (So why
+install bash if you're not going to use it?)  This breaks all sorts of things,
+and if somebody can tell me how to force make to run "/bin/bash" instead of
+"/bin/sh", I'll consider trying to deal with the mess.  Until then, I suggest
+"rm /bin/sh; ln -s bash /bin/sh" to get a working system.  (I'm no fan of
+bash, but dash is just broken.)</p>
+
+<p>(Those of you who use vi and want to be able to use the cursor keys while
+in insert mode might want to do something similar with vi->vim.  Ubuntu seems
+to be trying to train users to change their habits.  Dog biscuits would be a
+more honest approach.)</p>
+
+<p>Update: I've been pointed at
+<a href=https://wiki.ubuntu.com/DashAsBinSh>this</a> as evidence Ubuntu isn't
+pushing a political agenda.  Ok, maybe it's just really bad technical judgement.
+Are they honestly saying that people write shell scripts for the speed?  And
+how do you make a size argument and then install bash by default in ADDITION
+to the other shell?  Boggle.  In 1991 after Linus Torvalds taught his term
+program to understand the minix filesystem so he could upload and download
+without rebooting, he taught it to handle the system calls of bash so he could
+rm/mv/mkdir without rebooting.  That's where Linux 0.0.1
+came from.  Bash was the default Linux shell _before_ 0.0.1.  Be very
+careful messing with that kind of a de-facto standard, guys.  Dash is
+garbage.  Background a process with &amp; and then hit ctrl-c: it'll kill it.
+It doesn't understand blah/{blah,blah} file list syntax.  It can't do
+"source file.sh" (just ". file.sh", which is unreadable).  I repeat: I'm not a
+fan of bash (yeah, the bloat's getting crazy), but dash is broken.</p>
+
+<p>And that still doesn't explain why "vi" can't use the cursor keys in
+insert mode, but "vim" can...</p>
+
+<h2>March 6, 2007</h2>
+<p>Version 0.2.0 is out.  This one builds ext2 images which can boot up to a
+shell prompt under qemu.  This works on i686, armv4l, x86_64, and mipsel.
+(Sparc's broken.  Anyone who cares about sparc is welcome to debug it.)</p>
+
+<p>There are now prebuilt ext2 image files in the download directory.
+The kernels are in the mini-native tarballs.  (Yeah, I should repackage that
+next release.)  The system emulator invocation for each platform is
+the appropriate sources/configs file, and run-mini-native.sh invokes 'em.</p>
+
+<p>The mailing list is in the usual place if you have any questions.</p>
+
+<h2>January 14, 2007</h2>
+<p>There's a new irc channel for the project, #firmware on freenode.</p>
+
+<p><a href=http://landley.net/hg/firmware?cl=88>Changeset 88</a> builds
+i686, x86_64, armv4l, mips, and sparc.  I've made a release tarball of
+that (<a href=downloads/firmware-0.1.1.tar.bz2>firmware 0.1.1</a>, "It works
+for me"), and updated the prebuilt cross-compiler tarballs in the
+<a href=downloads>downloads</a> directory.  I've added a big README and
+prebuilt mini-native tarballs for each platform (although packing them up into
+something qemu can boot is currently left as an exercise for the reader).</p>
+
+<p>Speaking of which, I'm currently working on adding ext2 packaging
+(via <a href=http://landley.net/code/toybox>toybox</a>) to the build scripts,
+so qemu system emulation can boot the result and then run the next stage
+automatically.</p>
+
+<h2>December 28, 2006</h2>
+<p><a href=http://landley.net/hg/firmware?cl=68>Changeset 68</a> builds
+a native build environment with a working toolchain.  And in celebration, I've
+revamped the website with an actual navigation bar and content and such.</p>
+
+<p>I should put out a release soon.</p>
+
+<h2>December 5, 2006</h2>
+<p><a href=http://landley.net/hg/firmware?cl=27>Changeset 27</a> builds
+a relocatable armv4l cross-compile toolchain!  Download the tarball,
+run ./download.sh, then run ./build.sh, then grab the "build/cross-compiler"
+directory and use "bin/armv4l-unknown-linux-gnu-gcc" out of that (which
+I admit is a bit of a mouthful, for which I blame the FSF).</p>
+
+<h2>August 6, 2006</h2>
+<p>Mecurial repository created.  Nothing to see yet, move along...</p>
+<!--#include file="footer.html" -->