r1123 - trunk

bdubbs at linuxfromscratch.org bdubbs at linuxfromscratch.org
Sat Nov 12 12:35:22 PST 2011


Author: bdubbs
Date: 2011-11-12 13:35:16 -0700 (Sat, 12 Nov 2011)
New Revision: 1123

Added:
   trunk/lfs70armhint.txt
Log:
Add hint LFS for ARM

Added: trunk/lfs70armhint.txt
===================================================================
--- trunk/lfs70armhint.txt	                        (rev 0)
+++ trunk/lfs70armhint.txt	2011-11-12 20:35:16 UTC (rev 1123)
@@ -0,0 +1,154 @@
+AUTHOR: Jimmy Anderson <jimmy.anderson1057 at gmail.com>
+
+DATE: 2011-11-10
+
+LICENSE: GNU Free Documentation License Version 1.2
+
+SYNOPSIS: How to build LFS 7.0 for ARM
+
+DESCRIPTION:
+
+This hint describes how to build LFS version 7.0 on an ARM system.
+
+Most of the LFS book instructions also work, as is, for building an ARM
+LFS system.   But not all of them.   A few deviations from the instructions 
+found in the LFS books are needed to build an ARM LFS system.
+
+This hint does not describe how to build the ARM kernel or boot
+loader.   There is a number of variations of bootloader and kernel
+configurations used on ARM systems.  This hint doesn't try to 
+address that and so the bootloading and kernel building portions of
+LFS on ARM are left as an exercise for the reader.  
+
+This hint is specifically tested with LFS 7.0 only.   Building other
+versions of LFS for ARM might be similar to that described in this
+hint but be aware that this hint is only tested to work with LFS 7.0.
+
+ATTACHMENTS:
+
+The attachment is a diff of the LFS 7.0 book which contains the 
+changes to the user command changes that are needed to build for ARM. 
+The instructions in this hint should be sufficient for building ARM.
+However the attachment may be useful so the reader more clearly 
+understands what needs to be done differently for building on the ARM 
+architecture.  The user could also use the attachment to create 
+a version of the book which can be used by jhalfs to do an 
+automated build of an ARM lfs system.
+
+PREREQUISITES:
+
+An ARM machine running the proper tool set is required to build LFS.   
+This hint was tested specifically on a Seagate Dockstar which has
+Arch Linux ARM installed (version approx 8/2011 -- Arch Linux uses a 
+'rolling release' model).   Crux ARM 2.6 or 2.7 will also likely work
+as an LFS ARM build host but was not specifically tested.
+
+Familiarity with building LFS for x86 machines.  The reader ought to
+have built LFS for x86 at least once prior to attempting a build for
+ARM.
+
+You will need to download the following additional (besides those
+already listed in the book...) tarballs to build LFS 7.0 for ARM:
+
+u-boot-2011.06.tar.bz2:
+
+wget ftp://ftp.denx.de/pub/u-boot/u-boot-2011.06.tar.bz2
+
+glibc-ports-2.14.1.tar.bz2:
+
+wget http://ftp.gnu.org/gnu/libc/glibc-ports-2.14.1.tar.bz2
+
+
+HINT:
+
+Always follow the instructions in the LFS book exactly as written 
+except for the deviations as described in this hint...
+
+JHALFS can be used to build LFS for ARM but the user must download
+the LFS book, apply the needed ARM changes to it, and then point JHALFS
+at the modified book to use as a 'working copy'.  Also jhalfs internally
+generates it's own version of LFS_TARGET that does not work for ARM
+(at least not the eabi version of ARM) and so, if using jhalfs, you 
+must change the jhalfs source to make it set LFS_TARGET for ARM as 
+you need it to be set.   jhalfs is usable for building LFS ARM but 
+some tweaking is needed to make it work.
+
+----------------------------------------------------------
+In chapter 4, set your LFS TARGET as needed for ARM:
+
+LFS_TGT=$(uname -m)-lfs-linux-gnueabi
+
+This specific ARM target builds the 'eabi' version of the system.   
+Other possible ARM targets exist and may work also but were not tried.  
+The 'eabi' target, seems to be a more recent and preferred 
+ARM target.   So, that target is what this hint was developed with.
+----------------------------------------------------------
+
+----------------------------------------------------------
+In chapter 5, gcc pass1, add the ARM include files linux-eabi.h
+and linux-elf.h to the list of include files to be modified.  i.e.:
+
+$(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h -o -name linux-eabi.h -o -name linux-elf.h)
+----------------------------------------------------------
+
+----------------------------------------------------------
+In chapter 5, glibc, right after unpacking and cd'ing into the
+glibc source directory, unpack the glibc ports tarball as 
+follows:
+
+tar xvfj ../glibc-ports-2.14.1.tar.bz2; mv glibc-ports-2.14.1 ports
+----------------------------------------------------------
+
+----------------------------------------------------------
+And again, in chapter 6, glibc, unpack the glibc ports tarball as 
+done in chapter 5.
+----------------------------------------------------------
+
+----------------------------------------------------------
+In chapter 6, zlib, omit '-mstackrealign' from the
+definition of CFLAGS.   It is an unsupported compiler option on
+ARM.   
+----------------------------------------------------------
+
+----------------------------------------------------------
+In chapter 6, grub, always skip building grub.
+It is not needed on ARM and typically will not even compile for 
+ARM.  You can skip the download of the grub tarball if you like.
+----------------------------------------------------------
+
+----------------------------------------------------------
+At the end of chapter 6, build and install the 'mkimage' tool from 
+the Das u-boot package:
+
+tar xvfj u-boot-2011.06.tar.bz2
+cd u-boot-2011.06
+make tools-all
+cp tools/mkimage /usr/bin
+cd .. ;rm -fr u-boot-2011.06
+
+U-boot is often used as the bootloader on ARM boards.    The 'mkimage' 
+tool is needed when building a kernel that is will be booted by u-boot.
+Thus, the mkimage utility is typically needed for building ARM kernels.   If 
+your kernel build does not utilize the 'mkimage' utility, then you
+can just skip it.   (Although mkimage is a quick build and 
+it does no harm even when not needed...).
+----------------------------------------------------------
+
+
+
+Be prepared for a long build.   On a 1.2Ghz ARM system it took 
+about 48 hours of continuous building to complete the build of 
+LFS 7.0 (including all final system test suites...).   
+
+The test suites in an ARM build have more failures than is seen
+when building for X86.  However, the resulting system runs without any
+obvious problems.   
+
+
+ACKNOWLEDGEMENTS:
+
+The excellent work of the LFS development team.
+
+CHANGELOG:
+[2011-11-10]
+  * Initial hint.




More information about the hints mailing list