Linux From Scratch (LFS) is a project that provides you with step-by-step instructions for building your own customized Linux system entirely from source.
Many wonder why they should go through the hassle of building a Linux system from scratch when they could just download an existing Linux distribution. However, there are several benefits of building LFS. Consider the following:
LFS teaches people how a Linux system works internally
Building LFS teaches you about all that makes Linux tick, how things
work together and depend on each other. And most importantly, how to
customize it to your own tastes and needs.
Building LFS produces a very compact Linux system
When you install a regular distribution, you often end up installing a lot of programs that
you would probably never use. They're just sitting there taking up (precious)
disk space. It's not hard to get an LFS system installed under 500 MB. Does
that still sound like a lot? A few of us have been working on creating an
LFS system even smaller. We installed a system that was just enough
to run the Apache web server; total disk space usage was a little
below 200 MB. Try that with a regular distribution.
LFS is extremely flexible
Building LFS could be compared to a finished
house. LFS will give you the skeleton of a house, but it's up to you to install
plumbing, electrical outlets, kitchen, bath, wallpaper, etc. You have the ability
to turn it into whatever type of system you need it to be, customized completely
for you.
LFS offers you added security
You will compile the entire system from
source, thus allowing you to audit everything, if you wish to do so, and apply
all the security patches you want or need to apply. You don't have to wait for
someone else to provide a new binary package that (hopefully) fixes a security hole.
Often, you never truly know whether a security hole is fixed or not unless you do it
yourself.
A by-the-book LFS system is fairly minimal, but is designed to provide a strong base on which you can add any packages you want. See the BLFS project for a selection of commonly used packages.