6.6 KiB
6.6 KiB
LFS Chapter 8 Build Scripts
This directory contains 13 build scripts that construct the complete base system for DarkForge Linux inside a chroot environment.
Quick Reference
Run these scripts in sequence inside the chroot:
cd /sources/toolchain-scripts
# Foundation (required before anything else)
./101-man-pages.sh
./102-iana-etc.sh
./103-glibc.sh # CRITICAL — System transitions to native here
# Compression libraries
./104-zlib.sh
./105-bzip2.sh
./106-xz.sh
./107-lz4.sh
./108-zstd.sh
# Utilities and build tools
./109-file.sh
./110-readline.sh
./111-m4.sh
./112-bc.sh
./113-flex.sh
Scripts
101-man-pages.sh
- Package: Man-Pages 6.12
- Purpose: System call and library function documentation
- LFS Reference: Chapter 8.3
- Time: < 1 minute (just installation, no compilation)
- Critical deps: None
102-iana-etc.sh
- Package: IANA-Etc 20250306
- Purpose: Protocol and service name definitions (
/etc/services,/etc/protocols) - LFS Reference: Chapter 8.4
- Time: < 1 minute (just installation)
- Critical deps: None
103-glibc.sh ⭐ CRITICAL
- Package: Glibc 2.43
- Purpose: The GNU C Library (complete native version)
- LFS Reference: Chapter 8.5
- Time: 5-10 minutes
- Key additions:
- Applies
glibc-fhs-1.patchfor FHS compliance - Generates
en_US.UTF-8locale - Sets up timezone data (defaults to UTC)
- Creates
/etc/nsswitch.conf - Runs comprehensive sanity checks
- Applies
- Critical deps: Previous toolchain (binutils, gcc cross-compiled), Linux headers
- Post-build verification:
/usr/lib/libc.so.6 exists ldd works Simple C program executes
104-zlib.sh
- Package: Zlib 1.3.2
- Purpose: Compression library (critical for many tools)
- LFS Reference: Chapter 8.6
- Time: < 2 minutes
- Includes:
make checktest suite - Critical deps: Glibc (103)
105-bzip2.sh
- Package: Bzip2 1.0.8
- Purpose: Bzip2 compression utility and library
- LFS Reference: Chapter 8.7
- Time: < 2 minutes
- Special: Applies
bzip2-1.0.8-install_docs-1.patchfor documentation - Non-standard build: Uses
Makefile-libbz2_sofor dynamic library - Critical deps: Glibc (103)
106-xz.sh
- Package: XZ Utils 5.8.1
- Purpose: LZMA compression utilities (needed for
.tar.xzfiles) - LFS Reference: Chapter 8.8
- Time: 2-3 minutes
- Note: Handles both
.tar.gzand.tar.xztarball formats - Critical deps: Glibc (103)
107-lz4.sh
- Package: LZ4 1.10.0
- Purpose: Fast LZ4 compression library and tools
- LFS Reference: Chapter 8.9
- Time: < 1 minute
- Non-standard: Custom Makefile (not autoconf)
- Critical deps: Glibc (103)
108-zstd.sh
- Package: Zstd 1.5.7
- Purpose: Zstandard compression (modern compression algorithm)
- LFS Reference: Chapter 8.10
- Time: 3-5 minutes (heavy optimization)
- Non-standard: Custom Makefile (not autoconf)
- Critical deps: Glibc (103)
109-file.sh
- Package: File 5.47
- Purpose: File type detection command and libmagic library
- LFS Reference: Chapter 8.11
- Time: < 2 minutes
- Includes:
make checktest suite - Critical deps: Glibc (103), Zlib (104)
110-readline.sh
- Package: Readline 8.3
- Purpose: Command-line editing and history library
- LFS Reference: Chapter 8.12
- Time: < 2 minutes
- Includes: Documentation installation
- Links with: ncurses library
- Critical deps: Glibc (103), ncurses (from earlier phases)
111-m4.sh
- Package: M4 1.4.21
- Purpose: Macro processing language (required for autoconf/automake)
- LFS Reference: Chapter 8.14
- Time: < 2 minutes
- Includes:
make checktest suite - Critical deps: Glibc (103)
112-bc.sh
- Package: Bc 7.0.3
- Purpose: Arbitrary-precision calculator
- LFS Reference: Chapter 8.15
- Time: 1-2 minutes
- Non-standard: Custom configure script (not typical GNU autoconf)
- Includes:
make testsuite - Critical deps: Glibc (103)
113-flex.sh
- Package: Flex 2.6.4
- Purpose: Lexical scanner generator (replaces older 'lex')
- LFS Reference: Chapter 8.16
- Time: 2-3 minutes
- Includes:
make checktest suite - Special: Creates
/usr/bin/lexsymlink for legacy compatibility - Critical deps: Glibc (103)
Environment
All scripts automatically source /sources/toolchain-scripts/100-chroot-env.sh, which provides:
# AMD Zen 5 specific compilation flags
CFLAGS="-march=znver5 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
LDFLAGS="-Wl,-O1,--as-needed"
MAKEFLAGS="-j32" # Full CPU utilization (16 cores × 2)
# Helper functions
pkg_extract(TARBALL) # Extract and cd into source dir
pkg_cleanup(DIRNAME) # Remove source directory after build
Troubleshooting
General Issues
-
"Permission denied" when running script
chmod +x 10X-*.sh -
"file not found" for tarball
- Ensure
/sources/contains all tarballs - Check
100-download-phase3.shfor correct filenames
- Ensure
-
"patch does not apply"
- Verify you're in the correct directory after extraction
- Check patch is in
/sources/with correct filename
Build Failures
- All scripts use
set -euo pipefail, so they stop immediately on errors - Check the error output for missing dependencies or configuration issues
- Ensure previous scripts completed successfully before running the next one
Most Common Issue
Glibc (103) fails — This is usually because:
- The FHS patch didn't apply correctly
- Linux headers are missing from
/usr/include/ - Previous cross-compiled toolchain is broken
Verify all Phase 0-2 scripts ran successfully before attempting Phase 3.
Documentation
For detailed information about each package and the build process, see:
/sessions/awesome-gallant-bell/mnt/lfs_auto_install/docs/CHAPTER8-SCRIPTS.md
For the complete LFS reference:
/sessions/awesome-gallant-bell/mnt/lfs_auto_install/reference/LFS-BOOK-r13.0-4-NOCHUNKS.html
Statistics
- Total scripts: 13
- Total size: ~20 KB
- Estimated total build time: 30-45 minutes (on 16-core CPU)
- Line of code: ~450 lines (across all scripts)
Next Steps
After these 13 scripts complete successfully:
- Continue with Phase 3 remaining packages (Chapter 8.17+)
- Build the Linux kernel (Phase 4)
- Configure init system (sysvinit) (Phase 5)
- Install desktop environment (dwl/Wayland) (Phase 6+)
Created: 2026-03-20 Target: DarkForge Linux (AMD Zen 5 build) Reference: LFS 13.0 Chapter 8