Mercurial > hg > aboriginal
view www/downloads/README @ 346:8a71354d8ceb
Added tag 0.4.0 for changeset 1a70dfe0a436
author | Rob Landley <rob@landley.net> |
---|---|
date | Fri, 06 Jun 2008 22:08:56 -0500 |
parents | c468353dd75b |
children | 0699ecc8b146 |
line wrap: on
line source
A note about building old versions under Ubuntu 7.04 or later: -------------------------------------------------------------- Ubuntu 7.04 broke the /bin/sh symlink to point to the Defective Annoying Shell (dash), which can't run the FWL scripts. FWL 0.2.2 and later work around this bug in Ubuntu by explicitly saying #!/bin/bash at the start of each script. To build older FWL versions under new Ubuntu versions, you'll have to change the "#!/bin/sh" lines at the start of each FWL script to say "#!/bin/bash" instead. Here's one way to do that: sed -i 's@^#!/bin/sh$@#!/bin/bash@' *.sh Other Linux distributions do not exhibit this bug. (Even MacOS X has /bin/sh point to bash, despite using a different login shell by default.) Also note that User Mode Linux 2.6.20 and earlier no longer build on a modern system because the field aio_reserved3 went away in /usr/include. (Yes, the API exported to userspace, as used by Linux itself, is unstable.) Attempts to build older FWL versions need to either fix that, or skip building UML. The oldest version that builds unmodified on an ubuntu 7.10 system is FWL 0.3.0. You can also install an older distro under qemu, and build the older versions under that. The Red Hat 9 image available from http://busybox.net/downloads/qemu should build all the versions before 0.3.0. Contents of the Firmware Linux download directory. -------------------------------------------------- Source tarballs: The firmware-* tarballs contain build scripts which produce a uClibc-based cross compiler and native build environment for various target platforms. Run "./build.sh" to see a list of target platforms, and run "./build.sh $ARCH" to build for a given target platform. Old versions of the build script tarballs are there for historical reasons; the newest version is probably always the one you want. cross-compiler: The "cross-compiler" directory contains "host-i686" and "host-x86_64" directories which contain prebuilt cross compilers which run on the appropriate type of host. The i686 versions were built under Ubuntu 6.06 and the x86_64 versions were built under Ubuntu 7.04. Each was built using the newest release version of the build scripts, and when you run the build yourself these tarballs should be created in the "build" directory. Each cross-compiler-$ARCH tarball contains a compiler toolchain which produces binaries or the given platform, linked against uClibc. (If you want to build uClibc binaries on an x86 host, use the toolchain in cross-compiler/host-i686/cross-compiler-i686.tar.bz2.) To use one of these compilers, extract the tarball and use the "$ARCH-gcc" binary as your compiler, which is located in the "bin" subdirectory. You might find it convenient to add that to your $PATH. (All the headers and libraries for the target are located relative to $ARCH-gcc, so you can extract the tarball anywhere you like, and move the directory it creates anywhere, but don't move stuff around within that directory.) Note: This cross compiler is small and simple and only supports C. The native compiler in mini-native supports C++ as well. mini-native: Each mini-native-$ARCH tarball contains a minimal native root filesystem for the given platform. This filesystem is organized as a Linux From Scratch style /tools directory containing uClibc, a compiler, and basic system tools (mostly busybox), designed to boot with the kernel arguments "init=/tools/bin/sh PATH=/tools/bin". This filesystem contains a native version of gcc, which builds stuff relative to / (not to /tools), so in order to run the compiled programs either symlink /lib to /tools/lib, start by building and installing uClibc, or statically link the programs you build. For more information, see http://www.linuxfromscratch.org/lfs/view/stable/chapter06/chapter06.html image: This directory contains three files per target architecture: image-$ARCH.ext2.bz2: a bzipped ext2 filesystem image containing the files from the corresponding mini-native tarball. Run bunzip2 on this before using it. zImage-$ARCH: a bootable Linux kernel configured for use with QEMU. run-$ARCH.sh: a shell script that attempts to boot the corresponding ext2 filesystem image and Linux kernel zImage files under the emulator QEMU (version 0.9.0 or newer). The script expects to find both files in the current directory.