If, for example, a change is listed for chapter 5 it (usually) means the same change has been made in the chapters for the other architectures.
2.4.3 November 21st, 2000
The LFS FTP archive has been moved to a new server which is reachable under the name packages.linuxfromscratch.org. The reason for the move is that this new server sits on a link with a lot more bandwidth to spare.
Instead of having the reader create files by running vim or some editor, the reader can now simply copy and paste a command that creates the file in the form of "cat > outputfile << EOF" followed by the text to put in the file and when a single line containing EOF is read by cat, it stops reading and writes the file (not including the EOF). This will be handy to put in scripts so you can make LFS installations fully automatic.
Added explanations on the commands being executed to make it clearer why and what is being done to install the packages.
Chapter 1: Updated the HTTP mirror list and added the FTP mirror list. This list is up-to-date as of November 14th, 2000.
Chapter 5: In the Bash installation changed the --with-curses configure option to --with-ncurses. This seems to fix bash compilations on distribution that don't have ncurses properly installed.
Chapter 5: Instead of having the user replace <host> in the gcc installation by whatever appears in $LFS/usr/lib/gcc-lib you can use a *. This won't be a problem because the * will expand in only one directory so the 'ln' command won't complain about it. This makes it easier to automate as well.
Chapter 6: Mentioned the -e parameter to perl's Configure script that makes the script not ask you anything after it has created the config.sh script.
Chapter 6: Removed the creation of the /usr/bin/install symlink - this symlink was already created earier in chapter 5
Chapter 6: Added the creation of /var/log/lastlog where utmp, btmp and wtmp are created.
Chapter 6: When the yacc script is created in the Bison section, execute a chmod 755 on it so we can execute the script.
Chapter 6: Cosmetic change to the inittab file. Instead of using /dev/tty[1-6] as parameters to agetty we now use just 'dev[1-6]'. This generates a nicer output from commands like 'w'.
Chapter 7: Modified all scripts to use absolute paths instead of relying on $PATH to be set.
Chapter 7: In fstab changed "none /proc proc defaults 0 0" to "proc /proc proc defaults 0 0". Upon mount problems you could get "none: device or resource busy" instead of "proc: device or resourced busy".
Appendix C: Fixed a couple of broken links.
2.4.2 - October 11th, 2000
Chapter 3: Newer verions were mentioned, but the links were still pointing to the older versions. Besides that I forgot to put the newer package versions in the ftp archive. Both have been fixed now.
Chapter 5: Instead of looking at the filename of the C library files to determine which C library your starting Linux system uses we'll obtain it by running "strings /lib/libc* | grep "release version"" instead.
Chapter 5+6: The proc file system must be mounted in chapter 5 before we enter the chroot'ed environment since after chroot the mount program will not be available yet.
Chapter 6: Fixed a HTML bug in the GCC installation which caused a CR character to appear in certain browser.
2.4.1 - October 10th, 2000
Removed the bash prompts from the commands. This will make it much easier to copy & paste the commands from the book onto the command line. Typing them all out is great for the first few times, but it tends to get tedious after a while. You can of course use scripts to do this all, but that's not the goal of this book. That's part of a different project (alfs.linuxfromscratch.org).
Swapped chapters 8 and 9. Now we first reboot and then setup networking. If done the other way around, networking programs won't work unless both the normal system and the LFS system are going to run the same kernel version, which often is not the case. Swapping the chapters eliminates that possible problem.
Chapter 3: All packages have been moved to download.linuxfromscratch.org and the links are updated accordingly. The official download sites for all the packages are listed in Appendix C.
Chapter 5+6: Moved the execution of localedef after Glibc in chapter 5 to after you entered chroot in chapter 6. It was a mistake (the only real bug in 2.4) to put it in chapter 5.
Chapter 6: Installing Vim as the first program. In case you need to edit something you an editor available right away. This also caused a couple of other packages to be moved to satisfy depencies.
Chapter 6: When we use sed to modify a Makefile file we now run make as "make -f Makefile2" instead of "mv Makefile2 Makefile && make".
Chapter 6: Added the "publickey: files" line to the nsswitch.conf file. This is needed when you run a 2.4 kernel to login properly.
Chapter 6: Added the /usr/bin/yacc script that runs bison with the -y switch to emulate yacc's output file name conventions. This is done because there are a few packages out there that rely on yacc and can't work with bison (yet).
Chapter 6: Modified the /usr/sbin/makewhatis script after the installation of the man package. The /usr/sbin/makewhatis script needs the AWK= variable defined to /usr/bin/mawk.
Chapter 7: Added the template script. This way you can easily add new bootscripts without having to write them from scratch.
2.4 - August 28th, 2000
Split the book up into two differnet books for Intel and PPC.
Chapter 4: Added the mail and dev/pts directories to the "Creating directories" section.
Chapter 5: Everything from chroot and after has been put in a new chapter.
Chapter 6: Moved the optimization part to the point just before you enter the chroot'ed environment. It's a waste to use compiler optimizations for the static packages since they will be replaced anyways.
Chapter 6: To enter chroot we first cd to the $LFS/root directory. Some older chroot programs have problems when you enter chroot when your starting directory isn't inside the chroot environment. Also we don't execute bash directly in the chroot'ed environment, but we start the "env" program so we can enter with a clean environment that only has CFLAGS and CXXFLAGS set.
Chapter 6: A few people have had problems compiling M4 in the chroot'ed enviroment. Instructions are provided how to install this package statically for the affected users.
Chapter 6: We can't move the 'mv' program during the dynamic installation of the fileutils package with the mv program. So we copy it to /bin first, then remove the /usr/bin/mv one.
Chapter 5: Added 'make localedata/install-locales' to the Glibc installation. This installs the locale files that various applications use (most notable GDK applications) if you have an NLS capable system (which LFS is, but with missing locales it's almost useless)
Chapter 6: Moved vim's installation before Lilo since you might want to edit Lilo's Makefile file to add compiler optimization.
Chapter 6: Moved the installatin of shadow password suit after sh-utils. Else sh-utils replaces the "su" version from shadow password with it's own version which shouldn't happen.
Chapter 6: Changed the way we enter the chroot'ed environment. We use the "env" to create an empty enviroment so that enviroment variables from the normal Linux system won't interfer in the chroot enviroment. The only variable set when entering the chroot'ed environment is the HOME variable.
Chapter 6: Because of the new way we enter chroot, the $LFS/root/.bash_profile file has been created that sets a few variables like TERM, CFLAGS, CXXFLAGS and whatever you deem necesarry.
2.3.7 - August 3rd, 2000
All chapters: Removed the <blockquote> SGML tags so that the contents of files isn't indented anymore. This improves the easy of copy and pasting from the book into your files without needing to manually reformat the files to get rid of the indentations.
Chapter 4: Added var/tmp to the "chmod 1777 tmp usr/tmp" command.
Chapter 4: Made mkdir commands less repetitive by putting the creation of the directories in $LFS/usr and $LFS/usr/local in a for-loop.
Chapter 5: Moved the chmod 754 command for MAKEDEV after the sed operation.
Chapter 5: Changed the order in which packages are installed to conform more to a alphabetically ordering.
Chapter 5: After console-tools has been installed the /usr/share/defkeymap.kmap.gz file is created which will be used by the loadkeys script.
Chapter 5: Removed "gcc -c watch.c" from "Installing Procps". Please let us know if this is still needed on certain hardware.
Chapter 5: Added the /usr/bin/install symbolic link as it seems that at least one package (sysklogd) has the install location hard coded in it's Makefile file.
Chapter 5: After gettext has been installed, we have a file /po-mode.el. This file will be moved to /usr/share/gettext where it probably belongs.
Chapter 5: Instead of passing --with-root-prefix=/ to e2fsprogs' configure script, we now pass --with-root-prefix=
Chapter 5: When gzip is installed and the files moved to /bin the hard link between the files is removed. So we just move gzip to /bin and create a symlink between gzip and gunzip.
Chapter 5: In the chroot environment: changed the installation order of a few packages who's dependencies have changed over time.
Chapter 5: inittab file has been slightly updated to better support the single user run level. When you change to run level S, s or 1 it will do it's job properly now.
Chapter 6: Fixed typo in the rc script (! -f sysinit_start -> ! -f $sysinit_start).
Chapter 6: Changed the loadkeys command in the loadkeys script. New command is: loadkeys -d which loads the /usr/share/keymaps/defkeymap.kmap.gz file.
Chapter 6: Changed ". /etc/init.d/functions" into "source /etc/init.d/functions".
Chapter 6: Removed the "rm /fastboot" command from the checkfs script.
2.3.6 - July 19th, 2000
Chapter 3: Re-ordered the software download list so it once again matches the order in which packages are used (the first package listed in the list is the first package that we will be using in the book, the second listed package will be the second package used in the book, etc).
Chapter 3: Added the file sizes of the packages you have to download.
Chapter 3: Removed the start-stop-daemon package.
Chapter 3: Added the findutils and glibc patches to the package list.
Chapter 3: Added the man-pages package to the package list.
Chapter 4: Moved the creation of the $LFS/dev/ files to chapter 5 after we have entered the chroot environment. This is done because GID's on normal system and LFS system might differ and the MAKEDEV script depends on the GID's.
Chapter 5: Added the installation of the man-pages package.
Chapter 5: Added a few commonly used groups to the /etc/group file when it is created (these are the groups needed by the MAKEDEV script).
Chapter 5: The /proc/devices file is copied to $LFS/proc for the benefit of the MAKEDEV script. The presence of this file ensures the proper creation of the device files.
Chapter 5: Layout changes. Every package installation has it's own page now. Also the text from appendixa for every package is included with the installation instructions so you can read what a package is about during (or after or before) the installation of it.
Chapter 5: Removed the patches for diffutils, grep, gzip and sed that used to fix static link problems. The problems can be fixed by passing compile arguments to the C pre-processor (cpp) instead.
Chapter 5: Added the --disable-termcap option to configure to disable termcap backward compatibility (if you want to know why termcap isn't used anymore, please read the INSTALL file that comes with the Ncurses package).
Chapter 5: Added a few missing files from the fileutils package to the "mv" commands.
Chapter 5: Removed the installation of the start-stop-daemon package.
Chapter 5: Removed the -e parameters from the make command lines.
Chapter 5: Instead of editing the procinfo, procps and psmisc Makefile files with a text editor, the sed command it used.
Chapter 6: Added the setclock script in case your hardware clock isn't set to GMT.
Chapter 6: Removed the use of the start-stop-daemon program and replaced them with custom functions that use programs like pidof and kill to accomplish the same tasks but with more control over what happens.
Chapter 6: Added the loadproc and killproc functions to the /etc/init.d/functions file that take over the functions the start-stop-daemon program used to perform.
Chapter 6: When the checkfs script runs without errors it now prints a green OK.
Chapter 6: When /fastboot or /forcefsck exist, they won't be deleted from within the checkfs script but from within the mountfs script as soon as the root partition has been remounted in read-write mode.
Chapter 6 & 7: Instead of sourcing a file with ". /etc/init.d/functions", "source /etc/init.d/functions" is now used. This makes it easier to read and is clearer for persons who don't know much about scripting.
Appendix A: removed start-stop-daemon.
Appendix B: Removed a few unrelated items from the book and howto sections (the references to Sendmail and ISP-Hookup-HOWTO).
2.3.5 - June 19th, 2000
Chapter 3: Updated LILO download location
Chapter 3: Updated Shadow Password Suite download location
Chapter 3: Updated the Flex download location
Chapter 3: Updated the File download location
Chapter 3: Added netkit-base and net-tools to the mandatory packages section
Chapter 5: A glibc-2.1.3 patch is available if you have problems compiling glibc on a bash-2.04 machine.
Chapter 5: Added compiler optimization
Chapter 5: Added the creation of the root password to "Configuring essential software"
Chapter 5: The Linux86 package has been replaced by the Bin86 package.
Chapter 5: Included information on how to optimize compilations.
Chapter 5: Moved installation of Groff and Man before Perl. This way Perl known how to install man pages and where to install them.
Chapter 5: Changed GCC's local-prefix option to /usr/local instead of /usr (this was still a residue from the time where /usr/local was a symbolic link to /usr)
Chaper 5: Fixed the commands when a patch is used and the patch filename contained the .gz suffix.
Chapter 5: Added --disable-nls to every configure command in the "Perparing the LFS system..." section which didn't have it yet.
Chapter 5: Added the installation of bash-2.03 so you have a shell that can be used to compile packages that violate POSIX standards regarding valid characters in variable names
Chapter 5: Added the installation of console-tools and console-data for people who have non-US keyboards
Chapter 5: Moved the ed program to the /bin directory conforming the FHS standard
Chapter 6 & 7: Implemented LSB recommended run level scheme.
Chapter 6 & 7: Implemented "fancy bootscripts". When something fails in a bootscript it still says FAILED but the text red. When something succeeded it still will print OK but the text is green.
Chater 6: Added the loadkeys scripts for people with non-US keyboards
Chapter 6: Added the /etc/sysconfig directory to "Creating directories"
Chapter 6: Renamed the checkroot boot script into checkfs. The script also checks other file systems now.
Chapter 6: Updated the mountfs boot script to mount all file systems that are mentioned in the /etc/fstab file and don't have the noauto option set.
Chapter 6: After checkfs evaluated the existence of /fastboot or /forcecheck it will remove those files.
Chapter 6 & 7: Changed the mode of the boot scripts from 755 to 754
Chapter 7: Moved system specific information for hostname and ethernet configuration to the /etc/sysconfig/network file
Chapter 7: Removed the default gateway command
Chapter 7: Fixed the typo in the ethnet script (NETMAKSK -> NETMASK)
Chapter 7: A net-tools patch is available to fix a minor bug in the package (illegal variable names that bash-2.04 will complain about)
2.3.4 - June 5th, 2000
Chapter 5: Fixed the kernel header files configuration
Chapter 5: Fixed the lilo configuration
2.3.3 - May 15th, 2000
Changed the default mount point from /mnt/xxx to /mnt/lfs (where xxx used to be the partition's designation like hda5, sda5 and others). The reason for the change is to make cross-platform instructions easier.
Chapter 4: Changed the default modes for the $LFS/root and $LFS/tmp directory to respectively 0750 and 1777.
Chapter 5: Removed the encoded password from the passwd file. Instead a file with no set password is created. The root password can be set by the user when the system is rebooted into the LFS system (after chapter 8).
Chapter 5: Fixed the procps compile command for watch.c. It should compile properly now.
Chapter 5: Fixed gzip patch installation (used the wrong filename in the patch command
Chapter 5: Changed 'entering the chroot'ed environment' to make bash a login shell.
Chapter 5: Configuring the kernel has been moved to this chapter because it needs to be done before programs like e2fsprogs and lilo are compiled.
Chapter 6: Fixed the rc script. It now checks to see if the previous run level starts a service before attempting to stop it in the new run level. Also, if a service is already started in the previous run level it won't attempt to start the service in the new run level again. Thanks to Jason Pearce for providing this fixed script.
Chapter 7: Fixed the ethnet script - removed paratheses from the environment variables and removed the command to add a route. The ifconfig command used to bring the eth device up already sets this route.
2.3.2 - April 18th, 2000
Chapter 4.7: Change only the owner of the $LFS/dev/* files
Fixed a large amount of typo's that occured during the transistion from the LinuxDoc DTD (2.2 and lower) to the DocBook DTD (2.3.1 and higher).
Moved chapters around quite a bit and applied a new structure in the book. Installations for Intel, Apple PowerPC and future systems will be put in their own dedicated part of the book.
After the system is prepared to install the basic system software, we no longer reboot the system but instead we setup a chroot'ed environment. This will have the same effect without having to reboot.
Apple PowerPC has it's own dedicated chapters now. This should increase readability a lot
All optional chapters have been removed. LFS follows a "we provide the foundation, it's up to you to build the rest of the house" philosophy.
Replaced the fixed packages by patch files. This way you can see what needs to be changed in a package in order to get it to compile properly.
2.3.1 - April 12th, 2000
Chapter 4.4: Added the $LFS/usr/info symlink which points to $LFS/usr/share/info
Chapter 7.3.1: Added a second variation to a 'swap-line' in a fstab file.
Chapter 7.3.2: Removed $LFS from the commands.
Chapter 7.4.43: Added the vi symlink
Chapter 9.2.5: Improved ethnet script to include routing information
Chapter 10.1.2: Fixed missing subdirectory 'mqueue' in mkdir /var/spool -> /mkdir /var/spool/mqueue
Chapter 10.1.4: Updated the sendmail configuration file with a few necessary options
Chapter 10.1.7: Fixed wrong directory path /etc/init.d/rc2.d -> /etc/rc2.d