After almost exactly 4 months of exclusively running Linux From Scratch on my laptop, I finally consider the experiment done. Here’s a retrospective look at what it was like for me.
Why are you doing this!?
I like trying out different distros. I usually keep one distro on my desktop and “play around” on my laptop. It’s a good way to see different approaches and better than just reading about how some distro does it.
You don’t get much lower-level than LFS, and I thought it would be a good place to focus on some “core” GNU/Linux stuff.
Be Gentle. It’s my first time.
This is what I’ve told everyone I’ve talked to about installing LFS: Plan on doing it 3 times.
- Throw away the first attempt because you basically have no idea what it going on. You’ll be copying the book instructions exactly (or you won’t make it through), so this is just a familiarization phase. Also a good time to learn exactly what you need in your kernel here!
- This is what you think you are going to keep, so decide what deviations from the book you like. Maybe you want eglibc instead of glibc? Maybe a newer version of GCC? Maybe zen-kernel? Go hog-wild. And then be ready to throw it away because you left out something crucial, like package management.
- Huzzah! This is the keeper. At this point you can go all into BLFS and more.
Major Points
Follow the book directions exactly. Especially the first time through. From spending time in #lfs-support (and shameful personal experience) the overwhelmingly vast majority of LFS problems are either typos or not following directions exactly.
You will need a package manager. This is a very important, but conditional, point. If you intend to use your LFS install like you would a “regular” distro, you will need some sort of package manager. If you are just going to do this for a “one-shot” learning experience, it’s not so critical.
The first point is stressed a bit in the book, but the second is a bit glossed-by. I suppose it’s because some people associate package management with downloading binaries and therefore missing the point of LFS. This is actually backwards, because if you are doing the packaging, you’re hands-on. In the LFS sense, you are the packager as well, so it’s not like you are getting these from some other dude and missing on the fun stuff like tracking down (or making) patches and keeping up-to-date on releases and so forth.
Time sink
Be prepared to invest some time in getting this thing up and running. If you want to make it time well spent, try to understand what you are doing rather than blindly cut-and-pasting the book’s instructions. You’ll have plenty of time while stuff is compiling to surf the net on a second machine.
Don’t come into the thing thinking this is something to knock out on a Saturday afternoon. I can’t overstress the importance of proceeding carefully with attention to detail.
Take notes, especially anything at all you had to deviate from the book on for whatever reason. It’s common to have to re-do or re-start, and notes are a life-saver.
Something I really found helpful was to read DIY Linux along-side LFS, comparing and contrasting the two approaches. They are quite similar, so not a difficult undertaking.
Benefits
For me, the benefits were:
Learned a lot. There were lots of areas where I had vague awareness, but became comfortable with like init scripts, patching and packaging, and the nuances of login/non-login bash shells.
Experimented. And not the sort you did that one time in college, either. I mean trying out things that I wouldn’t have bothered with on my “normal” desktop. Some of which have now made it into my “normal” environment.
Baseline. I feel like I have a more pure “Linux baseline” to compare against other distros. For example, it’s more informative to me to think in terms of LFS compared to Gentoo and LFS compared to Ubuntu, than Gentoo compared to Ubuntu.
Bespoke. That being said, the “last pass” of LFS offers the ultimate in customizing. Not only can you play with each application’s settings, but you can even replace or select major components that aren’t in the LFS book (because you should have enough understanding to do so at this point). And, of course, you get to compile everything exactly for your machine, so performance is maximized.
Tons of fun. Hey, if you like that sort of thing it’s fun. If what excites you is a new wallpaper and shade of grey on a dialog box, maybe not so much.
Drawbacks
Going in with the right expectations does wonders here: if you think this going to be a one-day undertaking and you come out the other end with Ubuntu, Jr. then you are setting yourself up for disappointment.
I tried to go in eyes open and feel like that saved me from seeing many things as drawbacks.
Time sink. So big, had to say it twice. There is an enormous time cost involved, mainly around all the packages you’ll need. I think my LFS had somewhere in the neighborhood of 300 packages, and that’s a lot of time and effort.
You can mitigate this a bit in various ways – but there’s no getting around the fact that with LFS you are basically a one-user distro. All that massive packaging work that is distributed in another distro rests on your shoulders.
No man is an island. When you run into a problem, it’s a bit trickier to get support.
There are a few sources of Linux support that are outstanding enough to be ”cross-distro” – mainly the Arch Linux and Gentoo Linux wiki/forums.
Beyond that, you usually have to patrol the relevant mailing lists – another task that is distributed in other distros.
In Summary
I enjoyed the hell out of LFS and consider it time well spent.
Beyond the obvious lessons learned, I took away a new way to evaluate a distro for my personal use: packaging and technical support.
See, most of this I can do and I enjoy doing. So, a distro basically needs to “take over” those areas that I don’t want to bother with – and, by contrast, get out of my way in those areas I do want to bother with.
As a result, I finally settled on a new distro on my desktop – replacing (K|X|U)buntu, which I had on there since Dec. 2007.
But that’s another story.

#1 by Brandon on August 10, 2010 - 11:31 am
Great review Jason. I just started LFS myself, and it’s already a great learning experience. I have already learned so much.
What did you use for your initial host? Since I wanted to stick to the book the first time through I needed a 32bit install. I just choose Linux Mint 9 KDE.
#2 by Jason on August 10, 2010 - 11:46 am
Brandon,
I used Arch Linux on a USB key as the host.
There’s not really too much reason to pick one host over the other, so long as it provides the toolchain you need to get started.
Good luck! Ping me if you need any help!
#3 by Brandon on August 11, 2010 - 12:17 am
I’ve already learned attention to detail is paramount. That, and copy, and paste
#4 by Jamie on September 5, 2010 - 2:26 am
So what was the distro that you settled on for your desktop after this experience? I used Arch for quite some time, but lost my system, and didn’t feel like doing the couple days of work again, so went with Debian testing :-/ live and learn (well, live, at any rate =)
While there is a lot of support for these large distros like Debian, Ubuntu, Fedora, openSUSE, etc, I’ve found that wherever the masses assemble, idiots are louder than the gurus.
I’ll probably go back to arch (or ‘maybe’ try gentoo) as soon as Ubuntu 10.10 is released – I’m having a bit of fun playing with the beta right now =D
I don’t feel like I know enough to do LFS yet, though. I can make install things, do basic cli stuff, but I’m no wizard, never recompiled my kernel before, etc. Should I learn some more ropes before diving into LFS?
#5 by Jason on September 5, 2010 - 6:58 am
Right now, I am using Arch.
If you’ve done Gentoo and Arch, then there’s not much left between you and LFS. Compiling a kernel isn’t hard at all, the only trick is to make sure you enable all the proper bits to work with whatever hardware you’ve got – and you can always re-compile as you discover you left out something.
If you are interested in that level of Linux, I think LFS is a great experience.
#6 by mangesh on January 31, 2011 - 2:21 am
hey frind.
i am startiing lfs project .i had just read about lfs(from LFS book) and fascinated from that one .
literaly , i dont have any big picture in mind for my lfs but i think that i will do things as i go on knowing many things abut that.
so will plz give me any idea what should new idea i developed in my distribution?