Ubuntu не делает ничего особенного. Ваша первая трудность заключается в том, что у вас нет установленного источника ядра, только заголовки ядра. Авторы описывают систему с копией источника ядра в /usr/src/linux-2.x. Если вы только компилируете внешние модули, то заголовков, которые вы видите в вашей системе, достаточно. Ubuntu отправляет заголовки ядра для этой цели в пакеты linux-headers-* (которые вы обычно устанавливаете через зависимость от метапакета linux-headers-generic). Если вам нужен весь источник, получите сжатый архив из бинарного пакета linux-source-2.6.
Другое дело, что структура каталогов немного изменилась с течением времени; связанные с архитектурой заголовки переместились с include/asm-$ARCH на arch/$ARCH/include/asm. Кроме того, архитектуры i386 и x86_64 были объединены в унифицированный x86 в 2.6.24. ( linux-headers-generic ) Итак, теперь вам нужно искать в arch/x86/include, а не include/asm-i386.
Вот несколько полезных ресурсов для хакеров ядра Linux:
Драйверы устройств Linux (LDD3) LWN (новости о Linux, в том числе многие технические статьи о ядре одним из авторов LDD) LXR для поиска и поиска источника ядра LKML (список рассылки ядра Linux), Stack Переполнение, чтобы задать вопросы о ядре и разработке ядраА также прочитать эту тему в Unix & amp; Linux, в котором объясняется, как найти реализацию существующего syscall.