Changelog
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.
&version; - &releasedate;
Chapter 1: Added the lfs-security list to the list of available
mailinglists.
Chapter 1: Updated the mirror sites list.
Chapter 5: Bash still had the --with-ncurses option which is a bogus
option (it may as well have said --with-foo-bar). It has been changed
into --with-curses (like it was already done in chapter 6)
Chapter 5: Instead of CPPFLAGS=-Dvar=value ./configure during the
installation of diffutils, grep and sed, we now use export
CPPFLAGS=-Dvar=value && ./configure && unset CPPFLAGS. This was done to
get things working on some systems that don't work well with that
construction.
Chapter 5 + 6: Added the --libexecdir parameter to fileutile's configure
command. This was done to avoid the creation of the $LFS/usr/libexec directory.
Chapter 5 + 6: Added the --libexecdir parameter to tar's configure command. This
was done to avoid the creation of the $LFS/usr/libexec directory.
Chapter 6: Moved the installation of the man-pages packages as the very
first package. This way we don't have to worry about files being
overwritten by this package's make install. It will install all the man
pages it has and as we install packages in chapter 6 those packages will
install their own man pages replacing the files from man-pages.
Chapter 6: Added the copying of the man pages after console-tools has
been installed.
Chapter 6: Provided a patch to sysvinit. Read the installation notes
what the patch is for.
Chapter 6: Removed compiler optimization from the book. Thomas "Balu"
Walter has transformed it into an LFS-Hint.
Chapter 6: Removed running of localedef. This apparently isn't needed.
Chapter 6: Added the compress and uncompress symlinks to the
installation of gzip.
Chapter 6: When entering chroot environment use absolute paths to the
env and bash programs instead of relying on $PATH to be set properly.
Chapter 6: Override libexecdir's variable during the installation of
findutils. As findutils' configure script doesn't recognize the
libexecdir parameter, we'll override the variable during the make
install phase.
Chapter 6: Instead of sed'ing the Makefile file during the installations
of procinfo, procps and psmisc, we pipe the output of sed to make and
build the packages that way. This is more effecient.
Chapter 6: Use sed to modify the MCONFIG file.
Chapter 6: Instead of using cp -avi to copy the files from the man-pages
package, we use cp -dRiv now. This is almost the same as -avi, it just
won't preserve the file attributes. The files from the packages would
otherwise be installed not owned by user root but with userid 1000 which
wasn't a good thing.
Chapter 6: Mentioned the LFS-Hints' editor's section containing
alternatives to vim in case you don't want vim installed on your system.
Chapter 6: Added the sysklogd-1.4 patch. Sysklogd out of the box comes
with a broken klogd - it's not able to intercept kernel messages. This
patch fixes this.
Chapter 6: Instead of having two seperate fallthrough lines in the
inittab file (f1:0:... and f2:6:....) these are merged into one line
(ft:06:respawn:/sbin/sulogin).
Chapter 7: Added comments to the boot scripts.
Chapter 7: Modified the startup function in the rc script. No need to
distinguish between files that have an .sh extension or not. Also
removed the stty onlcr command. This one doesn't seem to be needed
anymore either.
Chapter 7: When something is killed using the killproc function in the
functions script, sleep for 2 seconds before continuing to allow the
kill to be completed (sometimes it takes a little while before all
processes are terminated).
Chapter 7: When the print_status function in the functions script is
called without a parameter don't abort the entire calling script, just
return an error value of 1. This function is non-essential so it won't
really affect anything when it doesn't run properly.
Chapter 7: Merged the umountfs script with the mountfs script.
Chapter 7: Fixed minor bug in the statusproc function in the functions
script. It read "$i is not running" - should be "$1 is not running".
Chapter 7: The print_error_msg function in the rc script now asks the
user to press a key before continueing. This way the user is able to
write down certain information before it's potentially all lost.
Chapter 7 + 9: Moved the boot script symlinks from including two digits
to three digits. This makes it easier to add scripts before and after
other scripts.
Chapter 9: Split up the network boot scripts page over multiple pages
like the way the boot scripts are arranged in chapter 7.
Chapter 9: Added a GATEWAY check to the ethnet script. If the GATEWAY
variable is set, the default gateway will be setup.
Chapter 9: Added the restart option to the localnet and ethnet scripts.
Chapter 9: Removed the ethnet K script when rebooting or halting. The
halt and reboot programs are called with the -i parameter which shut
down all network interfaces just before halt or reboot.
Chapter 9: Removed --prefix=/usr from netkit-base. It doesn't do
anything useful.
Appendix A: Added a description for blockdev from the util-linux
package.
Appendix C: Updated the util-linux official download site link.
Appendix C: Updated the man-pages official download site link.
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