Introducing Myself, Looking to Learn
Hi! I want to start working on the Linux kernel but am an absolute beginner. I am currently on my way through Robert Love's Linux Kernel Development and need help with finding something I can work on to get a hang of what it's like. I have also subscribed to the LKML, but find it completely incomprehensible! As a beginner, would it be better to work with the kernel of a specific OS (I'm running Ubuntu), or work on the upstream kernel? Thanks. Varad
On Wed, 04 Sep 2013 00:59:03 +0530, Varad Gautam said:
I have also subscribed to the LKML, but find it completely incomprehensible! As a beginner, would it be better to work with the kernel of a specific OS (I'm running Ubuntu), or work on the upstream kernel?
Depends what you're trying to do. But please note that if you're finding it *completely* incomprehensible, you're probably not going to be able to make any real code contributions until you get up to speed. Yes, there's some threads on lkml that there's only a dozen people who will actually understand - but most discussion threads on lkml are ones that anybody who's able to do kernel hackind should be able to at least follow and figure out what's going on. Yes, the ability level needed to hack on the kernel and get code upstreamed *has* gone up in the last 5 years or so.
On Tue, Sep 3, 2013 at 4:29 PM, Varad Gautam <varadgautam@live.com> wrote:
Hi! I want to start working on the Linux kernel but am an absolute beginner. I am currently on my way through Robert Love's Linux Kernel Development and need help with finding something I can work on to get a hang of what it's like.
I have also subscribed to the LKML, but find it completely incomprehensible! As a beginner, would it be better to work with the kernel of a specific OS (I'm running Ubuntu), or work on the upstream kernel?
Hi, If you are an absolute beginner, I recommend you to start studying and hacking a small O.S., like the xv6: http://pdos.csail.mit.edu/6.828/2012/xv6.html http://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf If you need a background on the "low level", I suggest you to read this: http://download.savannah.gnu.org/releases/pgubook/ProgrammingGroundUp-1-0-bo... -- Augusto Mecking Caringi
Hi Varad, On Sep 04 2013, Varad Gautam wrote:
Hi! I want to start working on the Linux kernel but am an absolute beginner. I am currently on my way through Robert Love's Linux Kernel Development and need help with finding something I can work on to get a hang of what it's like.
How much of a beginner are you? In particular, how much do you know about operating system kernels in general? And how much multi-threaded programming have you done, in situations where you have to manage your own locking? If you don't have good practical understanding of concurrency, you might want to do yourself a favour and do some work with a large multi-threaded program until you've got practical experience with race conditions, lock contention, and deadlocks. Linux is a fairly mature monster. This means that the simple outlines of what all OSes do tend to be obscured by layers of complexity. That's one some folks use BSD for their OS-kernel classes. You'll be doing more digging in linux. Will you be comfortable with that?
I have also subscribed to the LKML, but find it completely incomprehensible!
My question would be "incomprehensible how?" There's a lot of shared context, which you won't have, and diffs aren't the best way to learn what's in a piece of code. That level of "incomprehensible" makes sense to me. Beyond that, there's learning you need to do.
As a beginner, would it be better to work with the kernel of a specific OS (I'm running Ubuntu), or work on the upstream kernel?
Pick one that you actually run - that way you're set up to try out the results of your experiments, and more likely to encounter some problem that motivates you to attack it. Personally I'd prefer not to be testing on my development system [hate it when that's unstable], but if you aren't playing with hardware, VMs make great test environments. Beyond that, my advice would be to do something trivial. How about a kernel module that prints "Hello world"? It's useless, but you'll start internalizing the build system. Then do something else trivial, that let's you poke the kernel somewhere else. Eventually either it'll start making sense, and your ambitions will increase - or you'll decide you aren't having fun and try somethign else. -- Arlie (Arlie Stephens arlie@worldash.org)
participants (4)
-
Arlie Stephens -
Augusto Mecking Caringi -
Valdis.Kletnieks@vt.edu -
Varad Gautam