169
Blog post: The Linux kernel is just a program
(serversfor.dev)
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
I am writing a blog post series to make this topic more approachable for others.
Nice, and good job.
With respect:
I want to be careful here not to discourage you, this is great exploration!
I realize I'm handing out unsolicited advice here, but when I was first learning about Unix/Linux kernels in the Solaris and HP/UX days, the thing that helped the process "click" for me was compiling a kernel and building an ELF. And if you're going to continue on this journey (which I hope you do), you should probably read a bit on memory segmentation and broadly about assembly instructions.
Good luck!
Thank you for the feedback!
My goal with this series is to make Linux internals more approachable, so I’m intentionally keeping each post narrow and avoiding details that would overwhelm readers at this stage.
The primary target audience of these blog posts are developers, and I have a progression plan in mind how to build up layer by layer the necessary knowledge they need to know to understand how they program work/interact with the other parts of the OS. The boot process or the exact composition of the kernel image is irrelevant here in my opinion, they wont need to touch them on a VPS for example or on their dev machine.
Regarding the kernel space/user space I did not write that the kernel space stopped, I will come back to it in the next post that will be about system calls, we will discuss there that when our programs interact with the kernel we are switching between user and kernel mode back and forth, with the syscall instruction (on x86-64 systems).
Anyway, I really appreciate your feedback and that you put effort into it, and thank you for reading the post! :)