An introduction to Linux kernel programming

Printer-friendly versionPrinter-friendly version

This is Crash Course's first offering of a multi-week, online technical course; in this case, a series of 24 (actually, closer to 30 by now) lessons to gently introduce one to the joys and intricacies of basic Linux kernel programming. The first few lessons (and a number of others sprinkled throughout the course) are freely readable and shareable by anyone, while the remaining course lessons are available exclusively to subscribers for a course registration fee of only $39 (CAD) for the entire course. (That's not $39 per lesson, that's $39 for the entire course.)

A reasonably-detailed course overview and syllabus can be found here, while interested readers might want to check out the backstory here or simply register for the course here.

The content of this course and other parts of this site are changing on pretty much an hourly basis so if you want to keep up with new developments, feel free to follow me on Twitter at or drop me a note at

Happy coding.

P.S. And we have testimonials, yes, we do.

P.P.S. Let me emphasize that the lessons you see below are not the entire course. Check the course syllabus -- there's more to come. They're simply being posted as we complete them.

P.P.P.S. I would be remiss in not pointing out that, if you want state of the art in terms of a new book on Linux kernel programming, you need to pick up a copy of the newly-released 3rd edition of kernel guru Robert Love's Linux Kernel Development, for which I was the technical editor. That's what you call "street cred," right?

Robert P. J. Day,
Waterloo, Ontario, CANADA


Device driver


I cannot think of Linux without thinking about embedded systems and device drivers.

Is or will your course cover device drivers?

Kind regards,

Device drivers?

Technically, no, this introductory course won't cover the intricacies of device drivers but let me expand on that.

This course is meant to be an introduction to the basics of kernel programming; that is, it's going to cover the foundations of what every beginning kernel programmer needs to know in terms of kernel structure, configuring and building a new kernel, how to write loadable kernel modules, transferring data between user space and kernel space, simple debugging and so on. Clearly, none of that represents writing an actual device driver, but it's all essential information you'll need when you want to start writing specific types of drivers.

There are already plans for followup courses such as "How to write a PCI driver" and "How to write a USB driver", courses that will (probably) consist of perhaps a dozen lessons each and will cost about the same amount as this introductory course (or maybe slightly less, depending on length).

So if you feel that you already know kernel programming at a basic level, you can just wait for the driver course you're interested in. On the other hand, if you're truly new to kernel programming, you will probably need this intro course as a lead-in to the driver course.

I hope that answers your question.

UPDATE: I should correct myself here -- this course will cover writing a simple character driver since a lot of hardware can be managed by such a driver. But more sophisticated driver programming will have to wait for a subsequent course.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <p> <br> <pre> <h1> <h2> <h3> <h4>
  • Lines and paragraphs break automatically.

More information about formatting options

By submitting this form, you accept the Mollom privacy policy.