upvote
I'd like to counter your comment.

LFS helped me a lot. It taught me how to compile packages manually, and how GNU/Linux components fit together.

Armed with that knowledge, I could do things others could not do:

- Make applications that bundle/automatically download their dependencies, compile them with custom flags (static linking)

- Diagnose build errors buried in deep dependencies when using vcpkg

- Compile programs for esotheric systems: e.g: Intel MacOS X 10.5, an obsolete system noone else on earth is using except the company I worked at

- Create application targetting obsolete systems but using the latest version of its dependencies

- Compile recent programs on esotheric systems, by bootstraping a newer gcc on the newer system, patching as necessary

- Create my own stripped down distro, tuned to my specifications

- Use that stripped distro as a docker container

- Run recent linux on obsolete hardware no longer supported by mainstream distros

- Reformat a cloud dedicated server without physical access by first bootstraping a minimal distro on a ramdisk, unmounting the main drive, partitioning that drive, and installing the new distro on that drive. Reboot and pray.

- Build a cross-compiler for targetting a freestanding environment

- Build latest KDE/XFCE for debian stable. No more "but debian ships with outdated software!!11"

- Build applications on a distro they were not designed for (Zimbra OSE on debian)

reply
Learning how to compile packages manually it was a common skill long before Linux came to be, and how GNU/Linux fits together could also easily be learnt with Slackware or Yggdrasil.
reply
None of that requires LFS; I compiled KDE via scripts many years ago. Why would LFS be needed for that? That makes no sense. Debian being slow is their problem, other distributions aren't snail-like like that. The default compiler used in LFS is also hardly a real cross-compiler, it is more a bare-minimum compiler for C/C++. This annoys me because e. g. I need fortran for R, so a bare-minimum compiler isn't as useful as a more feature-complete GCC. And GCC also causes some issues, e. g. like my problem with options.cc.

I think you missed the main argument though - LFS isn't quite as good as it could be. That is a correct statement that was made.

reply
"Requires"/"needed".

LFS is about the muscle memory; the documentation; the cohesiveness.

I always recommend it to people and consider it foundational to my understanding of How Stuff Works.

Whether that amounts to a hill of beans in the AI world remains to be seen.

reply
I've learned the most from LFS long time ago, when I had no internet. I had a mismatching set of Slackware and redhat source CDs, and LFS itself didn't match the versions on CDs too. Since then I can build anything and anywhere, even if it's not cooperating :)
reply
As pointed out already, LFS is a cookbook, and you learn most by having an idea about how you want to tune your Linux system.

So at points you want to dive deeper, you do — and go off the beaten path.

It requires a desire not just to understand how bits and pieces fit together, but how you can make them work even better for yourself and what is and is not customizable?

Arguably, even if building it today is easier — back when I did it in 2000, you sometimes struggled to find where the canonical source code of the package is, not to mention compilation errors, linking errors, etc. Only then did you get to configuring the init RC system, choosing between them (no systemd yet), etc.

But a requirement is — IMO — that you are strongly opinionated about how a system should serve you, and look for opportunities to tune it.

reply
> And you add the bootloader dead last, even though it’s the first thing you see when you boot a Linux machine?

That actually makes perfect sense. If you did the bootloader first, how are you going to build it? How do you know what to boot from which filesystem on what device? By the time you've got your root filesystem complete, it's easy to tell.

If you do things step by step incrementally, you keep having to go further back in the process. Starting over repeatedly gets tedious, boring and frustrating. And it'll take ages to finish the complete OS.

reply
Except that if you fail to install the bootloader - which happened to me many times - then you do not have a working system. So really the prior argument makes sense.

IMO the guy is right - LFS could be way better. But it has this current structure and does not deviate from it. That's the bad part.

> If you do things step by step incrementally, you keep having to go further back in the process. Starting over repeatedly gets tedious, boring and frustrating. And it'll take ages to finish the complete OS.

Pray tell how that is necessary for the bootloader? The chain used in LFS isn't the only one that makes sense or is required. IMO it would indeed be better to have a system you boot into as quickly as possible, on real hardware, then continue from there.

reply
> It was like following a baking recipe. I know I need to add eggs and sugar in the ratio it says but I’d be damned if I could tell you why that specific ratio works.

I know a french cookbook[0] which contains not only recipes for dishes, but also for some of the intermediary ingredients, like stocks, that can now be bought at the supermarket. I feel that I’ve learned a lot by following those recipes, be it simply in the structure of french cuisine. And to me, LFS is a cookbook in a similar sense.

[0]: https://www.ferrandi-paris.com/fr/le-grand-cours-de-cuisine-... in French, sorry!

reply
LFS is known but it is really more a cookbook than explanatory principles.

Principles can be studied from “Operating Systems: Three Easy Pieces“ book - https://pages.cs.wisc.edu/~remzi/OSTEP/

Rob Love wrote the book “Linux Kernel Development”. https://rlove.org/

And then continue with reading LFS.

reply
> I did it once manually over a couple of days.

Sounds like a speedrun of the tutorial. How did you approach packaging then and what system did you use to compile everything?

I did the tutorial in the late 2000s I think and it took me 4-6 months if I remember correctly. At the time I wasn't completely new to Linux but setting up things like the boot loader was quite tricky for me.

For me the main motivation was getting a deeper understanding, being able to fine tune and customize my system. Of course I didn't go blindly through the tutorial but only did steps that I understood. (In case something goes wrong) Also I started to use (x)stow for everything.

reply
It is possible to do it over a few days really, even with not too much knowledge.

Requiring four months seems as if it was a side project, which is of course totally fine, but for any main task it really should not take more than a few days, even on a semi-slow computer (well, depends on how slow).

reply
This should be said more often, and in many other contexts as well.

Most educational resources are what- and how-based, only the best ones are primarily why-based, what Wirth once wrote in the preface to some Pascal book (I paraphrase) 'discussions are motivated, so that the learner gets coverage and understanding, instead of memorization'.

reply
well, if you happen to be in a 'rm -Rf /' situation (which with agentic AI seems to be more often the case) to know how to operate in a chroot environment could be helpful
reply
You need to actually read the book and not just copy and paste commands. Many of the questions you have are answered in the book.
reply
I liked KISS for this

It was like automated LFS from git

FreeBSD’s Makefile system is also in this ballpark

reply
I learned a lot doing Gentoo stage 1. I was also following the guide like a recipe, but at the time I hadn't been exposed to the underlying machinery that is often automated, abstracted away, or done for me already. It was also a good test on how well I could follow instructions and later on apply my own customisations. Like lego.
reply
Setting up Oasis <https://github.com/oasislinux/oasis> taught me more than LFS personally. Everything being statically compiled makes it less magic.
reply
I second this a thousand million times. But with AI, i can't help but admit i find myself indulging in building things backwards, now that i can try a couple different approaches simultaneously for it.
reply
> LFS takes the wrong approach in my opinion.

Shameless plug: I started a series of blog posts exactly because this. https://serversfor.dev/linux-inside-out/

Unfortunately due to some cervical spine issues and a surgery I wasn't able to finish it, but I am planning to pick it up and continue.

reply
Thanks for posting this, I hope you will continue
reply
To some extent I agree with you. I'd like to decouple some parts, e. g. the tutorial part is great but it should ideally be distinct from "just go at it" 1:1. I also fail to compile various things right now, which is frustrating; two or three years ago all went well. The whole LFS build up is too brittle. In part this is due to external complexity, but LFS needs to re-think what it does. It's also sad that they are now systemd-only, which further adds intrinsic uselessness. I don't need anything systemd offers; all my boot up logic is stored in yaml files and autogenerated to target formats via ruby as-is.
reply
I used CLFS (Cross-Linux From Scratch) once to bootstrap Linux on my SGI Indy, and I learned quite a lot from this. That was back in 2008 or so, so way before AI and extensive online guides for almost everything. It taught me how cross compilers work, what dependencies exist in the GNU toolchain, how the SGI boots, and much more.

Too bad Cross-LFS is no longer a thing. Then again, with all these microcontrollers and ARM and RISC-V systems today, cross-compiling is no longer as magic (and tricky) as it was back then...

reply
Compiling the packages doesn’t teach much it’s all the glue in between. No? It’s the startup scripts and the configs and creating a kernel and all the things.

It’s on my list of things to do when I have some free time

reply
You know, you could also just read about each step to learn more. I mean if you feel you're following a baking recipe, you can just... read about it more. And then have LFS as a simple way to experiment if you want to change anything or not. Also, technically you don't need to have a bootloader installed on your main hard drive if you already have it on another disk.

I mean, eh... last time I checked, this was Hacker news. Yesterday, there was an Ask HN topic on how to enable dark mode on HN. Is this the new hacker culture? Complaining that the resources merely point in some direction instead of specifying details?

reply