LFS is really hard and really isn’t for newbs.
I freely admit that I’m the newbiest of newbs. But I met the stated absolute minimum LFS requirement (p. x in the PDF manual) of being able to use basic command line stuff.
The online FAQ also says:
Anybody who has a couple of months experience with Linux and especially the console should be able to successfully assemble an LFS system.
I’ve used Linux for some years and tried to study it, and even fixed broken things on occasion by googling the issues. He might be talking about professional experience though. [Rabbit hole – what, precisely, did he mean when he said “console”? I may be missing something here.]
Then the FAQ goes on to say that however it doesn’t really work out that well:
While LFS seems like a good guide for newbies to Linux, the reality is actually quite different. Experience with the support channels shows that LFS is hard to grasp and a frustrating experience for newbies because they lack understanding of the basic concepts.
Part of what is going on is that the manual isn’t written for newbs.
The most embarrassing thing so far is the sudo su – issue. I really didn’t take “as root” and so on to mean “must be using a root login shell.”
If you do not know how to use sudo correctly, don’t use it.
Then the FAQ gives details about the miserable “for loop from Hell” etc. I’ll go back into older posts and note what my problem was:
The commands in LFS/BLFS book does not work with sudo!
sudo can only run executables as root. It does not understand internal grammar constructs of the shell, for example “case”, “cd”, “for”, “if”, “|” (piping), “>” (redirecting output to a file), etc.
For example, when the book tells to run echo /bin/zsh >> /etc/shells as the root user, you cannot run sudo echo /bin/zsh >> /etc/shells as a non-root user and expect it to work. The output redirection is performed by the shell, so the shell needs to open /etc/shells for write and doing so requires a privilege. But sudo has no way to raise the privilege for the current shell. It can only raise the privilege for the echo command with /bin/zsh as the parameter, but this is not helpful at all.
For another example, when the book tells to run for i in /usr/lib/libfoo*.so; do chmod 755 $i; done, you cannot prepend sudo before the command and run it as a non-root user. for is a shell grammar construct, not an executable. So sudo will report “for: command not found”.
One reason I chose this project was that I couldn’t understand the Arch wiki. I’d hoped to be able to follow the LFS manual. However, I’ve mentioned that I pretty much need Google AI Mode to be able to use the manual.
Recently I’ve seen references to other projects that were reportedly simpler than LFS: doing the same thing but with fewer moving parts. But weren’t maintained.
I’ve somewhat regretted starting LFS and also regretted starting this blog: I’ll feel embarrassed when I royally screw up, because it will be public. It seems I won’t find it so darn funny after all when I brick the machine.
I’m determined to continue. Just hoping I can finish or brick in 2026.
