KernelNewbies:

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:
Linux kernel subsystems.
Linux kernel modules.
kernel compilation doubts.
Sometimes question related kernel Code, which you are not able to understand
because you are unfamiliar with the syntax.
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.
Kernel coding style/standard.
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
Since you have already given description of your problem, now its time to
assist others with the details of the problem at hand.
Since kernel is complex beast, you need to give reference to what you are
really asking about.
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.
Give details of what you have tried, and where you are really stuck, this makes
life easy for everyone.
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?
1. 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.


REMEMBER, self help is best way to learn, hackers before you had much lesser
resources at their disposal.

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?
First rule of mailing list, which goes without saying is "be polite", that
means not just the language or keywords, but the attitude.
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.
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
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.
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.
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.
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 19:42:23 by anuz)