Fathom-OS Build Series: Chapter 3 - Packages and Patches

Part of the Fathom-OS Project Log.


Chapter 3 covers downloading all the source packages and patches needed for the entire LFS build. This is a straightforward chapter but an important milestone. Nothing in Chapters 5 through 11 can happen until every package is present and verified.

References:


Create the Sources Directory

The book requires a dedicated directory on the LFS partition to hold all source tarballs and patches. This directory serves double duty as the working directory when packages are unpacked and built later.

sudo mkdir -v $LFS/sources
sudo chmod -v a+wt $LFS/sources

The a+wt permission makes the directory writable by everyone and sets the sticky bit. The sticky bit means only the file owner can delete files inside it, even if others have write access.


Download the wget List and md5sums File

The LFS project provides a wget list containing every download URL needed for the build. The md5sums file is used to verify every download afterward.

wget https://www.linuxfromscratch.org/lfs/view/13.0-systemd/wget-list-systemd -O $LFS/sources/wget-list-systemd
wget https://www.linuxfromscratch.org/lfs/view/13.0-systemd/md5sums -O $LFS/sources/md5sums

Download All Packages and Patches

With the wget list in place, a single command pulls everything down. The --continue flag means if the download gets interrupted it can be resumed without starting over.

wget --input-file=$LFS/sources/wget-list-systemd --continue --directory-prefix=$LFS/sources

This took just over two minutes on the build host at roughly 9.5 MB/s:

FINISHED --2026-06-10 01:52:49--
Total wall clock time: 2m 1s
Downloaded: 92 files, 603M in 1m 4s (9.48 MB/s)


Verify All Downloads

Every file is verified against the md5sums file before moving on. A single mismatch here would cause a hard to diagnose failure deep in the build.

pushd $LFS/sources
md5sum -c md5sums
popd

All 92 packages and all 5 patches came back clean:

acl-2.3.2.tar.xz: OK
attr-2.5.2.tar.gz: OK
autoconf-2.72.tar.xz: OK
automake-1.18.1.tar.xz: OK
bash-5.3.tar.gz: OK
bc-7.0.3.tar.xz: OK
binutils-2.46.0.tar.xz: OK
bison-3.8.2.tar.xz: OK
bzip2-1.0.8.tar.gz: OK
coreutils-9.10.tar.xz: OK
dbus-1.16.2.tar.xz: OK
dejagnu-1.6.3.tar.gz: OK
diffutils-3.12.tar.xz: OK
e2fsprogs-1.47.3.tar.gz: OK
elfutils-0.194.tar.bz2: OK
expat-2.7.4.tar.xz: OK
expect5.45.4.tar.gz: OK
file-5.46.tar.gz: OK
findutils-4.10.0.tar.xz: OK
flex-2.6.4.tar.gz: OK
flit_core-3.12.0.tar.gz: OK
gawk-5.3.2.tar.xz: OK
gcc-15.2.0.tar.xz: OK
gdbm-1.26.tar.gz: OK
gettext-1.0.tar.xz: OK
glibc-2.43.tar.xz: OK
gmp-6.3.0.tar.xz: OK
gperf-3.3.tar.gz: OK
grep-3.12.tar.xz: OK
groff-1.23.0.tar.gz: OK
grub-2.14.tar.xz: OK
gzip-1.14.tar.xz: OK
iana-etc-20260202.tar.gz: OK
inetutils-2.7.tar.gz: OK
intltool-0.51.0.tar.gz: OK
iproute2-6.18.0.tar.xz: OK
jinja2-3.1.6.tar.gz: OK
kbd-2.9.0.tar.xz: OK
kmod-34.2.tar.xz: OK
less-692.tar.gz: OK
libcap-2.77.tar.xz: OK
libffi-3.5.2.tar.gz: OK
libpipeline-1.5.8.tar.gz: OK
libtool-2.5.4.tar.xz: OK
libxcrypt-4.5.2.tar.xz: OK
linux-6.18.10.tar.xz: OK
lz4-1.10.0.tar.gz: OK
m4-1.4.21.tar.xz: OK
make-4.4.1.tar.gz: OK
man-db-2.13.1.tar.xz: OK
man-pages-6.17.tar.xz: OK
markupsafe-3.0.3.tar.gz: OK
meson-1.10.1.tar.gz: OK
mpc-1.3.1.tar.gz: OK
mpfr-4.2.2.tar.xz: OK
ncurses-6.6.tar.gz: OK
ninja-1.13.2.tar.gz: OK
openssl-3.6.1.tar.gz: OK
packaging-26.0.tar.gz: OK
patch-2.8.tar.xz: OK
pcre2-10.47.tar.bz2: OK
perl-5.42.0.tar.xz: OK
pkgconf-2.5.1.tar.xz: OK
procps-ng-4.0.6.tar.xz: OK
psmisc-23.7.tar.xz: OK
Python-3.14.3.tar.xz: OK
python-3.14.3-docs-html.tar.bz2: OK
readline-8.3.tar.gz: OK
sed-4.9.tar.xz: OK
setuptools-82.0.0.tar.gz: OK
shadow-4.19.3.tar.xz: OK
sqlite-autoconf-3510200.tar.gz: OK
sqlite-doc-3510200.tar.xz: OK
systemd-259.1.tar.gz: OK
systemd-man-pages-259.1.tar.xz: OK
tar-1.35.tar.xz: OK
tcl8.6.17-src.tar.gz: OK
tcl8.6.17-html.tar.gz: OK
texinfo-7.2.tar.xz: OK
tzdata2025c.tar.gz: OK
util-linux-2.41.3.tar.xz: OK
vim-9.2.0078.tar.gz: OK
wheel-0.46.3.tar.gz: OK
XML-Parser-2.47.tar.gz: OK
xz-5.8.2.tar.xz: OK
zlib-1.3.2.tar.gz: OK
zstd-1.5.7.tar.gz: OK
bzip2-1.0.8-install_docs-1.patch: OK
coreutils-9.10-i18n-1.patch: OK
expect-5.45.4-gcc15-1.patch: OK
glibc-fhs-1.patch: OK
kbd-2.9.0-backspace-1.patch: OK


Fix Ownership

Downloads were done as dayotte, not root. The book requires all files in $LFS/sources to be owned by root to avoid orphaned UIDs in the final LFS system.

sudo chown root:root $LFS/sources/*

Confirmed with ls -l:


What Is Next

All 92 packages and 5 patches are downloaded, verified, and ready. The next step is Chapter 4: Final Preparations, which covers creating the LFS directory layout, adding the lfs build user, and setting up the build environment.


More updates to follow as each build phase completes.

Previous: Chapter 2.6 and 2.7: Setting $LFS and Mounting the Partition | Next: Chapter 4: Final Preparations


All session notes and build logs are committed to the private repository at github.com/QuietWireDev/fathom-os.