Kernel Hacking Lesson #0: Check for Materials
Your very first assignment is to say, "I can hack the kernel. Kernel
hacking is not magic," out loud. :) Good, that's the most important
part. Now, read on...
What you need:
- A Linux box
- Root on this Linux box (or a sympathetic admin)
- The ability to reboot this box several times a day
- A compilation environment installed
- Some way to get the kernel source
In more detail:
Your Linux box needs to have at least 300 MB of free disk space.
Find out how much disk space you have free with the command df
-h. If you need tips for clearing out some disk space, ask. Note
that you can compile on one Linux box and run the kernel you
compile on another Linux box. You should compile on the fastest
Linux box possible. A 500 Mhz Pentium III with 256 MB RAM
will take around 40 minutes to compile a Linux kernel, a 1200 MHz
Pentium III with 640 MB RAM will take around 10 minutes, whereas
a Duron 800 Mhz with 256 MB RAM will take around 5 minutes.
I've personally worked with x86's, Alpha's, and PowerPC's, but if
you have something else I'm willing to help you figure it out.
When asking questions, be sure to let people know if you are
compiling for something other than an x86.
You don't _need_ root, but you at least need someone with root to
set you up. What you need is the ability to boot your new kernel,
which may include the ability to run LILO, to copy kernels to
places outside your home directory, and the ability to reboot the
machine. I do 99% of my kernel work as a non-root user. I compile
in a directory owned by user val, and I made the directories I
need to write to owned by user val. You can also give the user
reboot a password, so you can reboot the machine without su-ing
to root. Talk to your sysadmin to find out what you need to do.
Ideally, your Linux box is something only you need. If other
people need it during the day but don't at night, you can probably
still use it. If you are concerned about making the box unusable,
there are many ways to test a new kernel and then reboot back into
your old kernel. Disk corruption is not as common as you think,
but if you do not want to risk the data on your hard disk, you can
use a ramdisk with your new kernel. (Ramdisks are explained later
on.) You can also create a new partition on your hard disk and use
that as your root filesystem when you are experimenting with new
Hopefully, most people installed their Linux box with gcc and other
compilation tools included. You can test to see if you have a
compilation environment installed by copying the following into a
file named hello.c:
printf ("Hello, world!\n");
And then compiling and running it with:
$ gcc hello.c -o hello
If this doesn't work, you will need to install a compilation
environment. Usually the easiest way to do this is to just
re-install your machine.
There are many different ways to get the kernel source, but my
preferred one involves having a reasonably high bandwidth net
connection. Otherwise, you can get the kernel source from your
Remember, if you have any questions, please ask them on the grrls-only
list, instead of emailing someone privately. The list members will
answer your questions politely and helpfully, and other list members
will learn from the answers to your questions. Our goal is to never
answer a question with "FAQ, read #14 on XYZ," or "Do a web search,"
or "RTFM." Communicating with other kernel developers is just as
important as finding the answer to your question.