Skip to contentSkip to conversation

Introducing Myself, Looking to Learn

DISCUSSION Rakesh Ganimineni 3 participants 4 messages Sep 4, 2013

lore
Share & tools
lore
#0 lore raw

I would suggest you to fix on a module and start following what are the bugs in it and see if you can fix it or try understand what others fix.
From: Arlie Stephens
Sent: 4/9/2013 7:08
To: Varad Gautam
Cc: kernelnewbies at kernelnewbies.org
Subject: Re: Introducing Myself, Looking to Learn
Hi Varad,

Quoted 6 lines · Varad Gautam

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?

Quoted 2 lines

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.

Quoted 3 lines

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 at worldash.org)

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

#1 lore raw

Varad,

I have external sata to usb3 adapter that is not supported by the kernel. I'm willing to buy one for someone willing to get the kernel support done.

This is my second offer. No takers the first time.

Fyi: I expect no true code is needed, just updating a pid / vid table somewhere. I don't know the usb driver stack so I have no idea where said table is.

Fyi2: I tend to focus on filesystems recently so diving into usb is not a goal of mine.

Greg

Quoted 77 lines · Rakesh Ganimineni

I would suggest you to fix on a module and start following what are the bugs in it and see if you can fix it or try understand what others fix.
From: Arlie Stephens
Sent: 4/9/2013 7:08
To: Varad Gautam
Cc: kernelnewbies at kernelnewbies.org
Subject: Re: Introducing Myself, Looking to Learn
Hi Varad,

Quoted 6 lines · Varad Gautam

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?

Quoted 2 lines

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.

Quoted 3 lines

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 at worldash.org)

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Signature · 4 lines
Sent from my Android phone with K-9 Mail. Please excuse my brevity.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20130903/189952a1/attachment-0001.html 
#2 lore raw
Quoted 6 lines

I have external sata to usb3 adapter that is not supported by the kernel. I'm willing to buy one for someone willing to get the kernel support done.
-
This is my second offer. No takers the first time.

Quoted 8 lines

Fyi: I expect no true code is needed, just updating a pid / vid table somewhere. I don't know the usb driver stack so I have no idea where said table is.

Fyi2: I tend to focus on filesystems recently so diving into usb is not a goal of mine.

Greg

Hi Greg, thanks for the offer. I'd be happy to. I shall let you know once I catch some speed, and then I'll start.

#3 lore raw
In reply to Rakesh Ganimineni
Quoted 4 lines

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?

Here's a little something about myself, I'm fairly good with C, Python and Java and have programmed using threads with Python. I've been using Linux via the command line for a long time now. As for the OS and kernel level stuff, I don't have a lot of experience, but am enthusiastic to learn, and am working on it.

Quoted 4 lines

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 do realize that contributing to the kernel would not be an easy task, and I must know a lot before I can contribute actual code. But still, I would be happy to.

Quoted 4 lines

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.

I should be able to minimize the "incomprehensible" part soon, there's a lot to catch up with...

Thanks for the advice.

Varad