Best Advanced Linux Kernel Training?
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."
RTFM
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.
an Operating Systems course in a computer science programme at a university, maybe?
and first post.
Since I'm at or near FP, I guess not.
Speak for yourself.
How exactly would one 'harden' ones understanding? Sounds wacky.. or tacky ..
--
Wi-Fizzle Fo' Shizzle Dizzle
Censorship is obscene. Patriotism is bigotry. Faith is a vice. Slashdot 2.0 sucks.
If you want real knowledge then nothing beats deep-ending on some particular area of interest: networking, drivers, file systems...
Engineering is the art of compromise.
Sorry to say, but experience is very often the best teacher. Experience being mistakes with time.
Freedom is strength, Ignorance is peace, War is slavery.
Truly "advanced" courses are hard to come by, because of limited appeal and other factors. The further you go into something the more inevitable specialization becomes, so it's not just a matter of offering one course for the tenth-of-a-percent of the market who's even heard of the Linux Kernel, but in all likelihood offering half a dozen ranging from security to device drivers to assembler optimization and so on. (and I'm just guessing here, knowing next to nothing about the kernel myself)
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.
Perfectly Normal Industries
We don't get training. Unless it is in how to use revision control systems or avoid sexual harassment lawsuits.
Compare this with, say, a DBA or a network engineer. They get training which is actually relevant to their job.
How we know is more important than what we know.
Hello all, please give me, a foreign consultant with no work experience but an H1B visa, all your knowledge and a step by step instruction on how to do your job, so that I can displace you in yours, since your boss only looks at buzzwords on a resume anyways.
I await your full attention to this matter,
Samir Nagheenanajar
I want to delete my account but Slashdot doesn't allow it.
Just start implementing in the stable kernel and as each of your inputs is rejected, you'll learn. I hope you've had - at least - an operating systems design class (or equiv experience), and you don't try to implement something in kernel space that should be in user space.
e volutionary/dp/0066620732 It appears someone else had more time for fun than I.
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-R
Well, good luck. Have you ever heard the saying, "Those who can, do; those who can't, teach" ? I don't agree with it , but there is a kernel of truth. You've probably had a professor who was a genius, and and expert in their field, but couldn't teach worth a damn. You've probably also learned from someone who was a good teacher, but didn't know their stuff, or didn't have the resources to teach it properly.
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.
Computers are useless. They can only give you answers.
-- Pablo Picasso
Samir: This is a... fuck!
You just made my day.
It would be nice to have that kind of job security.
Teaching is the best way to learn. I was a computer science tutor up at Berkeley and I learned FAR MORE from tutoring than I did from the classes. Find someone who is interested in the linux kernel and teach them. If they're smart they'll ask you questions you've never thought about asking, which in turn will end up solidifying your knowledge.
Read the LKML archive?
First of all, it's GNU/Linux kernel not Linux kernel... I remember reading something about this and why getting the name right is important but can't find the link anymore. Cheers!
(Please browse at -1 to read this comment.)
It's not surprising the software is so crumby, it's only surprising that it works at all.
These are the Dark Ages of Computing. We're still very much at the stage of examining chicken entrails.
The sad thing about it is that so many programmers think that what they're doing is wonderful and great and worthy of respect. We're not. This field is, at the moment, total crap, even at the highest and most "professional" end.
The very best course I have found is a ~32 hour DVD course on the FreeBSD kernel internals and: Advanced FreeBSD Kernel Code Walkthrough Videos I've never found anything more thorough.
Of course, they couldn't hire anybody to fail on THEIR systems. Let some other poor schmuck pay for the OJT!
"The right to do something does not mean doing it is right." William Safire
Failure comes wrapped in many packages. I'd hate to think my desire to have someone who could handle setbacks and failures would cause me to overlook a person who had failed in other careers, been kicked to the curb in other disciplines, and finally found their place in the sun, so to speak.
Every sorcerer was once an apprentice. Every wizard was once a n00b. Even Linus, Bill, and Steve.
Out here on the left coast the extension programs at the various University Of California campuses have some Linux Kernel classes. These tend to be developed and taught by engineers in the industry with a real working knowledge of the subject.
UC Santa Cruz Extension, http://www.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
...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).
I may be a little biased since I've taught the courses... but...
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. Oh, and of course the Red Hat info: http://www.redhat.com/training/developer/courses/
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!
I doubt your target for course is correct. Having been trough after-studies Operating Systems course like 20 years ago, centering on RSX-11, I still feel solid in concepts of today's OSes - Linux, too.
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.
Servant of karma
/* Linux Kernel */
.....
main()
{
i second the good books notion and thanks for the reference to Rusling's book - I haven't heard of that one.
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/ - free PDF download.
ive never really heard of a hacking class or a kernel hacking instruction. ive gone through the usual computer security system classes in college to get that certificate, but what you go over is securing your system and how holes are taken advantage of. you don't learn how to find new holes.
:)
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 they dont really follow the concept of "here is unsupported device A, make it work with this operating system" so i dont define that has hacking; this is just my personal opinion.
the way i learned about kernel hacking and device driver hacking is from taking my current programming knowledge and presenting myself with the challenge, and going forth with it; gaining the needed knowledge. the biggest thing i can think of is when i made my own version of an apple airport driver for mac os x, partially based off of freebsd code, because at the school i was at, apple laptops couldnt use wep on the cisco aironets since they were in wpa migration mode - where both wep and wpa are enabled, but you can only connect through wep via key index 2. msft & linux & freebsd drivers worked fine(you can pick your key index), but apple airport drivers are only designed to use key index 1 (and also wpa, but unfortunately at the time there were compatibility issues with original apple airport cards and cisco aironet waps).
anyways, what im saying is that skills in kernel hacking i think come from experience and determination, not classes or anything. perhaps this may change in the future, but when someone tells you to "hack away at it", it usually refers to not giving up until you succeed, regardless of what you were taught from a book or classes, learning from your mistakes, teaching yourself, etc.
as a compliment to you, it's good to have a positive attitude towards learning about the inner workings of operating systems; not alot of people who earned a computer science BS go that deep, at least from the people i know of. dont give give up
Who is more foolish, The fool or the fool that follows a fool?
- Ben Kenobi
It happened: went upstairs to check what was that other book, and it is translation of this one:
"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 could say what sense to have it in print, still never was regretting by this heavyweight on hands.
Anyway, having variety of good books used to be helpful.
Besides, Rusling's book was being printed by me on OKI dot matrix (in graphical mode), actually. Yeah...
Servant of karma
I recently finish a course that was titled "Linux Kernel & Device Driver Programming". This is by far the best class that I have taken in my college career. The book for the course was Linux Device Drivers, 3rd Edition which is available for free now. The course was more of a guide. It did not teach how how to program the linux kernel but instead how to research and a general overview and methodology of the kernel. The teachers showed us some of the the code and designs and why these designs were chosen. I believe that the people that learn how to program the kernel have a certain mindset coming in. The people that learn the kernel always wish to know WHY something works and not that it just works. They are the kind of people that are constantly questioning others decisions as well as their own.
If you can take this class, CIS 4930/COP 5641 as FSU summer term, it is a great opportunity. You will learn how to research the kernel so that you can program at the kernel level. It is a intense course that you will spend 12-16 hours a day working on but it is VERY rewarding. Again, you will come out of this course knowing how to research the kernel and by no means am I telling you that you will know everything about the kernel.
Try knocking on Linus' door and offering some beers for his time. ...or you may be left without beers and without knowledge
You may learn a lot of interesting things
Is http://bravo.ce.uniroma2.it/kernelhacking2006/, organized by Bovet and Cesati (authors of "Understanding the linux Kernel", with a pretty impressive schedule (last lesson about memory management is done by Andrea Arcangeli). Not for the faint of heart.
Understanding the Linux Kernel, 3rd Edition by Daniel P. Bovet, Marco Cesati. It takes a very detailed tour through every essential part of the Linux kernel architecture.
The code is pretty well commented, and it's usually worth having a good look at the sections you're interested in. It's well organised and clean [in the interesting parts]. It has to be, it's modified by a lot of people. Seriously, you won't be sorry. Above this, Google is your best friend. IBM's developer works has good holistic info, and Linux HQ has lots of links to great information. Kernel hacking on your own time is pretty easy, I don't think it needs to be taught. If you want to work on THE Linux kernel, the official archives and documentation are a must.
We at slashdot are scientists, specialists and kernel hackers. Your FUD will be found out.
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).
"Slashdot - News and Chat Sites Deviant". (Click "homepage" link above for details).
It's not offtopic, it's a valid question. bfields should be able to defend his assertion. (And gender reassigned folks don't count.)
A quick google of "Linux kernel training" brings up excellent resources on the first page. Choose from in-depth courses given by Red Hat, IBM, Sun, Linux Certified, and others. Combine that with self-taught hacking on the code and I think that would suffice to get you started.
"All governments should be pressured to correct their abuses of human rights." --Richard Stallman
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 should be able to narrow down the subjects that are most valuable to you.
A stock kernel course will have a mix of what the authors felt was most widely applicable. Or at least most applicable to their audience.
Here's a 2-day course from K Computing that selects what are widely held to be interesting topics: http://www.kcomputing.com/pdf/kernelinternals.pdf
The week long course from Red Hat (actually developed by Axian) covers much of the kernel.
Also, remember, it is the combination of training materials plus instructor that make the class. Who developed the materials? Who is the instructor?
For something like the Linux kernel, an instructor with a strong Linux programming background and education in computer science - say an advanced degree in computer science and 10 years or more of working with UNIX and five or more years with Linux is something to expect. Also, get an instructor when you want training. Get a practicing engineer when you want engineering.
Also, the materials should be organized for training. You should get a book that has slides and notes. Slides plus notes are what make training materials. Ask to look at a sample chapter. A course-book that is organized like an ordinary book with pages just full of text and no slides was not written for instructor-led training. Despite what some training vendors think.
A good instructor can teach you something new about the Linux kernel with a pointy stick and a spot of sand, but, the whole key to good training is to use your time in the most efficient manner possible. That's why there are organized training materials.
Training is about saving time. One could always learn the topic on their own. You are paying to have someone help you to learn, the topics that will help you the most, in much less time than it will take you on your own.
Training requires doing. Look at the exercises. The most important features of a great training class are the exercises. After all, the objective of training is to be able to *do something new* when you are done. Is "talking about the kernel" the new thing you want to do when you're done or is it to actually be able to write some code?
you can answer two questions correctly:
1) are you female?
and (less importantly),
2) are you hot?
Nachos?
Are current Universities are weak. They are afraid to brutilize all the sweet little girls into failing a real class and waking them up to the specifics of the real world and technology; their minds simply cannot process this stuff. If students start fdailing a class the instructor (eh, hem, professor) KNOWS that if half his class fails (especially often) that he will get totally reamed by the upper management of the "school". University courses are very dumbed down. There are few worth the hype. I've seen classes bombing and the ciriculum requirments get scaled back on the spot to keep the students from failing and losing their finacial aid. I thought it was great that everyone could go to college on an automatic loan until I saw how much it lowered the quality of the education and resaerch you are able to conduct. The whole class gets derailed because a couple girls are balling their eyes out over their Java assignments. In other countries they will fail you if you are a simpleton, but not in the US. I've seen this over and over and over again and it is getting worse. What do you expect when kids go from watching TV to having to contribute to the real world. The US will soon not be able to "compete".
All you'd have to do is read usenet comp.os.linux* hierarchy, along with the *linux mailing lists.
Oh yeah and have an aptitude for coding, which I do not.
Just a tip: the best hackers are outside of academia. In my experience, those who possess credentials are less likely to know what they are doing.
find an old laptop, format it with linux, fire up google, and start working. that's it.
The academy is irrelevant. If anything, it's damaging. The university types don't even know how to setup their own machines. They sit in an office with a whiteboard and round table, and pretend it's 1996 every day.
"Experience is a dear teacher, but fools will learn by no other."
The older meaning of "dear" was "expensive." This may explain the conflation with "best," e.g., the most expensive option is often considered to be the best one, even if practically unattainable.
"Press to test."
(click)
"Release to detonate."
It's not only feasible, it happens. As a sophomore at my university, I enrolled in a junior-level Operating Systems course. Our first project was to modify the scheduler in the 2.2 Linux kernel. Another project involved creating support for user-defined file attributes for the ext2 file system. I can't imagine learning much without a kernel to play with.
Here are some...
Wikileaks, no DNS
My employer paid for me to take their Linux Internals Overview, Linux Internals II, and Linux Device Drivers for the 2.6 Kernel. The instructors were excellent, and even though I used to do kernel development for proprietary Unix, I learned a lot.
check out the linux kernet training on www.securetesting.com
If you feel like signing up, the article is here.
Wikileaks, no DNS
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 from - they don't fall out of the sky.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
http://www.phptr.com/bookstore/product.asp?isbn=01 31453483