How to become a Kernel hacker

My first obsession with Linux was getting the computer to dial out via SLIP/PPP.  Once I got it to connect to my uncle’s University of Toronto account I was set.  I subscribed to newsgroups, downloaded Linux Docs, and HOWTOs, and learned how to setup various servers.  I was constantly checking the man page for various commands when I wasn’t on the Internet.  I couldn’t always be online, it wasn’t my account and I didn’t want to abuse it.

When I learned enough I started compiling my own kernel, this was needed to enable certain SLIP/PPP options.  I had to learn everything by myself, I didn’t have any books and nobody at school had even heard of Linux.  This was back in the mid 90s.  Computer Programming class in grade 12 was Think Pascal on Macintoshes.  Computer Programming class in grade 10 was Turing on old crusty PCs.  It’s terrible how backwards Canadian schools are when it comes to computer programming curriculum.  I was exempted from grade 11 computer classes because I was always programming demo effects in Turing while other kids were making basic text scripts.  My programs had snow falling and gently flowing in the wind, with multi-coloured text scrolling on the bottom of the screen.  Turing could barely push 100 snow flakes on those machines, so I brought in Turob Pascal, shrunk onto a single 3.5″ floppy, and I demonstrated to the teacher the same snowflakes in Turbo Pascal, pushing 10,000 snow flakes.  He was impressed, but was powerless about the curriculum.  So everyone kept learning Turing, which was utterly useless.  At least with Pascal there was the chance for object-oriented programming concepts, and even some assembler could be used.  At home I was patching kernel source code in C.  You could tell that regular school bored me to hell.  I dropped out in grade 12 and went to work for Sprint Canada as an Internet Technical Specialist.

I never once wondered how the kernel does what it does.  I never once looked at the source code.  I don’t know why.  I think perhaps from the difficulties I had in setting up the system, administering it wasn’t easy, setting up all the programs, compiling and worrying about dependencies, it was so difficult that I must have subconsciously deemed it an impossibility.  Then after losing my job with Sprint Canada to constant lateness (I had gotten bored with the job), and after losing my job at Patriot Computer (I had gotten bored with poor management), I worked for UUNET Canada where we worked with Cisco and Juniper routers (GSR-12000 and M-160).  I kept a Linux server at home and constantly tinkered with it.  I started buying ThinkGeek t-shirts that had Apache written in huge letters on the front.  I miss that t-shirt.  It was dark blue.  So awesome.  They should sell it again!  And then I started a new obsession.  I had a book shelf nearly empty and I figured I’d fill it with computer books.  So I started making a wishlist on Amazon of all the books I could think of I would ever be interested in.  It’s kinda what I’m doing now, except now I can’t afford to shop on Amazon so I’m shopping at bargain book stores and buying $1 books on the mind, philosophy and other subjects, since computer books aren’t that cheap.  So I bought a book on the CCNA certification, I bought one on CCNP, and since my friend Mike Kim who worked at Q9 had a CCDA I also bought that book too.  Did I read them?  No.  But I also started buying some Linux books.  I was especially excited about these books.  I bought one on Linux Application Programming, and my favourite book of all.  It was so long that it didn’t fit on the shelf.  I had to put it sideways on top of other books.  It was called Linux Kernel Commentary.  And it had the full kernel source code and tons of comments explaining what each part of the code did.  This book excited me the most to wait and receive.

But then when the books arrived, my inability to focus on books kicked in.  Books aren’t as exciting as sitting at a computer, listening to techno music, hacking away on a project.  Books don’t posses that level of immersion.  Who wants to watch TV when you got a holodeck?  Who wants to read books when you can read HOWTOs?  I sure didn’t.  And so these awesome books sat on my shelf collecting dust.  Occasionally I would re-organize my shelf and sort the books according to authors, or according to subjects, when I got bored of how they looked.  But I never read them.

Yesterday I went into World’s Biggest Bookstore (WBBS) near Dundas Square and saw a book that brought back a huge amount of motivation.  It’s called Linux Kernel Programming.  I briefly skimmed it’s contents, and then I gave up, it looked too hard.  So I left it on the shelf and went home.  Plus I don’t have the money to buy it.  I have $200 in my savings account, and I’m desperately trying to get up to $400 so I can buy myself a replacement pair of contact lenses, which I need in order to read anything.  I’m nearly blind without them.  Even with them I’m half blind.  Poor me.  In my chequing account I have $30 until the 1st of October.  I need that money for food.  I spend maybe $30 per week on food.  So I’m stuck.  Unless I take money out of my savings to buy the book I won’t be able to afford it.  Then today I went for a walk and I went into WBBS again and I looked more closely at the table of contents.  I was ready to dip into my savings account.  Maybe I can live with old contact lenses for an extra month?  The book costs $60!!!  So I read for half an hour the table of contents and parts of various chapters.  What they talk about in that book seems so fucking foreign to me.  It’s interesting, but it seems beyond my level of comprehension.  Like they’re talking jibberish.  I didn’t understand much of what I read.  Kernel Sycnhronization, process scheduling, memory management, device drivers.  Linux has device drivers?!?!?!?  I thought this wasn’t like Windows?  What gives here?  Why does my OS have device drivers?  Didn’t we do away with those archaic things long ago?  I was perplexed.  In bitter disappointment I put the book down and browsed other sections in the computer section to calm myself down.  I felt like such a failure.  I would never be a kernel hacker.  I felt so sad.  I walked to the hot dog stand and bought a Polish sausage just to cheer myself up.  Plus it was lunch time, 4pm.

I want to understand how the kernel functions.  I don’t need my changes to be approved by Linus himself.  I don’t need to be that much of a guru.  Plus that requires being politically friendly, not just good at hacking.  I have no such skillz.  But I would like to understand how the kernel performs it’s tasks.  Why it boots up the way it does.  Why the boot up process can’t be more user-friendly?  Why is it so god damn ugly with all that yucky text?  Bogomips yourself Linus!  I still remember how it used to take 8 hours to compile a new kernel on my first Linux box, a 386sx-16mhz computer.  I wonder how long it would take on my current Pentium 4 2ghz.  I also don’t have a backup plan in case the new kernels fail.  I have Ubuntu installed, someone else installed it.  I don’t know how to install Linux anymore.  I have a Macbook but I can’t really burn a Linux bootable CD with it.  I don’t have the knowledge on how to do that.  I have flash drives, but I don’t know how to build a Linux bootable flash drive from a Macintosh that will run on a Pentium.  Is that even possible?  So I’m afraid of compiling my own kernel.  I just stick with what Canonical provides.  It seems to do a good job.  Perhaps recompiling the kernel isn’t a daily task anymore of Linux administration?  I always thought it was stupid to have to recompile my own kernel just to get on the Interent.  How stupid.  But I didn’t question it at the time, I just learned and learned until I got it working.

These days I question everything.  I have become a true Mac user.  I want one-click service.  I don’t want to compile things.  I’ve become lazy.  And as a result I am becoming technology phobic.  I’d like to change that.  I’d like to discover some means of figuring out the Linux kernel’s secrets.  I’d like some HOWTO or eBook to explain to me how the Kernel works.  Without me spending any money that is.  I have yet to do a Google search.  I fear doing a Google search.  I don’t want to go through thousands of websites just to get the information I know is contained in that one book at WBBS.  It’s all already there.  If only I dared to spend $60.  It took me 4 months to save $200.  I’m scared of dipping into my savings just to fullfil this dream.

I’m stuck.