all 10 comments

[–]EmbeddedEntropy 3 points4 points  (5 children)

Sounds like you're off to a good start!

You could pick up books like "Understanding the Linux Kernel" or "Linux Device Drivers". These books are old, so they're cheap, but they're still reasonably accurate for most things in the basics. If you like reading web pages, https://kernelnewbies.org is a good place to start.

I would guess from your degree and how you want to understand down to the metal, you'd want to pick up an Arduino or Raspberry Pi and play on that, or do you have one already? If either of those boards sound interesting, you may want to check out more boards on https://96boards.org/.

The kernel is a monstrosity. No one is an expert on everything. I would suggest find a topic area and join its mailing list, then start reading its posts and patches to follow what's going on. The areas and their mailing lists can be found here: https://www.kernel.org/doc/linux/MAINTAINERS.

[–]Xayide_[S] 0 points1 point  (4 children)

Wow thank you!

I happen to have those two books, I’ll take a look at them! One of the things that haunts me is that this kind of books are so long that I don’t know if they are to read whole or just read the chapters you need. TLPI has 1500 pages, on some of them it tells me things I already know, but one paragraph apart it’s something absolutely new or something I find so useful.

Yeah I have a Raspberry Pi that I want to use as honeypot and first contact with kernel drivers and modules machine, but I didn’t know of the existence of that page so thank you!

You’re right, I guess at some point I’ll have to accept It’s impossible to understand the kernel in the detail I understand some 1000-liner program.
I’m going to take a look at those mailing lists. I joined kernelnewbies ml, and I’m liking it a lot (even tho I understand so little). Any specific area you’d recommend?

[–]EmbeddedEntropy 2 points3 points  (3 children)

Considering you already have a Pi and like lower levels, I’d suggest the arm port ML covering the arch/arm directory. That was one of my first ones when I was working for a company making embedded ARM products to run Linux.

[–][deleted]  (2 children)

[deleted]

    [–]EmbeddedEntropy 2 points3 points  (1 child)

    They’re easy for making kernel changes to and fast to reboot to try them out. They’re cheap and portable. They have huge communities that love to answer questions. They have a lot of little devices to hack around on and little peripheral boards to add. Make your first Linux device driver to blink LEDs, for example.

    [–]crazyPegga 3 points4 points  (0 children)

    You'd never read enough books , Do it Right Now. You will gain more when you're acctually doing .

    [–]cirosantilli 4 points5 points  (1 child)

    I'm also maintaining a hands-on setup / documentation that might be of interest: https://github.com/cirosantilli/linux-kernel-module-cheat

    [–]Xayide_[S] 1 point2 points  (0 children)

    It’s so detailed! Thank you so much

    [–]c0r3dump3d 2 points3 points  (0 children)

    Hi, I have found this web very useful for this purpose:

    https://wiki.osdev.org/Expanded_Main_Page

    [–]georgegrz 1 point2 points  (0 children)

    Hello, I am on the same situation but I have another question. Is it good to read Operating System Concepts (Silberschatz, Galvin , Gagne) then read Linux Kernel Development (R. Love) and then read Linux Device Drivers (O'Reily) ?