Linux From Scratch
Linux From Scratch (LFS) is an open source project that provides users with comprehensive documentation for successfully building their own custom Linux-based operating systems. Originally created by Gerard Beekmans and later edited by Bruce Dubbs and Matthew Burgess, the Linux From Scratch project is one of the most complex and well documented “How to build your own Linux distribution from scratch” manual.
Targeted at 32-bit and 64-bit architectures
The instructions provided in this manual are targeted at 32-bit (AMD/Intel x86) and 64-bit (x86_64) architectures, but you can also built operating systems that work on PowerPC and ARM CPUs. Its primary standards are POSIX.1-2008, Linux Standard Base (LSB) Specifications and Filesystem Hierarchy Standard version 3.0 Draft 1 (FHS).
Anyone can learn how to create a Linux kernel-based operating system from scratch
Using this project, anyone can learn how to create a Linux kernel-based operating system from scratch, by first creating a new partition, formatting the partition with a Linux filesystem, and mounting the new partition. Then you’ll learn about packages and how to patch them, as well as how to create a $LFS/tools directory, add a LFS user, setup the environment, and build a temporary system.
You will also learn how to configure the operating system
Next, you will learn how to install basic system software by first preparing the virtual kernel file system, enter the chroot environment, create essential directories, files and symlinks, install the kernel, main compiler and manual pages, adjust the toolchain, and install all the essential packages. Users will also learn how to configure the network, customize the /etc/hosts file, handle modules and devices on a LFS system, create custom symlinks to devices, configure the system hostname, setclock script, Linux console, sysklogd script, rc.site file, /etc/inputrc file, and bash shell startup files.
Lastly, the documentation will provide detailed information about how to create the /etc/fstab file, configure that latest stable Linux kernel package, as well as to install GRUB as the default boot loader.