Скачать исходный код ядра убунты не оказалось проблемой, но вот разобраться в нем для меня оказалось довольно проблематично, что и не удивительно. Там столько файлов, и совершенно непонятно, куда копать =(
Для меня, как и возможно для большинства людей,
Был самым простым путь в познании ядра,
Копаясь во всех фичах и настройках,
Мне приходилось собирать его с нуля. Компилить.
Т.е собирать, собирать, собирать, собирать
Ещё раз собирать, потом в него грузиться
Не бутится, опять, беда, опять идти и компилять.
Глядеть в dmesg, искать, вникать,
Всё бросить и снова 30-50 минут сидеть и компилить.
Зимою можно так согреть ладони,
Когда сквозняк и стужа рвутся сквозь занавески штор,
Уже пройдя двойные стёкла стеклопакетов, сквозь стены...
На ноутбуке ты набираешь make CONFIG.
Зачем брать убунтушное,
Возьмите дефолтное, прямо на www.kernel.org,
Там документация, примерно тут: www.kernel.org/doc
В самом начале,на заре,
ядро являло из себя
лишь базовый функционал,
И постоянно дописывалось мудрым Торвальдсом.
Все разбирались с ядром по ходу выполнения каких-то маленьких задач.
К примеру, для запуска какой-нибудь прекрасной демонюки
Необходимо было патчить ядро.
Брались исходники, вносился патч и собиралось кастомное ядро.
Сейчас же, большинство необходимых вещей,
Таких как слойчатай файловая система aufs,
И модули прослушивания сетевых интерфейсов,
Всё это уже в ядре по-умолчанию,
Включается и выключается одной лишь строчкой
В конфигурационном файле сборки ядра.
Но Вы можете повторить весь этот путь
Найти себе интересным такой проект как grsecurity.net
Спомощью этого патча можно создать пули-не-пробиваемый сервант
С миллионом следящих, логгирующих элементов.
Запрещать всё, что только можно запрещать.
К слову сказать, достаточно нетривиальной
Является задача запуска X-сервера
С максимально-возможным "включеным" grsecurity-патчем.
В процессе сборки кастомного пули-не-пробиваемого ядра
И попытки загрузиться с него,
У Вас появится некоторое представление об иерархии всех флагов.
Вы сможете понять, что 90% ядра - ни что иное как модули
Конкретно взятых железяк, карт сетевых и звуковых
И всякого подобного добра.
А те, оставшиеся 10% - это и есть само Ядро,
Core of Kernel, если можно так сказать.
Сетевая, дисковая подсистемы,
Шедулер - Планировщик задач,
Всякие фичи, хуки, хаки, баги...
Хотя, сколько я ни копался во всём этом.
До сих пор, большинство сходится во мнении,
Что лучше документации, чем сам исходный код - НЕТ.
Вероятно, создание этакой "википедии" "ядро-педии"
Поверх кода ядра и поддержание документации в up-to-date состоянии
Это задача многих миллиардов человеко-часов.
Эта задача попросту не подсильна сообществу.
По-этому вход в kernel-hacking до сих пор
Достаточно высок и требует как минимум хорошего знания C/C++.
Короче, мне нужен совет или даже методика, как подходить к изучению исходных кодов ядра,
Ищите интересный патч,
Вносите...
И компильте, сотни раз...
После 2 тысяч процедур
На Вас снизойдёт озарение.
Так было с каждым.
И будет так всегда.
Faber est suae quisque fortunae