In this first actual lesson, we're going to discuss how to set up your development host with all of the software you'll need for the entire course, but let's discuss a couple general course principles first.
As with many courses, all Crash Course offerings are designed to be "hands-on", replete with labs and exercises and homework and so on. More importantly, though, the plan is that everything you read in these lessons should just work. As much as possible, we want to avoid qualifiers such as, "If that doesn't work, try ...".
It's a truism that the most common frustration for beginners to any new topic is to follow instructions to the letter, and to have the result fail. To that end, it really is the goal of this course that everything here should just work, which means we have to necessarily restrict our course platforms to what I can personally test everything on.
I've chosen to base this course on my fully-updated, 64-bit Ubuntu 11.10 system, which means that if you use the same distro, the exercises should work exactly the same way. If you choose to use another, relatively recent distro, you'll almost certainly still have success; you'll just have to map the commands or packages yourself to what's appropriate, but we'll come back to that shortly. So what are you going to need?
In terms of downloading kernel source, we'll be cloning from a Git repository so, on your Ubuntu system, you'll want to:
$ sudo apt-get install git
Obviously, if you're already familiar with Git on Ubuntu, you can do whatever it takes to get the
git command installed. (NOTE: Earlier versions of Ubuntu had a package called
git-core, but that name now represents a transitional dummy package, and you should just install
Next, when we get to configuring and building a new kernel, if you want to use a semi-graphical interface for that, you'll need to install the Curses development library:
$ sudo apt-get install libncurses5-dev
Finally, if by some chance you don't have a proper development environment, you can just:
$ sudo apt-get install gcc
For now, that should be sufficient and, if we need additional packages, we'll update this list as necessary. But here's the important principle to keep in mind.
Some students are going to want to do their work on a different distribution, or even in a virtual machine, and while there's simply not enough time to cover every possibility, that's why each lesson comes with a comments section.
If you want to try something different, by all means, feel free to experiment, and if it doesn't work, ask for help. On the other hand, if it does work, you can share that with other readers so everyone gets the benefit. If you discover an error, or omission, or clever trick, leave a note and I can always add it to the lesson. In the end, the point is to try the instructions, check the results, ask questions and share what you discover with others.
At this point, I'm sure there might be more I can mention but, once you think you've installed all the required packages for kernel development, head into the next lesson, where we'll discuss the kernel-related files and directories that should already be on your system.
ADDENDUM 1: It appears that Ubuntu still has the meta-package
build-essential, which will install the combination of C and C++ compiler, development libraries and
make, so a single install step might handle most of your requirements.
As your first exercise, if you can think of any other packages that should be installed on an Ubuntu system (or are worth installing for later), leave a note in the comments section.
If you're planning on working with another distro or using a virtual machine, take careful notes and share those notes with others who want to try the same thing.