KernelNewbies:

Set of FAQs

If you are new to this list please read them before you go on your quest for squeezing all the knowledge from fellow members

What is this list about?

This list a list for budding kernel hackers, so the idea is ask queries which are mostly related to Linux Kernel, directly and sometimes indirectly.
This site is not a homework help site, so please refrain asking your assignment questions directly. However if you have a relevant doubt which is related to kernel please do ask but after reading all the text below.

What to be asked?

The best thing is to ask questions related to:

1. Linux kernel subsystems.
2. Linux kernel modules.
3. kernel compilation doubts.
4. Sometimes question related kernel Code, which you are not able to understand because you are unfamiliar with the syntax.
5. Some relevant utilities like git, build tools like gcc et al, patch, kermit etc: but ensure you are not deviating too much from central theme of this list.
6. Kernel coding style/standard.
7. May be issues related to GPL in kernel.

How to be asked?

1. Firstly make a descriptive headline

"hi", "help" and generic headlines are shooting offences.

Not only are they annoying, but they waste a lot of time and precious computing power.

Besides, there are lesser chances of getting correct answer, you will be ignored and you __may__ loose credibility on the mailing list.

2. Give relevant information about your question

a. Since you have already given description of your problem, now its time to assist others with the details of the problem at hand.
b. Since kernel is complex beast, you need to give reference to what you are really asking about.
c. A code snippet is always the best thing to include. This shows that you have really dug into the code and you know what you are asking.
d. Give details of what you have tried, and where you are really stuck, this makes life easy for everyone.
e. Anything else like logs, test results, coredumps are _always_ a good idea.

3. When to Ask questions?

This is most relevant part of this entire process. if you master this art, you will be _winner_ of this mailing list.
First ask yourself "have  you really done your own bits?" what comprises of doing your own bits?

Have you read the relevant texts?
What are the relevant texts?
Books: read the section on relevant books
Links: Please read the section on relevant links
Search: well this is the easiest part of entire process. Just use goggle, its gives  you a lot of information about anything you want to know. There is a
tonnes of online documents for Linux, so google search will most likely link you to them. It takes a bit of time and practice to filter out what is relevant
and what is not relevant on online search and there is no sure shot way of optimize this process. But everyone has learnt by hit and trail, so please do that.
If still not sure, here is an exercise, go to google and search "how to use google" and look for results.
Man pages: Most things related to Linux has a relevant man pages including your system calls, so please look for man pages.
Mailing list archive: every now and then people ask similar questions, so there is a good chance someone has already asked the very same question, so you can
dig into kernelnewbies archive: http://mail.nl.Linux.org/kernelnewbies/
FAQs: kernel newbies has its own FAQ: http://kernelnewbies.org/FAQ. Linux kernel has its own FAQ: http://www.kernel.org/pub/Linux/docs/lkml/: PLEASE DO
refer them.
kernel Documentation: when you download Linux kernel source: you can find a lot of useful documentation inside kernel/Documentation directory.




Well, when you have tried all the previous steps and you feel your problem need to be discussed, its a good time to head towards kernelnewbies mailing list.

4. What to keep in mind, while posting on kernel newbie mailing list?

1. First rule of mailing list, which goes without saying is "be polite", that means not just the language or keywords, but the attitude.
2. Please learn about Netiquettes: http://en.wikipedia.org/wiki/Netiquette. Well, they are not specific to any mailing list, but they good a good idea of general
   behaviour on any online community.
3. Please do not TOP POST. On almost all open source mailing list top-posting is considered RUDE. Don't know what TOP POSTing is? Here is a linky:
    http://en.wikipedia.org/wiki/Top_post#Top-posting
4. Please learn a bit about hacker culture! How does that help? Well, since most people on kernel newbies are developers(or wannabe developers) they derive
   their ways of problem solving in similar fashion. That will give you a cultural insight on how most open source project works.
5. Do argue your point, but remember there are chances the people on the list know more than you, so ensure you make a valid argument.
6. Don't add noise to list, by replying to irrelevant posts. Resist temptation for off-topic discussion, its a good idea to take them off-line.
7. Nobody cares much  about grammar on this list, but make sure you try to make a good effort to write a good mail, which is legible and make sense.

What not to do?

1. My manager want me to develop driver for superslicksuperawesomeDevice and i have no clue about Linux, can you guys help me? BIG BLOODY NO. Before jumping
here please "lurk more", this mailing list is not some kind of code churning machine.
2. I want to be uber leet Kernel Haxor in 20 days, Please help me. It takes years of hardwork and dedication to learn kernel coding, so be patient and
follow the process, you will improve slowly and community can help you only when you do it in the right way.
3. "cn i use ths lngo": bloody hell no, please make sure you use proper words, we are not grammar nazis, we are also fine with bad spellings, but
undecipherable text makes it hard to read. Use of good abbreviations is encouraged, as  pointed out previously please read about hacker culture, it
will help you in learning these kind of things.
4. I want a job in kernel Programming please help. This is not really a job portal or job training list. Its meant for learning kernel coding, and how you
use that learning is totally upto you.  Though its encouraged to take up this kind of profession, but this is not the right place to talk about your
professional aspirations.
 5. Do not ask Basic "C" related question, this place is definitely not the right place for such queries. There are mailing lists dedicated to do that.
Besides its expected that you have good grasp of subject, please look at books section for where to begin.
6. Hey this device driver doesn't work on my totalcluessArch, help. Please refrain from asking very arch specific/board specific questions, there are
dedicated mailing list for these kinds of issue. But you can ask some basic level questions, which are good for everyone. However be a bit more intelligent
while asking such questions, if you are hacking such stuff, you should be intelligent enough to really decide "what to really ask?".
7. Please do not use mails in HTML format, use plain text mails. Html mails do not serve any purpose on this mailing list and there are chances a lot of
people will filter them out.


For more details on how to ask good question, please read this commentary, its very very useful:
http://www.catb.org/~esr/faqs/smart-questions.html


Some resources AKA "LURK MORE":

Books:

Core kernel programming books:

1. Linux device drivers by Rubini, Greg kroah hartman and Jim Corbett: Third edition
if you really want to learn Kernel programming, this is your book. Its a MUST BUY book.  Probably most questions will be answered somewhere in this one.

2. Linux kernel Development by Robert Love third edition.
Again, this is a highly recommended textbook. It gives you working details of kernel in fairly simple language.

3. Understanding Linux Kernel by Bovet and Cessati
This is an advance book, this is intended for more serious coding. Its recommended that you get yourself a bit familiar with x86 arch to use this book to fullest.

4.Essential Linux device drivers by Sreekrishnan Venkateswaran
This book is a good book in addition to classic text, its well written and simpler in nature, highly recommended.

C language programming books:

1. The C programming language by Kerninghan and Ritchie.
Its a must-have book, most code in Kernel is written in C language and mastering C is important and there is nothing better than KnR for this job.

2. Practical C programming by By Steve Oualline
Good book for developing a good coding style in C language

3. C traps and pitfalls by Andrew koeing
A book which talks about limitations and issues with C programming, a very helpful textbook to understand where you can make mistakes.

4. Expert C programming: deep C secrets by Peter V Linden
A very good books, which teaches a lot of nuances of  C language.

5. The C programming Manual by Harbison and Steele
This book ventures deep into the C programming language mostly details of standards and changes in C, its quite advance in nature.

Some preliminary books:

You may need to get yourself familiar with a lot of extra stuff, which may be needed:

1. Advance 80836 programming techniques by Jim Turley
A good book which gives details about x86 arch, this book will make you ready to use ULK as previously pointed out

2. The art of assembly programming:
A good book to learn some assembly language, which may be required if you want to dig into some architecture related code.

3. Design of Unix operating system by Maurice J bach
Classic text on how unix operating system is designed, its a good text to understand the principles behind a lot of subsystems in operating system

4. Beginning Linux programming by Richard Stones and Neil Matthews
its always a good idea to learn more about user space programming, before you dive in kernel. Mostly for two reasons: a) Get familiar with facilities
provided by operating systems b) Get your hands on some coding. This book is highly recommended text

links:

1. http://www.Linux.com/
Home page of everything related to Linux, you may find a lot of useful articles there.

2. http://www.Linux-magazine.com/
This magazine a lot of general information about Linux, its not highly directly related to kernel but a very useful resource.

3. http://lwn.net/
One of the most respected site, its maintained by one of the most senior developer of kernel. It has a lot of useful article related to Linux kernel.

4.http://kerneltrap.org/
This site host the digests of hottest topic on Linux kernel mailing list. Its again a very useful site to look for what is going on in much simpler way.

5. http://sourceforge.net
If you want to participate in some project, this is the place to begin. There are lot of projects hosted on this site, some of them are related to kernel
and/or device drivers.Most of those projects are in need of developers, so if you have skills, you can participate.

6. http://tldp.org/
The famous Linux documentation project, this will help you with a lot of HOWTo for everything related to Linux, including kernel.

7. http://crashcourse.ca/ This is a very good site, which is quite up-to-date.
This site have very good kernel programming tutorials for beginner.

KernelNewbies: mailinglistguidelines (last edited 2011-01-05 20:03:28 by anuz)