Best Advanced Linux Kernel Training? 153
hdxia writes "Can anybody recommend a good Linux kernel training course? I have had some Linux kernel hacking experience, but would like to further harden and improve my understanding of the kernel. I expect the course would be advanced. You may say that the best method would be to dig into the kernel myself, but I really want to have a chance to discuss and learn all aspects of the kernel with an experienced instructor."
obligatory? (Score:2, Funny)
there, now everybody should feel at home
seriously though, it would be cool if this was offered at major universities. but you'd need knowledgable instructors and they'd be hard to come by.
Re:obligatory? (Score:5, Insightful)
Re: (Score:3, Funny)
OTOH, when it asks for a cookie, you often find that you have to go along with the request, or the thing you tried to do just won't work quite right.
Re: (Score:2, Insightful)
Re: (Score:1)
Re: (Score:3, Funny)
Re: (Score:2)
Re: (Score:3, Funny)
Re: (Score:1, Funny)
breasts are great and all, but after viewing say, 1000 in a single sitting, the novelty wears off!
Re: (Score:2, Funny)
Re: (Score:1)
Re: (Score:1)
There is also the fact that some of the implemented functions, (besides from operating in a bizarro fashion) are not accessible through the gui.
Re:obligatory? (Score:5, Informative)
We did no kernel programming in either the undergrad or graduate OS class at my undergraduate institution (I took both). It was all fairly low-level C systems programming. The undergrad OS class at my graduate institution (a top ten CS school) is the same way -- in fact, the OS class there is sometimes taught in Java. We did no kernel programming in any class I've taken so far, except for the graduate OS class at my graduate institution, and that was only because that was the project I happened to pick.
You learn OS theory, sure, and you almost need an understanding of a lot of that to know all of what's going on around the Linux kernel, but you're not going to learn about the Linux kernel in an OS class.
Re:obligatory? (Score:5, Interesting)
I'm currently the 3rd year Undergraduate Operating Systems instructor at a big University, and while I'd love to have my students do their work with a real kernel (and preferably an Open Source kernel, like Linux, BSD, or Xnu), it just isn't feasible. First off, the student's C is somewhat weak -- by the time they get to me, they've spent most of their time working in Java. Giving them 2 - 3 week long assignments hacking the Linux kernel would absolutely brutalize them. In my case, I have have a lab issue -- the department hasn't assigned a lab to the course, so I don't have a common system they can do their work on. And even if I did, the IT department probably wouldn't be too fond of them having the ability to recompile and load their own kernels (although this could be mitigated by having them run entirely within a VM -- if we had an assigned lab for the course). And finally, the burden on the grad student marker to be able to mark such assignments would be rough.
The only way I can think to make such a course work (at least where I'm teaching) would be to ask the students to study and explain how various OS subsystems work. I'm all for doing such a thing, but my department wants the students to do programming assignments (note that I'm just a lowly Instructor -- I'm not a tenured Professor).
In the end, however, I don't think that it's realistic for me to expect my students to be able to write an OS once they get out, as few (if any) ever will. My stated goals for them are to have them be able to understand how OS's work, so that they can a) write code that interfaces correctly with the system (API/system calls, IPC, memory management, etc.), and b) be able to compare and contrast different aspects of different OS's, and recommend the best OS for a given task.
Now ideally, my course would then segue to a more advanced kernel-hacking course for those who are sufficiently motivated to take it. However, I doubt many Universities have a suitable practical kernel hacking Instructor/Professor on staff. I'd love to be able to teach such a course, but my practical Linux kernel experience doesn't really extend beyond make clean;make menuconfig;make dep;make;make modules;make install.
Such a course would be cool -- I just imagine many Universities lack the expertise in house to offer such a course.
Yaz.
Re: (Score:2)
Re: (Score:3)
Re: (Score:2, Informative)
Re: (Score:3, Interesting)
I don't disagree at all. By the time they get to me, they will have had a little bit of C experience, but it's just a perhaps month-long module in a course on general Unix development (which also includes Unix commands, Perl, and CVS)
Re: (Score:3, Funny)
Yes, I understand there's a professor Tannenbaum at the Vrije University in the Netherlands who will discuss the Linux kernel in depth, if you ask him.
Re: (Score:1)
Re: (Score:2)
scheduling theory - check
device drivers - you wish
file system theory - check
memory management theory - check
networking - you wish
My experience has been the exact opposite. I took an operating systems course at a four year university, and we didn't write a single line code that wasn't in user land. That wasn't the intro to operating systems course either, that was the 400 level five credit course. I even went to
Re: (Score:3, Insightful)
The replies to this comment seem to be along the lines of "they don't teach that at my university, so you're wrong." As a clarification to the parent, it should be noted that the CS 503 [purdue.edu] course taught at Purdue (cide1's and my university) has a lab where you have to implement a scheduler, a full virtual memory subsystem with demand paging, and a file system in the Xinu operating system on real hardware. If you break something, the only feedback you get is three beeps and a new boot prompt about 30 seconds
Re: (Score:2, Informative)
http://www.cs.uky.edu/~raphael/courses/CS585.html [uky.edu]
I think this is one of the best Linux kernel tra
Re: (Score:1)
Re: (Score:2)
Re: (Score:2)
Gentoo is a source-based Linux distribution. A package manager.
As far as learning the system components, http://www.linuxfromscratch.org/ [linuxfromscratch.org] is a far better tutorial.
But neither is intended to be a kernel introduction.
I guess not? (Score:1, Offtopic)
Harden ones understanding? (Score:2, Funny)
--
Wi-Fizzle Fo' Shizzle Dizzle [wi-fizzle.com]
Re:Harden ones understanding? (Score:5, Funny)
Re: (Score:3, Funny)
Precisely!
--
Wi-Fizzle Fo' Shizzle Dizzle [wi-fizzle.com]
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
To easiest way to harden one's understanding is to take a normal soft understanding and add the cement of surety. Fill any holes in your understanding with a quick setting rigid factual putty until your mind is completely closed. Softening one's outlook and poking holes in facades has the opposite effect.
Another way to gain a hard understanding is to construct one's mind from steel. In this way one may obtain a mind like a steel trap, although over time and exposed to natural elements, such a trap will ine
Too much. Focus (Score:2)
If you want real knowledge then nothing beats deep-ending on some particular area of interest: networking, drivers, file systems...
Sorry to say (Score:3, Insightful)
Just start implementing (Score:2, Interesting)
BTW, I'm not qualified beyond hacking the IP stack a few years ago with a search/replace, use your imagination for what text was removed/replaced. all this, Just for Fun http://www.amazon.com/Just-Fun-Story-Accidental-Re volutionary/dp/0 [amazon.com]
No, experience is the worst teacher (Score:4, Insightful)
Re:No, experience is the worst teacher (Score:4, Insightful)
That just isn't true! Experience should include a lot of independent research and planning. It isn't like you're just blindly trying things to see if they work or not. The only real difference between school learning and experience based learning is that there are real things at stake when learning by experience. And that can be a great motivator.
-matthew
Re: (Score:2)
"The only real difference between school learning and experience based learning is that there are real things at stake when learning by experience. And that can be a great motivator."
It motivates you to go for the quick and easy solution instead of the right solution. And as the gp said, in the end that will cause you to go with the "test first, lesson afterwards (if at all)" approach.
Even in our young industry there is a wealth of knowledge out there on how to best do things. To throw it out in the
Re:No, experience is the worst teacher (Score:4, Insightful)
It depends on the environment, how much pressure you're under, and how much you know going into the situation. What you say is true if you throw someone who doesn't know much into a high pressure situation with high stakes. They're going to find the easiest and quickest solution possible. No question about that. But if a person is consistently pushed only a little bit beyond their capabilities with reasonable demands and stakes, I'm confident that it can be a constructive learning experience. This is even employed in school. You're given reasonable tasks/projects to gain experience. But eventually you outgrow the the kind of experience that a school can offer. Eventually you need to go into the real world. You might start as an intern, or a junior programmer, for example, until you learn from enough experience to move on....
A solid education is important as a foundation. I'd never dispute that.
-matthew
Re: (Score:2)
Re: (Score:2)
Obligatory Star Wars (Score:1)
- Ben Kenobi
Hire someone (Score:5, Insightful)
My suggestion would be to find someone who's pretty savvy in the area you're aimed at, and hire him or her (OK, let's face it, "him"...) for some lessons. Keep in mind that a good programmer is not the same as a good teacher, but if you find someone who can explain things the way you need to hear them then you won't need that many lessons to make a lot of progress - the cost could very well end up in the same league as a commercially-vended course.
I'm just guessing that finding a kernel guru willing to give up a month of Saturday afternoons at $300 a session will be easier than finding "Linux Kernel for Experts" at the downtown Learning Annex.
Re:Hire someone (Score:5, Insightful)
When it comes to this level of specialization you take what you can get, and be happy about it. There is a reason many Universities have brilliant professors doing incredible research who also happen to be poor teachers. (At least in the sciences.)
Re:Hire someone (Score:5, Insightful)
The gender ratio is pretty extreme, but it's not 100%--there *are* expert female kernel hackers.
Personal tutoring is a pretty expensive way to get an education, especially if it's in a fast-moving field whose experts are in demand for other work.
Off the top of my head:
And if people have told you that "the best method would be to dig into the kernel myself",... actually, in the end, it's probably the *only* way. There's a certain point in your study of any field where you just run out of "courses". That's good. It means you're ready to do real work, because you're at the point where people are still busy doing the work and figuring stuff out, and haven't yet figured out how to break it down into manageable chunks and explain it in a logical order, which is a great deal of work in and of itself.
Re: (Score:2)
Re: (Score:1, Offtopic)
Alanna Virginia (Score:2)
Alan Cox after a sex-change operation? (Though he'd have to change his surname as well as his christian name- Cox wouldn't be as appropriate then).
Re: (Score:3, Informative)
I don't know how fair it is to single people out--they probably just want to get on with their work without being made examples of. But Val Henson (chunkfs), Mingming Cao (ext3/ext4), and Suparna Bhattacharya (aio, various fs hacking) are three that come to mind immediately.
And the fact that you may not know their names if you aren't a kernel developer doesn't mean much. I don't think most pe
Women Kernel Hackers (Score:2)
Re: (Score:2)
Re: (Score:2)
Re:Hire someone (Score:5, Insightful)
I've been teaching Linux Kernel Internals and Linux Device Driver courses (among others) since 1995 and other Un*x topics prior to that.
Many of the big names "outsource" their very technical training to third parties unless the topic is something related to an internal project (I won't name those companies here, but suffice to say that their names are abbreviations and usually three characters or less in length :)).
These training classes will cost the company $1k-$2k per student, depending on the exact nature of the course. This covers a 5-day class, 7-8 hours per day, with labs as practical for each topic. Obviously, in 5 days you're not going to get a lot of depth in any single topic, but a good instructor will be able to answer off-the-cuff questions during breaks between topics. I know that in a 10-15 minute break, I often get about 3 minutes to make a run to a restroom and spend the rest of the time going over details with one or more students. The most common areas of questions include processor scheduling (big changes in this area right now), virtual memory implementation details (especially the slab allocator and zoned memory concepts), and the block layer API. We don't get heavy into implementation details, but the student is expected to have at least some C background so that they can accomplish the lab exercises.
Some customers require detailed knowledge about specific subsystems and I will add a "chalk talk" ("dry erase talk"?) as time permits to cover those areas as much as possible. For example, a company that makes video poker machines running Linux might want details on hacking the interrupt handlers, while a company that builds disk storage units might want to talk about how best to support a custom RAID controller. Those types of things come up primarily in the Linux Device Driver course; the Internals course typically comes first in the curriculum and can be applied by application and system programmers to the code they write.
Most individuals are not going to be able to afford the associated costs, however. There are some training companies that offer "public" courses: I do those classes as well as on-site classes, but public classes for Internals don't often happen because there's not enough interest to fill the classroom with warm bodies. Send me a message if you're looking for such classes and I'll give you a list of vendors. If you opt to go the less expensive route, I suggest you get Robert Love's book on the Linux Kernel; overall it's a great book, but it does lack depth in one or two areas. After you understand what he covers there, then download the free book on the Linux VMM from
Sorry, I'm rambling. I'll now return you to your regularly scheduled pr0n viewing. :)
Umm, we're programmers (Score:4, Funny)
Compare this with, say, a DBA or a network engineer. They get training which is actually relevant to their job.
Re: (Score:2, Troll)
Re:Umm, we're programmers (Score:5, Insightful)
It's not surprising the software is so crumby, it's only surprising that it works at all.
Re: (Score:2)
Re: (Score:1)
Corporate project managers aren't people?
Oh, wait....
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Yes, because we all know everyone that worked and innovated in newly created fields of knowledge were just in their dark ages too, and all they did was essentially crap because it was so new and they didn't have any previously-set standards to follow (the inconveniences of developing
Reads like a mailinglist posting by some H1B (Score:5, Funny)
I await your full attention to this matter,
Samir Nagheenanajar
Re: (Score:1, Offtopic)
Re:Reads like a mailinglist posting by some H1B (Score:5, Insightful)
It would be nice if I could feel free to express myself and give a bit of humour to the world without worrying about offending somebody. Unfortunately there will always be the intolerant and Politically Correct among us who will project there own anxieties on other people.
Say anything good, bad or neutral that involves a "race", and that statement can be said to be "racial", but "racist" implies intolerance and dis-respect, and this is something I just don't see. Perhaps this is because I view ethnic and phenomic differences as trivial, and yet view humour and the creative use of words and ideas as a very important part of my personality. The sad thing is, is that I don't use humour a lot because I know there will always be some people who just don't "get it". So I just give up
Re: (Score:1)
Just because people laugh at offensive jokes doesn't make them offensive. Hell if you were working in India and people made racist comments about your ethnic group, you'd probably decide that it was easier to laugh them off than risk losing your job. Ok, it's probably hard to explain to you, since if you were working in India you'd probably not be too unhappy about having to go back home where wage
Re: (Score:2)
The main premise of the joke in question i
Lighten up already (Score:2)
In my experience Indians are disproportionatley represented in that group - and among the interview crib seekers too, I may add.
But I doubt anybody was suggesting they all do it, or that only they do it. Stereotypes aren't always true in every individual case, but ask yourself where they come fro
Re: (Score:1)
(I think you meant incite)
Re: (Score:1)
Re: (Score:1)
I wonder how unlametheweak would feel if you'd said
(I think you meant incite)
Joke about illiterate $(ETHNIC_SLUR)s
Where $(ETHNIC_SLUR) happened to match his ethnicity and didn't match the majority ethnicity. Would it be okay if your $(ETHNIC_SLUR) janitor or coworker thought it was funny too?
Re: (Score:2)
Teaching and doing (Score:3, Insightful)
Finding someone who is an expert in the linux kernel, *and* who can teach, and has the time and willingness to teach you one-on-one, will be a rare find indeed. ( Are you willing to pay them what they're worth for their background and ability? )
That person has probably already written a book [amazon.com].
Teach (Score:4, Insightful)
Re: (Score:2)
Thats the missing phrase!
'solidifying' makes a lot more sense than 'hardening'.
RTFML (Score:3, Insightful)
rule number 1: get the name right (Score:3, Funny)
Re: (Score:1)
Actually, I think in this instance, even the GNU folks would call it just plain Linux. See, Linux is the kernel. GNU is the core software. GNU/Linux is what they want people to call the whole integrated operating system.
Re:rule number 1: get the name right (Score:4, Funny)
Re: (Score:3, Funny)
There was a move a few years ago to get distributions of linux, gnu tools, X windows and other bits renamed to LiGnuX to draw attention the the gnu project. This wasn't taken seriously so later there was a move to put a gnu prefix on before linux in the name of distributions - only Debian took it up as far as I know. Newbies that missed the point also started putting gnu in front of any reference to a distribution conta
The best advanced kernel course I have found (Score:5, Informative)
Re: (Score:2)
Or, if the BSD kernel is indeed your thing, hire Groggy [lemis.com]. Would you study under someone without a beard?
Re: (Score:1)
Re: (Score:2)
Some classes on the left coast (Score:5, Informative)
UC Santa Cruz Extension, http://www.ucsc-extension.edu/ [ucsc-extension.edu] has an "Linux Kernel Architecture and Programming" which looks like an intro course. You can take it online or as two Saturdays. There is also a Linux device drivers class which a once a week class and an Advanced Device Drivers class which is 4 Saturdays.
I checked the other campuses but they all seem to be summer schedule with a limited set of classes.
Red Hat also has a one week Kernel internals class which is a "hands on" which to me means a trade off of less information for some finger programing of the brain.
All of these courses seem to have an introductory flavor to them. But I suspect that you will learn a lot about all of the various areas of the kernel and how the different parts hang together. My experience as kernel hacker is that I have learned a lot about the parts I am interested in, but that there are many big areas of the kernel that I only have a superficial understanding of.
Hope this helps
RLH
Not trying to be an asshole, but... (Score:2, Insightful)
...this made the front page? The course is called "Operating Systems," and it's taught at major universities, as someone previously mentioned. In many of these courses, the semester-long project is to develop your own distribution of Linux (as a class or group).
Re: (Score:2)
Red Hat Courses (Score:3, Informative)
If what you're looking for is the typical corporate 1 week training course, then IMHO you can't do much better. But! Let's be honest here, what can you get out of a one week course? If it's a serious course, like these are, you're going to get so much information that you'll have trouble staying afloat. You're not going to master these skills in a week. Depending on your programming skills and operating systems background you're looking at months to years before you're comfortable kernel hacking. What these courses can give you is a lot of solid coding examples to build your skills. But don't take my word for it, the code samples are available at ftp://axian.com/pub/RHD_SOLUTIONS [axian.com]. Oh, and of course the Red Hat info: http://www.redhat.com/training/developer/courses/ [redhat.com]
If you're not in the typical corporate time crunch mode, I'd definitely recommend college courses. Get some general background in OS design while you're at it if you don't already have it. Oh, and LUGs, lots of lugs have groups doing kernel hacking, not a bad place to start there either, plus LUGs don't cost anything!
Operating Systems understanding + books + practice (Score:3, Informative)
For good professional background, I would recommend you to get also good books. On OS principles themselves, and on Linux Kernel. I have been printing and binding myself freely distributable online David Rusling book "The Linux Kernel" (that over 10 years ago). It mentions even Alpha processor view of things - very good for broader understanding. Love this book, very special. Also in my library sits book of Linux kernel anatomy: too lazy to go upstairs for exact title, but it must have been published by SAMS, and is book analyzing specifically code, that makes Linux Kernel, there are sources of very first versions of kernel included too, which should help to understand evolution of kernel as final touch. And plenty of code and discussion of it. Author might be not available for classes, but book is serious alternative for such.
Good luck! OS things deserve your attention.
Re:Operating Systems understanding + books + pract (Score:3, Insightful)
I can say that Robert Love's book, Linux Kernel Development (2004) is very well written and easy to read and understand. (print only)
There is also Greg Kroah-Harman's Linux Kernel in a nutshell at http://www.kroah.com/lkn/ [kroah.com] - free PDF download.
Re: (Score:1)
"Linux Core Kernel Commentary: Guide to Insider's Knowledge on the Core Kernel of the Linux Code"
by Scott Maxwell. Beware, that most of this book is made of kernel code, and one's expectation might be disappointed. However, it is very illustrative and should be handy for learning. There was once ago such "Linux Bible", published by Yggdrasil, consisting of many open source documentation of that time only - you co
never heard of a class for actual hacking (Score:1)
But since we're speaking of kernel hacking, that necessarily doesnt have to do with security, especially with what you're speaking of. the closest i can think of are book references to device driver coding and such, but
East Coast (Score:1, Informative)
Linus is the man (Score:1)
You may learn a lot of interesting things
Simple (Score:1)
A Quick Google... (Score:1)
Getting (Linux Kernel) training (Score:1)
A common issue in training is folks requesting training that covers more material than can be covered in the alloted time. However, when negotiating for training with a training provider, it is valuable to discuss the topic outline in advance and ask about changes. Since the topic of Linux kernel training is so broad, you
Lots of people here willing help. IF... (Score:1)
1) are you female?
and (less importantly),
2) are you hot?
Re: (Score:1)
Re: (Score:3, Insightful)
Every sorcerer was once an apprentice. Every wizard was once a n00b. Even Linus, Bill, and Steve.