Як правильно вивчати вихідні коди ядра linux stack overflow російською

Не так давно я зацікавився одним низькорівневим питанням роботи ОС, але відразу не зміг його дозволити. Мені порадили (що в принципі і логічно) почитати исходники ядра, щоб прояснити самому собі, як справа йде насправді. Завантажити вихідний код ядра Убунту не виявилося проблемою, але ось розібратися в ньому для мене виявилося досить проблематично, що й не дивно. Там стільки файлів, і зовсім незрозуміло, куди копати = (







Коротше, мені потрібна порада або навіть методика, як підходити до вивчення вихідних кодів ядра, та й чужого вихідного коду взагалі (хоча я сумніваюся, що тут якась методика взагалі може бути), не в прив'язці конкретно до моєї проблеми (я навмисне тут не розповідаю, що саме я хочу дізнатися), а взагалі, в принципі. Я хотів би для початку хоча б визначитися зі структурою папок, зрозуміти які файли за що відповідають, дізнатися про якісь можливо основних файлах вихідного коду.

заданий 17 Лютого '12 о 21:58

Завантажити вихідний код ядра Убунту не виявилося проблемою, але ось розібратися в ньому для мене виявилося досить проблематично, що й не дивно. Там стільки файлів, і зовсім незрозуміло, куди копати = (

Для мене, як і можливо для більшості людей,
Був найпростішим шлях в пізнанні ядра,
Копаючись у всіх фічах і налаштуваннях,
Мені доводилося збирати його з нуля. Компільо.

Тобто збирати, збирати, збирати, збирати
Ще раз збирати, потім в нього грузиться,
Чи не бутіца знову, біда, знову йти і компілять.
Дивитися в dmesg, шукать, вникати,






Все кинути і знову 30-50 хвилин сидіти і компілять.

Зимою можна так зігріти долоні,
Коли протяг і холоднеча рвуться крізь фіранки штор,
Вже пройшовши подвійні скла склопакетів, крізь стіни.
На ноутбуці ти набираєш make CONFIG.

Навіщо брати убунтушное,
Візьміть дефолтний, прямо на www.kernel.org,
Там документація, приблизно тут: www.kernel.org/doc

На самому початку. На зорі,
ядро являло собою
лише базовий функціонал,
І постійно дописувалося мудрим Торвальдс.

Все розбиралися з ядром по ходу виконання якихось маленьких завдань.
Наприклад, для запуску будь-якої прекрасної демонюкі
Необхідно було патчить ядро.
Бралися вихідні, вносився патч і збиралося кастомними ядро.

Зараз же, більшість необхідних речей,
Таких як слойчатай файлова система aufs,
І модулі прослуховування мережевих інтерфейсів,
Все це вже в ядрі за замовчуванням,
Вмикається і вимикається однієї лише рядком
У файлі конфігурації збірки ядра.

Але Ви можете повторити весь цей шлях
Знайти собі цікавим такий проект як grsecurity.net

Спомощью цього патча можна створити кулі-ні-пробивав сервант
З мільйоном стежать, логгірующіх елементів.
Забороняти все, що тільки можна забороняти.
До слова сказати, досить нетривіальною
Є завдання запуску X-сервера
З максимально-можливим "включеним" grsecurity-патчем.

У процесі складання кастомними кулі-ні-пробивається ядра
І спроби завантажитися з нього,
У Вас з'явиться деяке уявлення про ієрархію всіх прапорів.
Ви зможете зрозуміти, що 90% ядра - ні що інше як модулі
Саме взятих залізяк, карт мережевих і звукових
І всякого подібного добра.

А ті, що залишилися 10% - це і є саме Ядро,
Core of Kernel, якщо можна так сказати.
Мережева, дискова підсистеми,
Шедулера - Планувальник завдань,
Всякі фичи, хукі, хакі, баги.

Коротше, мені потрібна порада або навіть методика, як підходити до вивчення вихідних кодів ядра,

Шукайте цікавий патч,
Вносьте.
І компіляйте, сотні разів.
Після 2 тисяч процедур
На Вас зійде осяяння.
Так було з кожним.
І буде так завжди.

Faber est suae quisque fortunae