• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

Want to get into the inner "core" of Linux, where to start

Red Squirrel

No Lifer
I've been using Linux for quite a long time, mostly experienced with the server side but been using it on the desktop for about a year now, fighting lot of issues related to my hardware but that's another story... just realized, I've never really gotten into the deep inner workings of it. I've never recompiled a kernel or done any of that stuff. I'd like to learn more in depth how everything comes together. Basically where to go to view/change the source, and compile it etc... Mostly just for educational purposes. What's a good place to start so I can learn this stuff? Thinking either a good website with tutorials, or a book.

I'm also thinking if I can learn more about the inner workings it may even help me get better at troubleshooting stuff. It's open source, the code is there, I may as well take advantage of that and actually learn it better.
 
I'll play the contrarian today.

Arch and Gentoo are not going to help you learn the inner workings of Linux more than any other distribution. All these distributions do is give you some automated distro compilation tools and instructions on how to use them, and then you just watch text scroll by forever.

LFS can really help understand how a Linux distribution is put together, but that doesn't necessarily translate into how your Linux distribution is put together.

If you really want to get into the inner-workings of your distribution, pick a software subsystem that interests you (the kernel, X11, an application, whatever), and then
a) find the web site for the software itself that gives you all of the nitty-gritty details about the software,
b) find out how your specific distribution packages that software, including any patches and configuration tweaks they may be applying,
c) find the documentation that your distribution has on the use of this software (if any), and,
d) join whatever communication medium the software developers are using to collaborate on the software.

Make it your mission in life to learn this software backwards, forwards, and sideways. If your distro's documentation for the software is lacking, help to spruce it up. If you're willing to dedicate some type to actual development, assist your distro/the upstream software's dev team in squashing bugs, testing new versions, and maintaining packages. When you get bored, repeat this process with another software package.
 
Yeah understanding stuff like X11 and stuff is one of the things I'd like to do as well. Think I'll start with LFS and go from there. I need to build myself a VM server as there's lot of stuff I've been wanting to do such as also get myself up to date with the latest version of windows/server products. My current server with 8GB of ram just aint cutting it if I want to start making more complex lab environments. 😛
 
Learn C if you haven't already and read the code, LFS will probably teach you about building the code.
 
From a functional point of view, you'd probably benefit more from system tuning than anything else. Do some digging into the sysctl settings and figure out what effects changes to them have. In addition to tuning up the performance, do your best to break the system. During the process you'll probably refer to the kernel documentation and possibly even diving some kernel source. The end result should be a better understanding of how the Linux kernel functions... you can then use this base to built up knowledge of how the GNU part of Linux/GNU functions and the rest of the LAMP stack.

LFS gives you a pretty broad and shallow view of how everything is tied together. You'll get to see some packages that you might not have known about before, but it doesn't really help to understand how Linux works.

With that said, as Net suggested... just compile the kernel from source. Go through and change some settings. Try to compiling without support for things you don't need (token rings? lol) and without relying on modules. Its not the most efficient way to build a kernel, but reading through the descriptions of the various settings and researching what might be needing gives a pretty good understanding of things too.
 
Thanks for the tips everyone. Once I'm caught up with all my other projects think I'll start messing with this stuff, something to do during night shifts as well. I will be doing this in VMs that way I wont have to worry about how long it takes me to fix stuff.
 
Back
Top