47 comments

[ 372 ms ] story [ 3303 ms ] thread
It's been years since I went through this, but whenever someone asks me what they should read to get a deeper understanding of what a Linux distribution is, I point them to this.
I'm still thinking that LFS taught me more about sed, gcc CFLAGS and bootstrapping than the underlying OS sadly
Had to go through it 4 times to reach a stable distro, I learned so much doing it
for as long as i've been running and tinkering with linux, i really need to run this marathon before i get much older. i don't think it'll happen til i quit my job and have more time to actually enjoy using my computer :(
If you lack time, just go to the first part where you have an actual cross compiler. Back that up, re-use it later when you have more time.

If you have scripts that help then it is very simple. And it can be done on a weekend or two.

Making bespoke linux distros should be quite a good fit for LLM agents, especially given the recent results with the LLM-authored web browser.
LFS is a teaching/learning tool. Asking an LLM to generate one for you would be fairly pointless. Just read the book and follow along...
You mean the browser where the result was mostly faked and exaggerated?
Every time I see this, I upvote it

I’m sure it’s different than it was when I was a teenager but building Linux from scratch was the thing that got me into computers as a kid

It shows that computers can be accessible _and modifiable_ at the lowest levels

It is a bit different indeed - more things to compile nowadays. Things such as LLVM take quite some time to compile too. cmake and meson is also needed these days.

Other than that it still works fairly well.

This was probably the best thing I've done to learn the ins and outs of a running Linux system: I think it would be amazing to re-do it with a modern Linux stack (systemd + Wayland), but it can really remove all the "magic" from the full OS implementation for you.

However, I've done it in 1999 and ran that system until 2001 when it became too much of a trouble to recompile everything and battle dependencies manually — note that LFS was not as detailed then either, so many dependencies you had to track yourself, and some were very obscure!

Yes, the time investment was high, but I was a high school student starting college with too much interest in something like this and obviously enough time on my hands (after which I was so "smart" to switch to Slackware, a one-man show where I also ended up having manually compiled versions of "small packages" like XFree86 and GNOME, which I was contributing to: when "GARNOME" showed up, that was a revelation! etc)

So if you can afford it, do it: using Linux will never be the same again!

I actually tried this back around 1999 as well.

At the time, it felt like I was just being told "type this" and "type that", with very little explanation of what anything meant or why it was done one way instead of another.

Maybe after all these years it’s worth giving it another shot? Does it work on a VM?

Wayland is quite simple actually. Nowhere near as much to configure compared to systemd.

Even systemd can be kept simple - I did this on manjaro.

Either way the power of LFS/BLFS is to adjust the system to your use case.

> it can really remove all the "magic" from the full OS implementation for you.

To some extent. Many things are missing IMO, in particular if you go to BLFS. But for the most part I agree with you - it is great that we have it.

We should extend it though.

> until 2001 when it became too much of a trouble to recompile everything

I use ruby scripts for that, tracking almost 4000 projects. Once gem-coop offers us an alternative to corporate-controlled rubygems.org, my main ruby projects will be republished (I retired in 2024 when RubyCentral tried to force everyone to cater to the new corporate rules as well as disown gem owners after 100.000 downloads).

Yeah, Wayland might be simple, but the level of comfort I gained with inittab, systemV rc.d, xinit, .Xsession, Xconfig, inetd and everything else was mostly unmatched by anyone I've worked with (and honestly, serves me to this day).

I've never invested as much in systemd or Wayland, so I am operating on a different abstraction level with it, probably just like most everybody else.

My point was that I did not keep it simple: I actually made it into my perfectly configured system, and I manually tweaked every config I though might have something interesting for me.

> note that LFS was not as detailed then either, so many dependencies you had to track yourself, and some were very obscure

Why didn’t you just use Chat GPT to get your answers? /s

In all seriousness, I think the recent growth of Linux has been because information has become so accessible. Instead of having to peruse years of newsgroups posts, you can just ask a question and get an answer (that you should really fact check).

Is there such a thing as a modern Linux stack?

Isn't it by design that linux has many optional components and one can pick and choose as they desire to create their distribution?

Obviously, it is full of options. But building something resembling probably the most common desktop/workstation distributions like Ubuntu or Fedora would be what I call "modern Linux stack".
I bought the dead tree version of this book back in ~2006 or so.

I used to work in a business park in Seattle and the company next door to us operated a PC recycling warehouse. There were piles of old 386/486-era PCs in various states of disrepair just piled up behind their building. I'd go out there once in awhile and pick-through their piles looking for Intel CPUs, sticks of RAM, and hard drives. Find a good chassis with intact motherboard.

I loved putting that stuff together and installing Linux on those machines. I cut my teeth on Linux and LFS building computers out of those Frankensteins.

Years ago, installing Gentoo from an early stage was also a good experiment.

Nowadays they've deprecated all stages but stage3. It's still fun, but bootstrapping Gentoo from stage1 was a Linux-from-scratch-like experience (not quite, but similar).

I did this in 2001 on a 200MHz Pentium with 128MB RAM. Took about eight hours. Great experience.

I understand it still takes about eight hours. Faster CPUs but busier software cancelled each other out.

Some things never change.

I did it in 2011 and it was 8 hours then too.
> I understand it still takes about eight hours. Faster CPUs but busier software cancelled each other out.

> Some things never change

Yeah. Mostly the software stack is now much bigger.

Getting all of LLVM mesa linux cmake ninja glibc gcc binutils xorg KDE to work is more work than in 2005 or 2010. Also GNU configure feels as if nobody maintains it anymore. I still keep libtool around for legacy reasons but I don't like that.

This was a pivotal project for me as a young lad learning Linux and software engineering back in the day. Can't recommend it enough. So many little frustrations and painpoints to overcome, wasn't easy , and shows you the ropes of what's to come.
So many good memories I had running through this way back when and it gave such a good and deep look into how a fully functioning system worked. It removed a lot of the mystery of this distro vs that distro and how all the pieces fit together. I still use some of the knowledge I gained from this in my day-to-day work, some of which is sorely lacking by others doing seemingly the same job as me.

I remember going through this and there was a point where you were running a stock, generic kernel before having built a specialized kernel with modules and options you wanted. I apparently ran up against thermal limits on this laptop because power management was one of the options for you to configure. I had to zoom through that section with a box fan pointed at that laptop so I could get power management and throttling to work so it wouldn't randomly shut down. Good times.

I used the same laptop I went through the first time with the same LFS install for a number of years after that until my day job killed my interest in doing this stuff in my free time. I switched to Debian after that and never looked back.

Like others are saying, I always recommend going through this for those that want a deeper understanding of linux, the kernel, and all its accoutrements.

(comment deleted)
One of the most incredible computer experiences.
Is it educational to do this on a VM or should I break out my old thinkpad?
I completed my Cross-Linux From Scratch distro in 2014, targeting the original Raspberry Pi since I was frustrated with the lack of (at the time) minimalist distros.

It was extra-hard, due to the cross-compiling nature of targeting the ARMv6 cpu family - but I learned a massive amount along the way.

Even though CentOS-minimal was released for Raspberry Pi by time I completed the project, I had so much fun it didn't matter. I ended up making a custom build system, consisting of a hodgepodge of bash scripts all wrapped together with a Makefile. My self-hosted Jenkins build server (old mini computer shoved on my book case) would run builds and produce the image artifact - those were the days...

The final distro image was ~40MB, which was impressive to me on it's own.

In the next part, I hope I can write a kernel from scratch, haha.
I too did this, around 2003/4

It was during my great "Try all the Linux" period, and I had trouble with it compiling on my slackware system, but it compiled just fine on my red hat system (before RHEL)

It was a toy for me, I built it just to see if I could, built it a few times, but was running red hat or slackware as my daily driver.

During that period I also tried the BSDs, Free, Dragonfly, Net, and Open

It was so much fun getting the hang of how each OS differed, the nuances, the ins and outs.

(FTR, I switched to Ubuntu late 2005, and haven't moved since - apt is/was the best thing since recycled electrons)

This is such an awesome project.

I had a lot of fun doing LFS plus a bit of BLFS and then I adapted it to my memory safe linux project https://fil-c.org/pizlix

I haven't gone through this but now I really want to.

Moved to native Linux on the desktop a few weeks ago after 15+ years of using Linux on the server and spending a majority of my time in WSL in Windows for the last decade.

I've learned so many new things in this short period of time. Tracing down memory leaks with GPU processes, misbehaving GPU drivers, power saving modes, etc..

Related. Others?

Linux from Scratch - https://news.ycombinator.com/item?id=41747966 - Oct 2024 (159 comments)

Beyond Linux from Scratch - https://news.ycombinator.com/item?id=39547118 - Feb 2024 (17 comments)

Linux from Scratch Version 12.0 - https://news.ycombinator.com/item?id=37648808 - Sept 2023 (28 comments)

Linux from Scratch - https://news.ycombinator.com/item?id=33734685 - Nov 2022 (9 comments)

Linux from Scratch - https://news.ycombinator.com/item?id=30496018 - Feb 2022 (96 comments)

Linux from Scratch - https://news.ycombinator.com/item?id=29949311 - Jan 2022 (9 comments)

Linux from Scratch with Training Wheels - https://news.ycombinator.com/item?id=28820602 - Oct 2021 (41 comments)

Linux from Scratch 10.0 - https://news.ycombinator.com/item?id=24350738 - Sept 2020 (49 comments)

Linux from Scratch - https://news.ycombinator.com/item?id=24238015 - Aug 2020 (86 comments)

Major Proposed Changes to Linux From Scratch - https://news.ycombinator.com/item?id=23787526 - July 2020 (93 comments)

Linux from Scratch - https://news.ycombinator.com/item?id=20168343 - June 2019 (15 comments)

Ask HN: Is the Linux From Scratch project still relevant? - https://news.ycombinator.com/item?id=20149111 - June 2019 (7 comments)

Linux from Scratch - https://news.ycombinator.com/item?id=16823110 - April 2018 (1 comment)

Linux from Scratch Version 8.2 released - https://news.ycombinator.com/item?id=16510333 - March 2018 (2 comments)

Linux from Scratch – build your own Linux distro - https://news.ycombinator.com/item?id=11829373 - June 2016 (57 comments)

Linux from Scratch - https://news.ycombinator.com/item?id=8392057 - Sept 2014 (1 comment)

Welcome to Linux From Scratch - https://news.ycombinator.com/item?id=4488162 - Sept 2012 (71 comments)

Linux From Scratch 7.1 Published - 3.2.6 Kernel + GCC 4.6.2 - https://news.ycombinator.com/item?id=3677350 - March 2012 (13 comments)

Linux From Scratch 7 Released - https://news.ycombinator.com/item?id=3171448 - Oct 2011 (27 comments)

Ask HN: Linux from Scratch.. Should I try it? - https://news.ycombinator.com/item?id=1779665 - Oct 2010 (58 comments)

...

This and "Ray tracing in one week-end" are HN classics that I wish I had completed long ago.
From "20 Years of Gentoo" (https://blog.nawaz.org/posts/2023/May/20-years-of-gentoo/):

    "Even more common: “Oh, I’m not going to use Gentoo. I want to go all the way and use LFS!”

    They never heed my warnings about it. Every one of them either quits in the middle of the install, or soon after, and swears off source based distributions for life.

    Slackware and LFS are the Haskells of the Linux distribution world. People jump to the extreme end of the spectrum, and either get burnt or remain unproductive for life, when they should have just used OCaml or F# instead."
Linux from Scratch is great for building a deeper understanding of how the different parts in linux systems work together at their foundation. Working through it also made me appreciate what distributions and package managers actually provide to me even more. However, i do often read people stating it helped them to "understand linux". Not sure what that means to be frank. Because you do not learn much about actually doing things with or on linux. You learn, essentially, how to knock together a linux system from the various components, the core part being, setting up a compiler (if i remember correctly, you rebuild gcc three times in the process to get an "untainted" compiler), i.e. build something like a distro pre-cursor if you will. These are great skills to have, but also very specific ones. They aren't helping you much in your day to day use of linux. I think everyone serious about linux should do LFS at least once in their career (and, contrary to some popular statements, you actually can do it quite early on, if you can read and follow a manual), just maybe don't have false expectations about what it will actually be teaching you.
https://www.linuxfromscratch.org/lfs/view/stable/chapter08/g...

> the test suite for Glibc is considered critical. Do not skip it under any circumstance.

> Generally a few tests do not pass. The test failures listed below are usually safe to ignore.

I felt a bit uneasy writing something similar into my software e2e test suite, but hey if glibc can do it, why not!

> It's imperative to strictly follow these steps above unless you completely understand what you are doing. Any unexpected deviation may render the system completely unusable. YOU ARE WARNED.

Is this the Dark Souls of linux distros?