Hacker News new | past | comments | ask | show | jobs | submit login
Linux kernel booting process, part 1 (github.com)
155 points by 0xAX on Jan 4, 2015 | hide | past | web | favorite | 18 comments

Thought that GNU/Linux was to be used when one was talking about a full distro and just Linux is the "correct" way of referring to the actual kernel.

You are correct. I suspect that the author started writing “the Linux kernel”, and later changed it to “the GNU/Linux kernel”. But the words “the Linux kernel" doesn’t make any sense – Linux is a kernel, it doesn’t have a kernel; you could say “the kernel Linux”, meaning “the kernel which is named Linux”, but you can’t sensibly say “the Linux kernel”, since that would mean “the kernel of Linux”, which would be nonsensical. Therefore, writing “the GNU/Linux kernel” does make sense, but it is the same as writing “the kernel of GNU/Linux”, which is merely a roundabout way of writing “Linux”. The phrase “the GNU/Linux kernel” is weird, like writing “the shape of the Pyramid of Cheops” when you simply mean “pyramidal”.

Summary; the Operating System, of which there are many variants known as “Distributions”, is “GNU/Linux”. Some distributions choose to use this term verbatim, like Debian GNU/Linux, and others don’t, but they are all GNU/Linux variants all the same¹. The kernel is named “Linux”, so you can call it “the kernel” or “Linux” interchangeably.

① Except the ones who go out of their way to exorcise the GNU components but still use Linux; one example of a project which does this is Android.

Then there are operating systems based on the Linux kernel that are not GNU/Linux, most famously Android.

For something to be GNU/Linux, it must use the GNU base system and toolchain - the core/find/inet/binutils, glibc, bash, gcc and so on.

There are generic Linux distributions that also do not. Alpine Linux is one of them, using musl libc and busybox, eschewing GNU software wherever possible. Though, the question arises - is a distribution of Linux always GNU/Linux if it uses GNU software at build time, even if it's almost entirely stripped of it at runtime? That is to say, the use of gcc, GNU make and autotools are largely unavoidable in bootstrapping a Linux platform, or even Unix software in general these days - even if llvm/clang are making progress.

True; I forgot about those (post edited to add footnote).

I would say that if a project goes out of its way to eliminate GNU components, it is only fair to refrain from calling it “GNU”. But it isn’t “Linux” either – that’s still the kernel. There is not, in fact, a name for such distributions. Maybe “Anti-GNU” could work, since to remove the GNU components, you would have to have a rather large anti-GNU zeal. These are rather rare, so I guess the need for a special name has been small.

There are more now not using glibc, such as Alpine Linux (which also uses busybox by default instead of many of the GNU utils). If you neither use glibc or gcc (say you use clang) you are getting a fair way away from the original GNU operating system.

"The Linux kernel" makes sense. Real language, particularly names, do not have to follow strict grammatical rules.

Although, now that I think about it, there probably is a name for this sort of thing, because we do it often, particularly with brands. Marlboro cigarettes. Pepsi soda.

Brand names are sometimes called "proper adjectives". I seem to remember reading that food brands in particular must modify a noun that describes the food.

They are following grammatical rules, just not the ones the person you're replying to thinks they are.

There's always a grammar to language. The fact we might not know it doesn't make it any less real.

How did you do the foot note?

It's just a unicode character.

Yes, but this article is not about the GNU parts. It is about how the Linux kernel begins execution. There is nothing wrong with describing this as the "Linux (kernel) booting process".

though there is a bit of syslinux/grub stuff that isn't strictly this.

I think you misunderstand; the article originally used the term “the GNU/Linux kernel” throughout, and callesgg thought that this was odd, since the article was actually about Linux (the kernel) and not about GNU/Linux (the operating system).

The article has since been changed to simply use the name “Linux”, so I could understand that someone could become confused about what callesgg was talking about.

I did a similar walkthrough back in 2004 for x86. Comparing what has changed (and not) may be interesting: http://www.scott-a-s.com/the-linux-boot-process-of-2004/

nice article

Great writeup! I've been trying to dig a little deeper into the x86 boot process for some time now. Does anyone have recommendations for similar walkthroughs for the bootstrap processes and BIOS/UEFI firmware (Coreboot, for example)?

Nice writeup, especially if you already learned this stuff a while ago. I suspect that if you're not familiar with the x86 architecture, you'd be lost very quickly.

This series would make a great PoC||GTFO article! Consider sending it to the editors!

>2^16 or 0xffff (640 kilobytes)

yeah ..

Applications are open for YC Winter 2020

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact