Linux from Scratch: Difference between revisions
imported>Tassedethe m Tassedethe moved page Linux From Scratch to Linux from Scratch: caps |
imported>InternetArchiveBot Rescuing 2 sources and tagging 0 as dead.) #IABot (v2.0.9.5) (Tomkozak61 - 26849 |
||
| Line 5: | Line 5: | ||
| name = Linux From Scratch | | name = Linux From Scratch | ||
| logo = | | logo = | ||
| website = | | website = [https://linuxfromscratch.org linuxfromscratch.org] | ||
| developer = Gerard Beekmans et al. | | developer = Gerard Beekmans et al. | ||
| family = [[Unix-like]] | | family = [[Unix-like]] | ||
| Line 14: | Line 14: | ||
| kernel type = [[Monolithic kernel|Monolithic]] | | kernel type = [[Monolithic kernel|Monolithic]] | ||
| ui = [[Command-line interface|CLI]] | | ui = [[Command-line interface|CLI]] | ||
| license = [[Creative Commons licenses]] Mainly CC BY-NC-SA <ref>{{cite web|url=https://www.linuxfromscratch.org/lfs/view/11.1-systemd/appendices/licenses.html | | license = [[Creative Commons licenses]] Mainly CC BY-NC-SA<ref>{{cite web |title=Appendix D. LFS Licenses |url=https://www.linuxfromscratch.org/lfs/view/11.1-systemd/appendices/licenses.html |access-date=9 August 2023 |website=www.linuxfromscratch.org}}</ref> and [[MIT License]] | ||
| working state = Current | | working state = Current | ||
| supported platforms = [[IA-32]], [[x86-64]], [[PowerPC]]<ref>{{Cite web |title=iii. LFS Target Architectures |url=https://www.linuxfromscratch.org/lfs/view/stable/prologue/architecture.html | | | supported platforms = [[IA-32]], [[x86-64]], [[PowerPC]], [[ARM architecture family|ARM]]<ref>{{Cite web |title=iii. LFS Target Architectures |url=https://www.linuxfromscratch.org/lfs/view/stable/prologue/architecture.html |access-date=17 July 2025 |website=www.linuxfromscratch.org}}</ref> | ||
| updatemodel = Source-based | | updatemodel = Source-based | ||
| package manager = None (source-based) | | package manager = None (source-based) | ||
}} | }} | ||
'''''Linux From Scratch''''' ('''LFS''') is a type of | '''''Linux From Scratch''''' ('''LFS''') is a type of [[Linux]] installation, and the name of a book written by [[Gerard Beekmans]], and as of May 2021, mainly maintained by Bruce Dubbs. The book gives readers instructions on how to build a Linux system from [[Source code|source]]. The book is available freely from the Linux From Scratch site.<ref>{{Cite web |title=Download LFS |url=https://linuxfromscratch.org/lfs/download.html |access-date=11 March 2025 |publisher=www.linuxfromscratch.org}}</ref> | ||
== Projects under LFS== | == Projects under LFS == | ||
''Linux From Scratch'' is a way to install a working Linux system by building all components of it manually. This is, naturally, a longer process than installing a pre-compiled [[Linux distribution]]. According to the ''Linux From Scratch'' site, the advantages to this method are a compact, flexible and secure system and a greater understanding of the internal workings of the Linux-based operating systems.<ref>{{cite web|url=http://www.linuxfromscratch.org/lfs/| | ''Linux From Scratch'' is a way to install a working Linux system by building all components of it manually. This is, naturally, a longer process than installing a pre-compiled [[Linux distribution]]. According to the ''Linux From Scratch'' site, the advantages to this method are a compact, flexible and secure system and a greater understanding of the internal workings of the Linux-based operating systems.<ref>{{cite web |title=What is Linux From Scratch? |url=http://www.linuxfromscratch.org/lfs/ |access-date=11 March 2025 |website=www.linuxfromscratch.org}}</ref> | ||
To keep LFS small and focused, the book ''Beyond Linux From Scratch'' (BLFS) was created, which presents instructions on how to further develop the basic Linux system that was created in LFS. It introduces and guides the reader through additions to the system including the [[X Window System]], [[desktop environment]]s ([[KDE]], [[GNOME]], [[Xfce]], [[LXDE]]), [[productivity software]], [[web browser]]s, [[programming language]]s and tools, [[multimedia]] software, and [[network management]] and [[system administrator|system administration]] tools. Since Release | To keep LFS small and focused, the book ''Beyond Linux From Scratch'' (BLFS) was created, which presents instructions on how to further develop the basic Linux system that was created in LFS. It introduces and guides the reader through additions to the system including the [[X Window System]], [[desktop environment]]s ([[KDE]], [[GNOME]], [[Xfce]], [[LXDE]]), [[productivity software]], [[web browser]]s, [[programming language]]s and tools, [[multimedia]] software, and [[network management]] and [[system administrator|system administration]] tools. Since Release 7.4, the BLFS book version matches the LFS book version.<ref>{{Cite web |title=Who Would Want to Read this Book |url=https://www.linuxfromscratch.org/blfs/view/stable/preface/whoread.html |access-date=9 September 2025 |website=www.linuxfromscratch.org}}</ref> | ||
The book ''Cross Linux From Scratch'' (CLFS) focuses on [[cross compiling]], including compiling for [[Headless computer|headless]] or [[embedded system|embedded]] systems that can ''run'' Linux, but lack the resources needed to ''compile'' Linux. CLFS supports a broad range of [[Central processing unit|processors]] and addresses advanced techniques not included in the LFS book such as cross-build [[toolchain]]s, multilibrary support (32 & 64-bit [[Library (computing)|libraries]] side-by-side), and alternative [[instruction set architecture]]s such as [[Itanium]], [[SPARC]], [[MIPS architecture|MIPS]], and [[DEC Alpha|Alpha]]. | The book ''Cross Linux From Scratch'' (CLFS) focuses on [[cross compiling]], including compiling for [[Headless computer|headless]] or [[embedded system|embedded]] systems that can ''run'' Linux, but lack the resources needed to ''compile'' Linux.<ref name="trac.clfs"> {{cite web |title=CLFS Trac |url=https://trac.clfs.org/ |access-date=9 September 2025 |website=trac.clfs.org}} </ref> CLFS supports a broad range of [[Central processing unit|processors]] and addresses advanced techniques not included in the LFS book such as cross-build [[toolchain]]s, multilibrary support (32 & 64-bit [[Library (computing)|libraries]] side-by-side), and alternative [[instruction set architecture]]s such as [[Itanium]], [[SPARC]], [[MIPS architecture|MIPS]], and [[DEC Alpha|Alpha]]. The project is archived and was last updated in August 2017.<ref name="trac.clfs"/> | ||
The Linux from Scratch project, like [[BitBake]], also supports cross-compiling Linux for [[ARM architecture|ARM]] embedded systems such as the [[Raspberry Pi]] and [[BeagleBone]].<ref> | The Linux from Scratch project, like [[BitBake]], also supports cross-compiling Linux for [[ARM architecture|ARM]] embedded systems such as the [[Raspberry Pi]] and [[BeagleBone]].<ref>{{cite web |title=Cross-Compiled Linux From Scratch – Embedded |url=https://clfs.org/view/clfs-embedded/ |access-date=11 March 2025 |website=clfs.org}}.</ref><ref> | ||
{{cite web|url=https://clfs.org/view/clfs-embedded/| | {{Cite book |last=Horan |first=Brendan |url=https://archive.org/details/practicalraspber00hora |title=Practical Raspberry Pi |publisher=Apress |isbn=978-1-4302-4972-6 |publication-place=Berkeley, CA |publication-date=12 June 2013 |pages=105 |language=English |doi=10.1007/978-1-4302-4972-6 |oclc=848747530 |ol=27082156M}}</ref> | ||
</ref><ref>{{Cite book | |||
The book | The book ''Hardened Linux From Scratch'' (HLFS) focuses on security enhancements such as [[Hardening (computing)|hardened]] kernel patches, mandatory [[Computer access control|access control]] policies, [[stack-smashing protection]], and [[address space layout randomization]].<ref> {{cite web |title=HLFS Project Homepage |url=https://www.linuxfromscratch.org/hlfs/ |access-date=9 September 2025 |website=www.linuxfromscratch.org}} </ref> Besides its main purpose of creating a [[security-focused operating system]], HLFS had the secondary goal of being a security teaching tool. It has not been updated since 2011. As of 17 February 2025, the HLFS book has disappeared from the LFS web site. | ||
''Automated Linux From Scratch'' (ALFS) is a project designed to automate the process of creating an LFS system.<ref name="lfs"/> It is aimed at users who have gone through the LFS and BLFS books several times and wish to reduce the amount of work involved.<ref> {{cite web |title=ALFS Project Homepage |url=https://www.linuxfromscratch.org/alfs/ |access-date=9 September 2025 |website=www.linuxfromscratch.org}} </ref> A secondary goal is to act as a test of the LFS and BLFS books by directly extracting and running instructions from the XML sources of the LFS and BLFS books. | |||
==Requirements and procedure== | Other subprojects: | ||
{{updated|9 September 2025|<ref name="lfs">{{Cite web |title=Welcome to Linux From Scratch! |url=https://www.linuxfromscratch.org/ |access-date=9 September 2025 |website=www.linuxfromscratch.org}}</ref>}} | |||
{| class="wikitable" | |||
|- | |||
! scope="col" |Name | |||
! scope="col" |Description | |||
|- | |||
|MLFS | |||
|Multilib-LFS is a variant of LFS that builds a system which is able to execute 32-bit binaries. | |||
|- | |||
|GLFS | |||
|Gaming Linux From Scratch is based on BLFS and helps user install gaming support software like [[Steam (service)|Steam]] or [[Wine (software)|Wine]] on a new LFS or MLFS system. | |||
|- | |||
|Hints | |||
|Collection of documents that explain how to enhance LFS system in ways that are not included in the LFS or BLFS books. | |||
|- | |||
|Patches | |||
|Central repository for all patches useful to an LFS user. | |||
|- | |||
|LFS Editor's Guide | |||
|A document that describes the LFS development process. | |||
|- | |||
|Museum | |||
|Copies of ancient LFS and BLFS versions. | |||
|} | |||
== Requirements and procedure == | |||
A clean [[Disk partitioning|partition]] and a working Linux system with a compiler and some essential [[Library (computing)|software libraries]] are required to build LFS. Instead of installing from an existing Linux system, one can also use a Live CD to build an LFS system. | A clean [[Disk partitioning|partition]] and a working Linux system with a compiler and some essential [[Library (computing)|software libraries]] are required to build LFS. Instead of installing from an existing Linux system, one can also use a Live CD to build an LFS system. | ||
The project formerly maintained the Linux From Scratch Live CD.<ref name="linuxfromscratch.org">{{cite web|url=http://www.linuxfromscratch.org/livecd/| | The project formerly maintained the Linux From Scratch Live CD.<ref name="linuxfromscratch.org">{{cite web |title=LFS LiveCD Project Homepage |url=http://www.linuxfromscratch.org/livecd/ |access-date=25 May 2018 |website=www.linuxfromscratch.org}}</ref> LFS Live CD contains all the source packages (in the full version of the Live CD only), the LFS book, automated building tools and (except for the minimal Live CD version) an [[Xfce]] GUI environment to work in. The official LFS Live CD is no longer maintained, and cannot be used to build the LFS version 7 or later.<ref name="linuxfromscratch.org" /> There are, however, two unofficial builds that can be used to build a 32-bit or 64-bit kernel and userspace respectively for LFS 7.x.<ref>{{cite web |title=Index of /~kb0iic/livecdupd |url=http://clfs.org/~kb0iic/livecdupd/ |url-status=dead |archive-url=https://web.archive.org/web/20160106015310/http://clfs.org/~kb0iic/livecdupd/ |archive-date=6 January 2016 |access-date=25 May 2018 |website=clfs.org}}</ref> | ||
First, a [[toolchain]] must be compiled consisting of the tools used to compile LFS, like [[GNU Compiler Collection|GCC]], [[glibc]], [[binutils]], and other necessary utilities. Then, the [[root directory]] must be changed, (using [[chroot]]), to the toolchain's [[Disk partitioning|partition]] to start building the final system. One of the first packages to compile is glibc; after that, the toolchain's [[Linker (computing)|linker]] must be adjusted to [[Library (computing)|link]] against the newly built glibc, so that all other packages that will make up the finished system can be linked against it as well. During the [[chroot]] phase, [[Bash (Unix shell)|bash]]'s hashing feature is turned off and the temporary toolchain's bin directory moved to the end of PATH. This way the newly compiled programs come first in PATH and the new system builds on its own new components. | First, a [[toolchain]] must be compiled consisting of the tools used to compile LFS, like [[GNU Compiler Collection|GCC]], [[glibc]], [[binutils]], and other necessary utilities. Then, the [[root directory]] must be changed, (using [[chroot]]), to the toolchain's [[Disk partitioning|partition]] to start building the final system. One of the first packages to compile is glibc; after that, the toolchain's [[Linker (computing)|linker]] must be adjusted to [[Library (computing)|link]] against the newly built glibc, so that all other packages that will make up the finished system can be linked against it as well. During the [[chroot]] phase, [[Bash (Unix shell)|bash]]'s hashing feature is turned off and the temporary toolchain's bin directory moved to the end of PATH. This way the newly compiled programs come first in PATH and the new system builds on its own new components. | ||
== List of packages in LFS == | == List of packages in LFS == | ||
{{updated|9 September 2025|<ref>{{cite web |title=Rationale for Packages in the Book |url=https://www.linuxfromscratch.org/lfs/view/stable/prologue/package-choices.html |access-date=9 September 2025 |website=www.linuxfromscratch.org}}</ref> }} | |||
{| class="wikitable" style="width:100%;" | {| class="wikitable" style="width:100%;" | ||
|- | |- | ||
| Line 54: | Line 82: | ||
| [[Access control list|Acl]] | | [[Access control list|Acl]] | ||
| An access control list (ACL), with respect to a computer file system, is a list of permissions attached to an object. | | An access control list (ACL), with respect to a computer file system, is a list of permissions attached to an object. | ||
| [[GNU GPL]] | | rowspan="8" | [[GNU GPL]] | ||
|- | |- | ||
| Attr | | Attr | ||
| Commands for Manipulating Filesystem Extended Attributes. | | Commands for Manipulating Filesystem Extended Attributes. | ||
|- | |- | ||
| [[Autoconf]] | | [[Autoconf]] | ||
| Tool for producing [[configure script (computing)|configure scripts]] for [[C (programming language)|C]], [[C++]], [[Fortran]], Fortran 77, [[Erlang (programming language)|Erlang]], [[Objective-C]] software on [[Unix-like]] computer systems. | | Tool for producing [[configure script (computing)|configure scripts]] for [[C (programming language)|C]], [[C++]], [[Fortran]], Fortran 77, [[Erlang (programming language)|Erlang]], [[Objective-C]] software on [[Unix-like]] computer systems. | ||
|- | |- | ||
| [[Automake]] | | [[Automake]] | ||
| A [[programming tool]] that produces portable [[makefile]]s for use by the [[make (software)|make]] program, used in compiling software. | | A [[programming tool]] that produces portable [[makefile]]s for use by the [[make (software)|make]] program, used in compiling software. | ||
|- | |- | ||
| [[Bash (Unix shell)|Bash]] | | [[Bash (Unix shell)|Bash]] | ||
| A [[free software]] [[Unix shell]] written for the [[GNU Project]] | | A [[free software]] [[Unix shell]] written for the [[GNU Project]] | ||
|- | |- | ||
| [[bc (programming language)|bc]] | | [[bc (programming language)|bc]] | ||
| <code>bc</code> is a basic calculator (often referred to as bench calculator), is "an arbitrary precision calculator language" with syntax similar to the [[C (programming language)|C programming language]]. | | <code>bc</code> is a basic calculator (often referred to as bench calculator), is "an arbitrary precision calculator language" with syntax similar to the [[C (programming language)|C programming language]]. | ||
|- | |- | ||
| [[Binutils]] | | [[Binutils]] | ||
| A collection of [[programming tool]]s for the manipulation of [[object code]] in various object file formats. | | A collection of [[programming tool]]s for the manipulation of [[object code]] in various object file formats. | ||
|- | |- | ||
| [[GNU Bison|Bison]] | | [[GNU Bison|Bison]] | ||
| A [[parser generator]] that is part of the [[GNU Project]]. Bison converts a [[Formal grammar|grammar]] description for a [[context-free grammar]] into source code for a [[C (programming language)|C]], [[C++]] or [[Java (programming language)|Java]] parser. | | A [[parser generator]] that is part of the [[GNU Project]]. Bison converts a [[Formal grammar|grammar]] description for a [[context-free grammar]] into source code for a [[C (programming language)|C]], [[C++]] or [[Java (programming language)|Java]] parser. | ||
|- | |- | ||
| [[Bzip2]] | | [[Bzip2]] | ||
| Line 90: | Line 111: | ||
| [[Check (unit testing framework)|Check]] | | [[Check (unit testing framework)|Check]] | ||
| A unit testing framework for [[C (programming language)|C]]. | | A unit testing framework for [[C (programming language)|C]]. | ||
| [[GNU GPL]] | | rowspan="5" | [[GNU GPL]] | ||
|- | |- | ||
| [[Coreutils]] | | [[Coreutils]] | ||
| A [[Software package (installation)|package]] of [[GNU]] [[software]] containing many of the basic tools, such as [[cat (Unix)|cat]], [[ls]], and [[rm (Unix)|rm]], needed for [[Unix-like]] [[operating system]]s. | | A [[Software package (installation)|package]] of [[GNU]] [[software]] containing many of the basic tools, such as [[cat (Unix)|cat]], [[ls]], and [[rm (Unix)|rm]], needed for [[Unix-like]] [[operating system]]s. | ||
|- | |- | ||
| [[DejaGnu | | [[DejaGnu]] | ||
| A framework for testing other programs. It has a main script called runtest that goes through a directory looking at configuration files and then runs some tests with given criteria. | | A framework for testing other programs. It has a main script called runtest that goes through a directory looking at configuration files and then runs some tests with given criteria. | ||
|- | |- | ||
| [[diff utility|Diffutils]] | | [[diff utility|Diffutils]] | ||
| A [[data comparison]] utility that outputs the differences between two files. | | A [[data comparison]] utility that outputs the differences between two files. | ||
|- | |- | ||
|[[E2fsprogs]] | |[[E2fsprogs]] | ||
| e2fsprogs (sometimes called the e2fs programs) is a set of utilities for maintaining the [[ext2]], [[ext3]] and [[ext4]] [[file system]]s. | | e2fsprogs (sometimes called the e2fs programs) is a set of utilities for maintaining the [[ext2]], [[ext3]] and [[ext4]] [[file system]]s. | ||
|- | |- | ||
| [[GNU Binutils#elfutils|Elfutils]] | | [[GNU Binutils#elfutils|Elfutils]] | ||
| Line 113: | Line 130: | ||
|- | |- | ||
|[[Systemd#Forks and alternative implementations|Eudev]] | |[[Systemd#Forks and alternative implementations|Eudev]] | ||
| A fork of [[udev]] | | A fork of [[udev]] to avoid dependency on the systemd architecture. The resulting fork is called eudev and it makes udev functionality available without [[systemd]]. | ||
| [[GNU GPL]] | | [[GNU GPL]] | ||
|- | |- | ||
| [[Expat (library)|Expat]] | | [[Expat (library)|Expat]] | ||
| A [[Stream (computing)|stream]]-oriented [[XML | | A [[Stream (computing)|stream]]-oriented [[XML]] 1.0 parser [[library (computer science)|library]], written in [[C (programming language)|C]]. | ||
| [[MIT License]] | | [[MIT License]] | ||
|- | |- | ||
| Line 128: | Line 145: | ||
| [[BSD License|BSD-like License]] | | [[BSD License|BSD-like License]] | ||
|- | |- | ||
| [[Find (Unix)| | | [[Find (Unix)|Findutils]] | ||
| The [[find (Unix)|GNU Find]] Utilities are the basic directory searching utilities of the GNU operating system. | | The [[find (Unix)|GNU Find]] Utilities are the basic directory searching utilities of the GNU operating system. | ||
| [[GNU GPL]] | | [[GNU GPL]] | ||
| Line 181: | Line 198: | ||
| A set of tools to centralize translation of many different file formats using GNU gettext-compatible PO files. | | A set of tools to centralize translation of many different file formats using GNU gettext-compatible PO files. | ||
|- | |- | ||
| [[iproute2 | | [[iproute2]] | ||
|A collection of [[userspace]] utilities for controlling and monitoring various aspects of [[Computer networking|networking]] in the [[Linux kernel]], including [[routing]], network interfaces, tunnels, [[Network traffic control|traffic control]], and network-related [[device driver]]s. | |A collection of [[userspace]] utilities for controlling and monitoring various aspects of [[Computer networking|networking]] in the [[Linux kernel]], including [[routing]], network interfaces, tunnels, [[Network traffic control|traffic control]], and network-related [[device driver]]s. | ||
|- | |- | ||
| Line 200: | Line 217: | ||
| Libcap | | Libcap | ||
| An alternative to the superuser model of privilege under Linux. | | An alternative to the superuser model of privilege under Linux. | ||
| | | [[BSD-3-Clause]] or [[GPL-2.0-only]]<ref>{{Cite web |title=index : libcap/libcap.git |url=https://git.kernel.org/pub/scm/libs/libcap/libcap.git/tree/License |access-date=9 September 2025 |website=git.kernel.org}}</ref> | ||
|- | |||
| [[GNU Binutils#elfutils|Libelf]] | |||
| The elfutils project provides libraries and tools for ELF files and DWARF data. Most utilities in this package are available in other packages, but the library is needed to build the Linux kernel using the default (and most efficient) configuration. | |||
| dual [[GPLv2+]]/[[LGPLv3]]+<ref>{{Cite web |title=The elfutils project |url=https://sourceware.org/elfutils/ |access-date=9 September 2025 |website=sourceware.org}}</ref> | |||
|- | |- | ||
| [[Libffi]] | | [[Libffi]] | ||
| Line 208: | Line 229: | ||
| Libpipeline | | Libpipeline | ||
| Libpipeline is a C library for manipulating pipelines of subprocesses in a flexible and convenient way. | | Libpipeline is a C library for manipulating pipelines of subprocesses in a flexible and convenient way. | ||
| rowspan=" | | rowspan="2" | [[GNU GPL]] | ||
|- | |- | ||
| [[Libtool]] | | [[Libtool]] | ||
| GNU Libtool is a [[GNU]] [[programming tool]] from the [[GNU build system]] used for creating portable compiled [[library (computer science)|libraries]]. | | GNU Libtool is a [[GNU]] [[programming tool]] from the [[GNU build system]] used for creating portable compiled [[library (computer science)|libraries]]. | ||
|- | |- | ||
| [[Linux kernel | | Libxcrypt | ||
| Package that provides the libcrypt library needed by various packages (notably, Shadow) for hashing passwords. It replaces the obsolete libcrypt implementation in Glibc. | |||
| GNU [[LGPLv2.1]]<ref>{{Cite web |last=((besser82)) |title=libxcrypt/licensing at develop · besser82/libxcrypt |url=https://github.com/besser82/libxcrypt/blob/develop/LICENSING |access-date=9 September 2025 |website=GitHub |language=en}}</ref> | |||
|- | |||
| [[Linux kernel]] | |||
| The Linux kernel is an operating system [[kernel (operating system)|kernel]] used by the [[Linux]] family of [[Unix-like]] [[operating system]]s. | | The Linux kernel is an operating system [[kernel (operating system)|kernel]] used by the [[Linux]] family of [[Unix-like]] [[operating system]]s. | ||
| rowspan="4" | [[GNU GPL]] | |||
|- | |- | ||
| [[GNU m4]] | | [[GNU m4]] | ||
| Line 220: | Line 246: | ||
|- | |- | ||
| [[make (software)|make]] | | [[make (software)|make]] | ||
| Make is a [[utility software|utility]] for [[Build Automation|automatically | | Make is a [[utility software|utility]] for [[Build Automation|automatically building]] executable programs and libraries from [[source code]]. | ||
|- | |- | ||
| Man-DB | | Man-DB | ||
| Line 226: | Line 252: | ||
|- | |- | ||
| [[Man pages|Man-pages]] | | [[Man pages|Man-pages]] | ||
| A man page (short for manual page) is a form of online software documentation usually found on a [[Unix]] or [[Unix-like]] operating system. | | A man page (short for manual page) is a form of online software documentation usually found on a [[Unix]] or [[Unix-like]] operating system. | ||
| Multiple Licenses.<ref name=":0">{{cite web|url=https://www.kernel.org/doc/man-pages/licenses.html| | | Multiple Licenses.<ref name=":0">{{cite web |title=Licenses for manual pages |url=https://www.kernel.org/doc/man-pages/licenses.html |access-date=25 May 2018 |website=www.kernel.org |archive-date=6 January 2018 |archive-url=https://web.archive.org/web/20180106142651/https://www.kernel.org/doc/man-pages/licenses.html |url-status=dead }}</ref> | ||
|- | |- | ||
| [[Meson (software)|Meson]] | | [[Meson (software)|Meson]] | ||
| an open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible. | | an open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible. | ||
| [[Apache License]] | | [[Apache License]] | ||
| Line 243: | Line 269: | ||
| [[ncurses]] | | [[ncurses]] | ||
| A programming library for writing text user interfaces in a terminal-independent manner | | A programming library for writing text user interfaces in a terminal-independent manner | ||
| [[X11 License]]<ref name=":1">{{cite web |url=http://invisible-island.net/ncurses/ncurses-license.html | | [[X11 License]]<ref name=":1">{{cite web |title=ncurses – Licensing |url=http://invisible-island.net/ncurses/ncurses-license.html |access-date=9 July 2013 |website=invisible-island.net}}</ref> | ||
|- | |- | ||
| [[Ninja (build system)|Ninja]] | | [[Ninja (build system)|Ninja]] | ||
| Line 254: | Line 280: | ||
|- | |- | ||
| [[Patch (Unix)|Patch]] | | [[Patch (Unix)|Patch]] | ||
| A computer tool for [[Unix]] [[computer program| | | A computer tool for [[Unix]] [[computer program|programs]] that updates text files according to instructions contained in a separate file, called a ''patch file''. | ||
| [[GNU GPL]] | | [[GNU GPL]] | ||
|- | |- | ||
| [[Perl]] | | [[Perl]] | ||
|A dynamic interpreted programming language | |A dynamic interpreted programming language | ||
| [[Artistic License]] 1.0<ref name="artistic-1.0">{{cite web|url=http://dev.perl.org/licenses/artistic.html| | | [[Artistic License]] 1.0<ref name="artistic-1.0">{{cite web |title=The "Artistic License" – dev.perl.org |url=http://dev.perl.org/licenses/artistic.html |access-date=25 May 2018 |website=dev.perl.org}}</ref><ref name="artistic-1.0-git">{{Cite web |title=perl5.git.perl.org Git |url=https://perl5.git.perl.org/perl.git/blob/HEAD:/Artistic |archive-url=https://web.archive.org/web/20250412160441/https://perl5.git.perl.org/perl.git/blob/HEAD:/Artistic |archive-date=12 April 2025 |access-date=8 September 2025 |website=perl5.git.perl.org |language=en-US |url-status=live }}</ref> or [[GNU GPL]]<ref name="licensing">{{cite web |title=Perl Licensing |url=http://dev.perl.org/licenses |access-date=8 January 2011 |publisher=dev.perl.org}}</ref> | ||
|- | |- | ||
| [[Pkg-config]] | | [[Pkg-config|Pkgconf]] | ||
| A computer program that provides a unified interface for querying installed [[library (computer science)|libraries]] for the purpose of [[Compiler|compiling]] software from its [[source code]]. | | A computer program that provides a unified interface for querying installed [[library (computer science)|libraries]] for the purpose of [[Compiler|compiling]] software from its [[source code]]. | ||
| [[GNU General Public License|GNU GPL]] | | [[GNU General Public License|GNU GPL]] | ||
|- | |- | ||
| Procps | | Procps-NG | ||
| A set of command line and full-screen utilities that provide information out of the pseudo-filesystem most commonly located at [[Procfs|/proc]]. This filesystem provides a simple interface to the kernel data structures. The programs of procps generally concentrate on the structures that describe the processes running on the system. | | A set of command line and full-screen utilities that provide information out of the pseudo-filesystem most commonly located at [[Procfs|/proc]]. This filesystem provides a simple interface to the kernel data structures. The programs of procps generally concentrate on the structures that describe the processes running on the system. | ||
| [[GNU GPL]] and [[GNU LGPL]] | | [[GNU GPL]] and [[GNU LGPL]] | ||
| Line 292: | Line 318: | ||
|- | |- | ||
| Sysklogd | | Sysklogd | ||
| A Kernel and system logging [[Daemon (computing)| | | A Kernel and system logging [[Daemon (computing)|daemons]] that provides two system utilities which provide support for system logging and kernel message trapping. Support of both internet and unix domain sockets enables this utility package to support both local and remote logging. | ||
| rowspan="3" | [[GNU GPL]] | | rowspan="3" | [[GNU GPL]] | ||
|- | |- | ||
| Line 303: | Line 329: | ||
| [[Tcl]] | | [[Tcl]] | ||
| ''Tool Command Language'' is a dynamic [[scripting language]]. | | ''Tool Command Language'' is a dynamic [[scripting language]]. | ||
| [[BSD licenses|BSD-like License]]<ref name="Tool Command Language License">{{cite web|url=http://www.tcl.tk/software/tcltk/license.html | | [[BSD licenses|BSD-like License]]<ref name="Tool Command Language License">{{cite web |title=Tcl/Tk Licensing Terms |url=http://www.tcl.tk/software/tcltk/license.html |access-date=8 January 2011 |website=tcl.tk}}</ref> | ||
|- | |- | ||
| [[Texinfo]] | | [[Texinfo]] | ||
| Line 321: | Line 347: | ||
| [[GNU GPL]] | | [[GNU GPL]] | ||
|- | |- | ||
| [[Vim (text editor)|Vim]] | | [[Vim (text editor)|Vim]] | ||
| A text editor built to create and change any kind of text. | | A text editor built to create and change any kind of text. | ||
| [[free software license|Free software]] ( | | [[free software license|Free software]] (Vim License<ref>{{Cite web |title=vim/license at master · vim/vim |url=https://github.com/vim/vim/blob/master/LICENSE |access-date=8 September 2025 |website=GitHub |language=en}}</ref>), [[charityware]] | ||
|- | |- | ||
| | | Wheel | ||
|This library is the reference implementation of the Python wheel packaging standard, as defined in PEP 427. | |This library is the reference implementation of the Python wheel packaging standard, as defined in PEP 427. | ||
|[[MIT License|MIT]] | |[[MIT License|MIT]] | ||
|- | |- | ||
| XML::Parser | | XML::Parser | ||
| | | [[Perl]] module that interfaces with [[Expat (library)|Expat]] | ||
| | | [[Artistic License 2.0]]<ref>{{Cite web |title=toddr / XML-Parser-2.47 / LICENSE |url=https://metacpan.org/release/TODDR/XML-Parser-2.47/source/LICENSE |access-date=9 September 2025 |website=metacpan.org}}</ref> | ||
|- | |- | ||
| [[XZ Utils]] | | [[XZ Utils]] | ||
| Line 343: | Line 369: | ||
| [[zstd]] | | [[zstd]] | ||
| zstd a fast lossless compression algorithm and data compression tool. Compress or decompress .zst files. | | zstd a fast lossless compression algorithm and data compression tool. Compress or decompress .zst files. | ||
| BSD + GPLv2 dual license.<ref> | | BSD + GPLv2 dual license.<ref>{{Cite web |last=((Cyan4973)) |title=New license by Cyan4973 · Pull Request #801 · facebook/zstd |url=https://github.com/facebook/zstd/pull/801 |access-date=8 September 2025 |website=GitHub |language=en}}</ref><ref>{{Cite web |title=zstd/license at dev · facebook/zstd |url=https://github.com/facebook/zstd/blob/dev/LICENSE |access-date=8 September 2025 |website=GitHub |language=en}}</ref> | ||
|} | |} | ||
This is a list of the packages included in CLFS version 1.1.0. Unless otherwise noted, this list is applicable to all supported architectures. | This is a list of the packages included in CLFS version 1.1.0. Unless otherwise noted, this list is applicable to all supported architectures. | ||
{{updated|9 September 2025|<ref>{{cite web |title=list: /lfs/downloads/stable/wget-list |url=https://www.linuxfromscratch.org/lfs/downloads/stable/wget-list |access-date=9 September 2025 |website=www.linuxfromscratch.org |format=txt}}</ref> }} | |||
<!-- list is sorted based on how they appear on above reference --> | |||
{{Col-begin}} | {{Col-begin}} | ||
{{Col-break}} | {{Col-break}} | ||
*[[Autoconf]] 2. | *[[Access control list|Acl]] 2.3.2 | ||
*[[Automake]] 1. | *attr 2.5.2 | ||
*[[Bash (Unix shell)|Bash]] | *[[Autoconf]] 2.72 | ||
*[[Automake]] 1.18.1 | |||
*[[Bash (Unix shell)|Bash]] 5.2 | |||
*[[Bash (Unix shell)|Bash]] Documentation 3.2 | *[[Bash (Unix shell)|Bash]] Documentation 3.2 | ||
*[[bc (programming language)|bc]] 7.0.3 | |||
*[[Bin86]] (x86_64 non-multilib only) | *[[Bin86]] (x86_64 non-multilib only) | ||
*[[Binutils]] 2. | *[[Binutils]] 2.45 | ||
*[[GNU Bison|Bison]] 2 | *[[GNU Bison|Bison]] 3.8.2 | ||
*[[Bzip2]] 1.0. | *[[Bzip2]] 1.0.8 | ||
*CLFS-Bootscripts 1.0pre10 | *CLFS-Bootscripts 1.0pre10 | ||
*[[Coreutils]] | *[[Coreutils]] 9.7 | ||
*[[DejaGnu | *[[D-Bus]] 1.16.2 | ||
*[[ | *[[DejaGnu]] 1.6.3 | ||
*[[E2fsprogs]] 1. | *[[Diffutils]] 3.12 | ||
*[[E2fsprogs]] 1.47.3 | |||
*[[Elftoaout]] 2.3 (Sparc and Sparc64 only) | *[[Elftoaout]] 2.3 (Sparc and Sparc64 only) | ||
*[[Expect]] 5. | *[[GNU Binutils#elfutils|Elfutils]] 0.193 | ||
*[[file (command)|File]] | *[[Expat (software)|Expat]] 2.7.1 | ||
*[[Find (Unix)| | *[[Expect]] 5.45.4 | ||
*[[Flex lexical analyser|Flex]] 2. | *[[file (command)|File]] 5.46 | ||
*[[Gawk (GNU package)|Gawk]] 3. | *[[Find (Unix)|Findutils]] 4.10.0 | ||
*[[GNU Compiler Collection|GCC]] | *[[Flex lexical analyser|Flex]] 2.6.4 | ||
*[[Gettext]] 0. | *flit-core 3.12.0 | ||
*[[Glibc]] 2. | *[[Gawk (GNU package)|Gawk]] 5.3.2 | ||
*[[GNU Compiler Collection|GCC]] 15.2.0 | |||
*[[Gdbm]] 1.26 | |||
*[[Gettext]] 0.26 | |||
*[[Glibc]] 2.42 | |||
*gmp 6.3.0 | |||
*gperf 3.3 | |||
*[[Grep]] 3.12 | |||
*[[Groff (software)|Groff]] 1.23.0 | |||
{{Col-break}} | {{Col-break}} | ||
*[[ | *[[GRUB]] 2.12 | ||
*[[Gzip]] 1.14 | |||
*[[Gzip]] 1. | |||
*[[Hfsutils]] 3.2.6 (PowerPC and PowerPC64 only) | *[[Hfsutils]] 3.2.6 (PowerPC and PowerPC64 only) | ||
* | *iana-Etc 20250807 | ||
* | *inetutils 2.6 | ||
*[[iproute2 | *intltool 0.51.0 | ||
* | *[[iproute2]] 2.6 | ||
*[[Less (Unix)|Less]] | *[[Jinja2]] 3.1.6 | ||
*kbd 2.8.0 | |||
*[[Loadable kernel module|kmod]] 34.2 | |||
*[[Less (Unix)|Less]] 679 | |||
*lfs-bootscripts 20250827 | |||
*libcap 2.76 | |||
*libffi 3.5.2 | |||
*libpipeline 1.5.8 | |||
*[[LILO (boot loader)|LILO]] 22.8 (x86_64 non-multilib only) | *[[LILO (boot loader)|LILO]] 22.8 (x86_64 non-multilib only) | ||
*[[Libtool]] | *[[Libtool]] 2.5.4 | ||
*[[Linux kernel|Linux]] | *libxcrypt 4.4.38 | ||
*[[GNU m4]] 1.4. | *[[Linux kernel|Linux]] 6.16.1 | ||
*[[make (software)|Make]] | *[[LZ4 (compression algorithm)|lz4]] 1.10.0 | ||
* | *[[GNU m4]] 1.4.20 | ||
*[[Man pages| | *[[make (software)|Make]] 4.4.1 | ||
* | *man 1.6e | ||
*man-db 2.13.1 | |||
*[[Man pages]] 6.15 | |||
*[[Flask (web framework)#MarkupSafe|MarkupSafe]] 3.0.2 | |||
*[[Meson (software)|Meson]] 1.8.3 | |||
*mktemp 1.5 | |||
*Module-Init-Tools 3.4 | *Module-Init-Tools 3.4 | ||
*[[ | *mpc 1.3.1 | ||
*[[GNU MPFR]] 4.2.2 | |||
*[[ncurses]] 6.5.20250809 | |||
*[[Ninja (build system)|Ninja]] 1.13.1 | |||
*[[OpenSSL]] 3.5.2 | |||
{{Col-break}} | |||
*packaging 25.0 | |||
*[[Parted]] 1.8.8 (PowerPC and PowerPC64 only) | *[[Parted]] 1.8.8 (PowerPC and PowerPC64 only) | ||
*[[ | *[[patch (Unix)|patch]] 2.8 | ||
*[[Perl]] 5.42.0 | |||
*[[ | *[[Pkg-config]] 2.5.1 | ||
*[[PowerPC Utils]] 1.1.3 (PowerPC and PowerPC64 only) | *[[PowerPC Utils]] 1.1.3 (PowerPC and PowerPC64 only) | ||
* | *procps-ng 4.0.5 | ||
* | *psmisc 23.7 | ||
*[[Readline]] | *[[Python (programming language)|Python]] 3.13.7 | ||
*[[Sed]] 4. | *[[Readline]] 8.3 | ||
*[[Shadow password|Shadow]] 4. | *[[Sed]] 4.9 | ||
* | *setuptools 80.9.0 | ||
*[[Sysklogd]] | *[[Shadow password|Shadow]] 4.18.0 | ||
*[[Sysvinit]] | *silo 1.4.13 (Sparc and Sparc64 only) | ||
*[[tar (file format)|tar]] 1. | *[[Sysklogd]] 2.7.2 | ||
*[[Tcl]] 8. | *[[systemd]] 257.8 | ||
*[[Texinfo]] | *[[systemd]]-man-pages 257.8 | ||
* | *[[Sysvinit]] 3.14 | ||
*[[tar (file format)|tar]] 1.35 | |||
*[[Tcl]] 8.6.16 | |||
*[[Texinfo]] 7.2 | |||
*tree 1.5.1.1 | |||
*[[Tzdata]] 2025b | |||
*udev-lfs 20230818 | |||
*[[Udev]] 124 | *[[Udev]] 124 | ||
*[[Util-linux | *[[Util-linux]] 2.41.1 | ||
*[[Vim (text editor)|Vim]] 9.1.1629 | |||
*[[Vim (text editor)|Vim]] | |||
*[[Yaboot]] 1.3.13 (PowerPC and PowerPC64 only) | *[[Yaboot]] 1.3.13 (PowerPC and PowerPC64 only) | ||
*[[Zlib]] 1. | *wheel 0.46 | ||
*XML-Parser 2.47 | |||
*xz 5.8.1 | |||
*[[Zlib]] 1.3.1 | |||
*[[zstd]] 1.5.7 | |||
{{Col-end}} | {{Col-end}} | ||
==Standard build unit== | == Standard build unit == | ||
A "standard build unit" ("SBU") is a term used during initial bootstrapping of the system, and represents the amount of time required to build the first package in LFS on a given computer. Its creation was prompted by the long time required to build an LFS system, and the desire of many users to know how long a source tarball will take to build ahead of time. | A "standard build unit" ("SBU") is a term used during initial bootstrapping of the system, and represents the amount of time required to build the first package in LFS on a given computer. Its creation was prompted by the long time required to build an LFS system, and the desire of many users to know how long a source tarball will take to build ahead of time. | ||
| Line 425: | Line 489: | ||
== Reception == | == Reception == | ||
[[LWN.net]] reviewed LFS in 2004:<ref>{{Cite web|url=https://lwn.net/Articles/85865/| | [[LWN.net]] reviewed LFS in 2004:<ref>{{Cite web |last=Bodnar |first=Ladislav |date=19 May 2004 |title=Learning with Linux From Scratch |url=https://lwn.net/Articles/85865/ |access-date=28 March 2020 |website=lwn.net}}</ref> | ||
{{blockquote|Linux From Scratch is a wonderful project. It should become a compulsory reading material for all Linux training courses, and something that every Linux enthusiast should complete at least once. This would also create another interesting side effect: people who tend to be quick in expressing dissatisfaction on the distributions' mailing lists and forums would probably show a lot more respect for the developers. Installing a ready-made distribution is a trivial task. Building up a set of 4 CDs containing a stable, secure and reliable operating system, plus thousands of applications, is most definitely not.}} | {{blockquote|Linux From Scratch is a wonderful project. It should become a compulsory reading material for all Linux training courses, and something that every Linux enthusiast should complete at least once. This would also create another interesting side effect: people who tend to be quick in expressing dissatisfaction on the distributions' mailing lists and forums would probably show a lot more respect for the developers. Installing a ready-made distribution is a trivial task. Building up a set of 4 CDs containing a stable, secure and reliable operating system, plus thousands of applications, is most definitely not.}} | ||
Tux Machines wrote a review about Linux From Scratch 6.1 in 2005:<ref>{{Cite web| | Tux Machines wrote a review about Linux From Scratch 6.1 in 2005:<ref>{{Cite web |author=srlinuxx |date=11 July 2005 |title=Linux From Scratch 6.1 (part 1?) {{!}} Tux Machines |url=http://www.tuxmachines.org/node/1715 |access-date=28 March 2020 |website=www.tuxmachines.org}}</ref> | ||
{{blockquote|Now on to BLFS. Unfortunately Beyond Linux From Scratch is always a book behind it seems. To me it's not a real install until one can log into a window manager.}} | {{blockquote|Now on to BLFS. Unfortunately Beyond Linux From Scratch is always a book behind it seems. To me it's not a real install until one can log into a window manager.}} | ||
Tux Machines also has a second<ref>{{Cite web|title=Linux From Scratch 6.1 | Tux Machines also has a second<ref>{{Cite web |author=srlinuxx |date=11 July 2005 |title=Linux From Scratch 6.1 – Part 2 – BLFS {{!}} Tux Machines |url=http://www.tuxmachines.org/node/2482 |access-date=28 March 2020 |website=www.tuxmachines.org}}</ref> and a third part<ref>{{Cite web |author=srlinuxx |date=5 September 2005 |title=Beyond Beyond Linux from Scratch (lfs – part3) {{!}} Tux Machines |url=http://www.tuxmachines.org/node/2521 |access-date=28 March 2020 |website=www.tuxmachines.org}}</ref> of the review. | ||
==See also== | == See also == | ||
{{Portal|Free and open-source software}} | {{Portal|Free and open-source software}} | ||
Other source-based Linux distributions: | Other source-based Linux distributions: | ||
| Line 441: | Line 505: | ||
<!-- Do not add to "See Also" sections until the page exists. --> | <!-- Do not add to "See Also" sections until the page exists. --> | ||
==References== | == References == | ||
{{Reflist|30em}} | {{Reflist|30em}} | ||
==External links== | == External links == | ||
* {{Official website|www.linuxfromscratch.org}} | * {{Official website|www.linuxfromscratch.org}} | ||
* {{DistroWatch|lfs|NAME=Linux From Scratch}} | * {{DistroWatch|lfs|NAME=Linux From Scratch}} | ||
* | * {{Cite web |title=Interview with Gerard Beekmans |url=http://www.packtpub.com/article/Linux_From_Scratch |url-status=dead |archive-url=https://web.archive.org/web/20131203041113/http://www.packtpub.com/article/Linux_From_Scratch |archive-date=3 December 2013 |access-date=9 September 2025 |publisher=Packt Publishing}} | ||
* {{Cite web |last=Locutus |date=10 December 2007 |title=Its Linux and I did it my way. An interview with Gerard Beekmans |url=http://it.toolbox.com/blogs/locutus/its-linux-and-i-did-it-my-way-an-interview-with-gerard-beekmans-19686 |url-status=dead |archive-url=https://web.archive.org/web/20080727075353/http://it.toolbox.com/blogs/locutus/its-linux-and-i-did-it-my-way-an-interview-with-gerard-beekmans-19686 |archive-date=27 July 2008 |access-date=9 September 2025 |website=it.toolbox.com}} | |||
{{Linux}} | {{Linux distributions}} | ||
[[Category:Books about Linux]] | [[Category:Books about Linux]] | ||
Latest revision as of 18:22, 23 October 2025
Template:Short description Script error: No such module "Unsubst". Template:Use dmy dates Script error: No such module "Unsubst".Script error: No such module "Check for unknown parameters".
Linux From Scratch (LFS) is a type of Linux installation, and the name of a book written by Gerard Beekmans, and as of May 2021, mainly maintained by Bruce Dubbs. The book gives readers instructions on how to build a Linux system from source. The book is available freely from the Linux From Scratch site.[1]
Projects under LFS
Linux From Scratch is a way to install a working Linux system by building all components of it manually. This is, naturally, a longer process than installing a pre-compiled Linux distribution. According to the Linux From Scratch site, the advantages to this method are a compact, flexible and secure system and a greater understanding of the internal workings of the Linux-based operating systems.[2]
To keep LFS small and focused, the book Beyond Linux From Scratch (BLFS) was created, which presents instructions on how to further develop the basic Linux system that was created in LFS. It introduces and guides the reader through additions to the system including the X Window System, desktop environments (KDE, GNOME, Xfce, LXDE), productivity software, web browsers, programming languages and tools, multimedia software, and network management and system administration tools. Since Release 7.4, the BLFS book version matches the LFS book version.[3]
The book Cross Linux From Scratch (CLFS) focuses on cross compiling, including compiling for headless or embedded systems that can run Linux, but lack the resources needed to compile Linux.[4] CLFS supports a broad range of processors and addresses advanced techniques not included in the LFS book such as cross-build toolchains, multilibrary support (32 & 64-bit libraries side-by-side), and alternative instruction set architectures such as Itanium, SPARC, MIPS, and Alpha. The project is archived and was last updated in August 2017.[4]
The Linux from Scratch project, like BitBake, also supports cross-compiling Linux for ARM embedded systems such as the Raspberry Pi and BeagleBone.[5][6]
The book Hardened Linux From Scratch (HLFS) focuses on security enhancements such as hardened kernel patches, mandatory access control policies, stack-smashing protection, and address space layout randomization.[7] Besides its main purpose of creating a security-focused operating system, HLFS had the secondary goal of being a security teaching tool. It has not been updated since 2011. As of 17 February 2025, the HLFS book has disappeared from the LFS web site.
Automated Linux From Scratch (ALFS) is a project designed to automate the process of creating an LFS system.[8] It is aimed at users who have gone through the LFS and BLFS books several times and wish to reduce the amount of work involved.[9] A secondary goal is to act as a test of the LFS and BLFS books by directly extracting and running instructions from the XML sources of the LFS and BLFS books.
Other subprojects:
- As of 9 September 2025[8]Script error: No such module "Check for unknown parameters".
| Name | Description |
|---|---|
| MLFS | Multilib-LFS is a variant of LFS that builds a system which is able to execute 32-bit binaries. |
| GLFS | Gaming Linux From Scratch is based on BLFS and helps user install gaming support software like Steam or Wine on a new LFS or MLFS system. |
| Hints | Collection of documents that explain how to enhance LFS system in ways that are not included in the LFS or BLFS books. |
| Patches | Central repository for all patches useful to an LFS user. |
| LFS Editor's Guide | A document that describes the LFS development process. |
| Museum | Copies of ancient LFS and BLFS versions. |
Requirements and procedure
A clean partition and a working Linux system with a compiler and some essential software libraries are required to build LFS. Instead of installing from an existing Linux system, one can also use a Live CD to build an LFS system.
The project formerly maintained the Linux From Scratch Live CD.[10] LFS Live CD contains all the source packages (in the full version of the Live CD only), the LFS book, automated building tools and (except for the minimal Live CD version) an Xfce GUI environment to work in. The official LFS Live CD is no longer maintained, and cannot be used to build the LFS version 7 or later.[10] There are, however, two unofficial builds that can be used to build a 32-bit or 64-bit kernel and userspace respectively for LFS 7.x.[11]
First, a toolchain must be compiled consisting of the tools used to compile LFS, like GCC, glibc, binutils, and other necessary utilities. Then, the root directory must be changed, (using chroot), to the toolchain's partition to start building the final system. One of the first packages to compile is glibc; after that, the toolchain's linker must be adjusted to link against the newly built glibc, so that all other packages that will make up the finished system can be linked against it as well. During the chroot phase, bash's hashing feature is turned off and the temporary toolchain's bin directory moved to the end of PATH. This way the newly compiled programs come first in PATH and the new system builds on its own new components.
List of packages in LFS
- As of 9 September 2025[12]Script error: No such module "Check for unknown parameters".
| Component | Description | License |
|---|---|---|
| Acl | An access control list (ACL), with respect to a computer file system, is a list of permissions attached to an object. | GNU GPL |
| Attr | Commands for Manipulating Filesystem Extended Attributes. | |
| Autoconf | Tool for producing configure scripts for C, C++, Fortran, Fortran 77, Erlang, Objective-C software on Unix-like computer systems. | |
| Automake | A programming tool that produces portable makefiles for use by the make program, used in compiling software. | |
| Bash | A free software Unix shell written for the GNU Project | |
| bc | bc is a basic calculator (often referred to as bench calculator), is "an arbitrary precision calculator language" with syntax similar to the C programming language.
| |
| Binutils | A collection of programming tools for the manipulation of object code in various object file formats. | |
| Bison | A parser generator that is part of the GNU Project. Bison converts a grammar description for a context-free grammar into source code for a C, C++ or Java parser. | |
| Bzip2 | A free and open source lossless data compression algorithm and program developed by Julian Seward. | BSD-like License |
| Check | A unit testing framework for C. | GNU GPL |
| Coreutils | A package of GNU software containing many of the basic tools, such as cat, ls, and rm, needed for Unix-like operating systems. | |
| DejaGnu | A framework for testing other programs. It has a main script called runtest that goes through a directory looking at configuration files and then runs some tests with given criteria. | |
| Diffutils | A data comparison utility that outputs the differences between two files. | |
| E2fsprogs | e2fsprogs (sometimes called the e2fs programs) is a set of utilities for maintaining the ext2, ext3 and ext4 file systems. | |
| Elfutils | A collection of utilities and libraries to read, create and modify ELF binary files. | GNU GPL and GNU LGPL |
| Eudev | A fork of udev to avoid dependency on the systemd architecture. The resulting fork is called eudev and it makes udev functionality available without systemd. | GNU GPL |
| Expat | A stream-oriented XML 1.0 parser library, written in C. | MIT License |
| Expect | Expect is a Unix automation and testing tool as an extension to the Tcl scripting language, for interactive applications such as telnet, ftp, passwd, fsck, rlogin, tip, ssh, and others. | Public domain |
| File | file command is a standard Unix program for recognizing the type of data contained in a computer file. | BSD-like License |
| Findutils | The GNU Find Utilities are the basic directory searching utilities of the GNU operating system. | GNU GPL |
| Flex | flex (fast lexical analyzer generator) is a free software alternative to lex. | BSD license |
| Gawk | Gawk is a programming language that is designed for processing text-based data, either in files or data streams | GNU GPL |
| GCC | The GNU Compiler Collection (usually shortened to GCC) is a compiler system produced by the GNU Project supporting various programming languages | |
| GDBM | GDBM simple database engines | |
| Gettext | Gettext is the GNU internationalization and localization (i18n) library. | |
| Glibc | The GNU C Library, commonly known as glibc, is the C standard library released by the GNU Project. | |
| GMP | The GNU Multiple-Precision Library, also known as GMP, is a free library for arbitrary-precision arithmetic, operating on signed integers, rational numbers, and floating point numbers. | |
| Gperf | A perfect hash function generator. For a given list of strings, it produces a hash function and hash table, in form of C or C++ code, for looking up a value depending on the input string. The hash function is perfect, which means that the hash table has no collisions, and the hash table lookup needs a single string comparison only. | |
| Grep | grep is a command line text search utility originally written for Unix.
| |
| Groff | Groff is the GNU replacement for the troff and nroff text formatters. | |
| GRUB | GNU GRUB (short for GNU GRand Unified Bootloader) is a boot loader package from the GNU Project. | |
| Gzip | Gzip is a software application used for file compression. gzip is short for GNU zip | |
| iana-etc. | iana-etc. installs services and protocols using data from the Internet Assigned Numbers Authority. Included are snapshots of the data from the IANA, scripts to transform that data into the needed formats, and scripts to fetch the latest data. | Open Software License |
| Inetutils | A collection of network tools, including: telnet, ftp, and rsh. | GNU GPL |
| Intltool | A set of tools to centralize translation of many different file formats using GNU gettext-compatible PO files. | |
| iproute2 | A collection of userspace utilities for controlling and monitoring various aspects of networking in the Linux kernel, including routing, network interfaces, tunnels, traffic control, and network-related device drivers. | |
| Kbd | A package contains tools for managing the Linux console (Linux console, virtual terminals on it, keyboard, etc.). Mainly, what they do is loading console fonts and keyboard maps. Also this package contains a set of various fonts and keyboard maps. | |
| Kmod | A multi-call binary which implements the programs used to control Linux Kernel modules. | |
| less | less is a terminal pager program on Unix, Windows and Unix-like systems used to view (but not change) the contents of a text file one screen at a time.
|
Dual: either GPL or BSD-like License |
| LFS-Bootscripts | The LFS-Bootscripts package contains a set of scripts to start/stop the LFS system at bootup/shutdown. The configuration files and procedures needed to customize the boot process are described in the following sections. | Creative Commons licenses and MIT License |
| Libcap | An alternative to the superuser model of privilege under Linux. | BSD-3-Clause or GPL-2.0-only[13] |
| Libelf | The elfutils project provides libraries and tools for ELF files and DWARF data. Most utilities in this package are available in other packages, but the library is needed to build the Linux kernel using the default (and most efficient) configuration. | dual GPLv2+/LGPLv3+[14] |
| Libffi | A Portable Foreign Function Interface Library. | MIT License |
| Libpipeline | Libpipeline is a C library for manipulating pipelines of subprocesses in a flexible and convenient way. | GNU GPL |
| Libtool | GNU Libtool is a GNU programming tool from the GNU build system used for creating portable compiled libraries. | |
| Libxcrypt | Package that provides the libcrypt library needed by various packages (notably, Shadow) for hashing passwords. It replaces the obsolete libcrypt implementation in Glibc. | GNU LGPLv2.1[15] |
| Linux kernel | The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. | GNU GPL |
| GNU m4 | GNU m4 is the GNU version of the m4 macro preprocessor. | |
| make | Make is a utility for automatically building executable programs and libraries from source code. | |
| Man-DB | Man-DB is an implementation of the standard Unix documentation system accessed using the man command. It uses a Berkeley DB database in place of the traditional flat-text whatis databases. | |
| Man-pages | A man page (short for manual page) is a form of online software documentation usually found on a Unix or Unix-like operating system. | Multiple Licenses.[16] |
| Meson | an open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible. | Apache License |
| MPC | A C library for the arithmetic of complex numbers with arbitrarily high precision | GNU LGPL |
| MPFR | GNU C library for multiple-precision floating-point computations with correct rounding. | GNU LGPL and GNU GPL for special exception part of the source code |
| ncurses | A programming library for writing text user interfaces in a terminal-independent manner | X11 License[17] |
| Ninja | A small build system with a focus on speed. | Apache License |
| OpenSSL | A software library for applications that provide secure communications over computer networks against eavesdropping, and identify the party at the other end. It is widely used by Internet servers, including the majority of HTTPS websites. | Apache License 1.0 and four-clause BSD License |
| Patch | A computer tool for Unix programs that updates text files according to instructions contained in a separate file, called a patch file. | GNU GPL |
| Perl | A dynamic interpreted programming language | Artistic License 1.0[18][19] or GNU GPL[20] |
| Pkgconf | A computer program that provides a unified interface for querying installed libraries for the purpose of compiling software from its source code. | GNU GPL |
| Procps-NG | A set of command line and full-screen utilities that provide information out of the pseudo-filesystem most commonly located at /proc. This filesystem provides a simple interface to the kernel data structures. The programs of procps generally concentrate on the structures that describe the processes running on the system. | GNU GPL and GNU LGPL |
| Psmisc | A set of some small useful utilities that use the proc filesystem. | GNU GPL |
| Python | An open source interpreted high-level programming language for general-purpose programming | Python Software Foundation License |
| Python Documentation | Package contains the Python development environment. | |
| Readline | GNU readline is a software library created and maintained by the GNU Project. | GNU GPL |
| sed | sed (stream editor) is a Unix utility that (a) parses text files and (b) implements a programming language which can apply textual transformations to such files.
| |
| Shadow | A tool on most Unix and Unix-like operating systems used to change a user's password. The password entered by the user is run through a key derivation function to create a hashed version of the new password, which is saved. Only the hashed version is stored; the entered password is not saved for security reasons. | Artistic License or BSD-like License |
| Sysklogd | A Kernel and system logging daemons that provides two system utilities which provide support for system logging and kernel message trapping. Support of both internet and unix domain sockets enables this utility package to support both local and remote logging. | GNU GPL |
| Sysvinit | System V style init programs that control the booting and shutdown system. | |
| tar | tar is a program that provides the ability to create tar archives, as well as various other kinds of manipulation.
| |
| Tcl | Tool Command Language is a dynamic scripting language. | BSD-like License[21] |
| Texinfo | A typesetting syntax used for generating documentation in both on-line also printed form and the official documentation format of the GNU project. | GNU GPL |
| tzdata | The public-domain time zone database contains code and data that represent the history of local time for many representative locations around the globe. | Public domain and BSD |
| Udev Configuration Tarball | The Udev package contains programs for dynamic creation of device nodes. The development of udev has been merged with systemd, but most of systemd is incompatible with LFS. Here we build and install just the needed udev files. | Creative Commons licenses and MIT License |
| util-linux | The Util-linux package contains miscellaneous utility programs. Among them are utilities for handling file systems, consoles, partitions, and messages. | GNU GPL |
| Vim | A text editor built to create and change any kind of text. | Free software (Vim License[22]), charityware |
| Wheel | This library is the reference implementation of the Python wheel packaging standard, as defined in PEP 427. | MIT |
| XML::Parser | Perl module that interfaces with Expat | Artistic License 2.0[23] |
| XZ Utils | A general-purpose data compression software with a high compression ratio. XZ Utils were written for POSIX-like systems, but also work on some not-so-POSIX systems. XZ Utils are the successor to LZMA Utils. | GNU GPL and GNU LGPL |
| Zlib | Zlib is a software library used for data compression. | zlib license |
| zstd | zstd a fast lossless compression algorithm and data compression tool. Compress or decompress .zst files. | BSD + GPLv2 dual license.[24][25] |
This is a list of the packages included in CLFS version 1.1.0. Unless otherwise noted, this list is applicable to all supported architectures.
- As of 9 September 2025[26]Script error: No such module "Check for unknown parameters".
<templatestyles src="Col-begin/styles.css"/>
|
|
|
Standard build unit
A "standard build unit" ("SBU") is a term used during initial bootstrapping of the system, and represents the amount of time required to build the first package in LFS on a given computer. Its creation was prompted by the long time required to build an LFS system, and the desire of many users to know how long a source tarball will take to build ahead of time.
As of Linux From Scratch version 10.1, the first package built by the user is GNU binutils. When building it, users are encouraged to measure the build process using shell constructs and dub that time the system's "standard build unit". Once this number is known, an estimate of the time required to build later packages is expressed relative to the known SBU.
Several packages built during compilation take much longer to build than binutils, including the GNU C Library (rated at 4.2 SBUs) and the GNU Compiler Collection (rated at 11 SBUs). The unit must be interpreted as an approximation; various factors influence the actual time required to build a package.
Reception
LWN.net reviewed LFS in 2004:[27]
<templatestyles src="Template:Blockquote/styles.css" />
Linux From Scratch is a wonderful project. It should become a compulsory reading material for all Linux training courses, and something that every Linux enthusiast should complete at least once. This would also create another interesting side effect: people who tend to be quick in expressing dissatisfaction on the distributions' mailing lists and forums would probably show a lot more respect for the developers. Installing a ready-made distribution is a trivial task. Building up a set of 4 CDs containing a stable, secure and reliable operating system, plus thousands of applications, is most definitely not.
Script error: No such module "Check for unknown parameters".
Tux Machines wrote a review about Linux From Scratch 6.1 in 2005:[28]
<templatestyles src="Template:Blockquote/styles.css" />
Now on to BLFS. Unfortunately Beyond Linux From Scratch is always a book behind it seems. To me it's not a real install until one can log into a window manager.
Script error: No such module "Check for unknown parameters".
Tux Machines also has a second[29] and a third part[30] of the review.
See also
Script error: No such module "Portal". Other source-based Linux distributions:
References
<templatestyles src="Reflist/styles.css" />
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ a b Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1"..
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ a b Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ a b Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
Script error: No such module "Check for unknown parameters".
External links
- Script error: No such module "Official website".Script error: No such module "Check for unknown parameters".
- Linux From Scratch at DistroWatch
- Script error: No such module "citation/CS1".
- Script error: No such module "citation/CS1".
Script error: No such module "Navbox".