Ubuntu doesn't do anything special. Your first difficulty is that you don't have the kernel source installed, only kernel headers. The authors are describing a system with a copy of the kernel source in
/usr/src/linux-2.x. If you're only compiling external modules, the headers, which are what you see on your system, are enough. Ubuntu ships kernel headers for that purpose in the
linux-headers-* packages (which you would normally install via the dependency from the linux-headers-generic metapackage). If you need the whole source, get a compressed archive from the linux-source-2.6 binary package.
Another thing is that the directory structure has changed a little over time; architecture-dependent headers moved from
arch/$ARCH/include/asm. Furthermore the
x86_64 architectures were merged into a unified
x86 in 2.6.24. (More details here.) So you now need to look in
arch/x86/include rather than
Here are a few useful resources for Linux kernel hackers:
- Linux Device Drivers (LDD3)
- LWN (news about Linux, including many technical articles about the kernel by one of the authors of LDD)
- LXR to browse and search the kernel source
- LKML (the Linux kernel mailing list), Stack Overflow to ask questions about the kernel and kernel development
And also read this thread on Unix & Linux, which explains how to locate the implementation of an existing syscall.