Coding — С чего начать исследование ядра Linux?
Итак, первое и самое важное это конечно же исходный код ядра. Взять его можно на сайте kernel.org. Могу посоветовать скачать, как последний релиз (на сегодняшний день это 2.6.32.7), так и тот, на котором работает ваша система. На случай, если соберетесь писать модули ядра, то установите заголовочные файлы. В ubuntu это можно сделать командой:
Второе, нам необходим редактор с помощью которого мы будем ориентироваться в ядре. Для этого необходимо, чтобы ваш редактор поддерживал (например модулями) ctags. Для начала установим ctags:
Создать файл с тегами можно к примеру командой:
Выбор редактора это дело каждого (vim, emacas, gedit, etc), мой выбор пал на старенький Nedit (Nirvana Editor). После того, как вы выбрали редактор остается только загрузить файл с тегаи (в nedit это делается так: File -> Load tags file). Также есть и разные online навигаторы по ядру, вот довольно неплохой ресурс на мой взгляд.
Далее документация. Главную документацию нам предоставляют исходные тексты ядра. Они представлены в виде 9 раздела справочного руководства (man). Для того, чтобы их установить необходимо открыть каталог с исходным кодом. Далее:
Может понадобиться документация по системным вызовам, чтобы ей пользоваться необходимо установить пакет manpages-dev:
Также некоторую документацию можно найти в каталоге Documentation исходных текстов ядра. Из обычной печатной литературы сложно что-либо рекомендовать просто потому, что печатные издания в России несколько устаревшие (отстают года на 2 от издания в стране «производителя», а для ядра это немаленький срок) в связи с затратами времени на перевод, но в любом случае в них есть довольно много актуальной информации. Можете время от времени заглядывать в рассылку LKML и следить за происходящим.
Теперь установим Git, чтобы быть в курсе «вся и всего»:
Создайте папку в удобном для вас месте, куда будет скачано дерево ядра Linux (Linux kernel tree. Внимание! На сегодняшний день это чуть более 700 Мб):
Для большего удобства поставим GUI (для gnome):
Есть неплохое руководство на русском для ознакомления с возможностями git.
Также в процессе изучения могут понадобиться отладчик и трассировщики. В большинстве систем они установлены «из коробки». В качестве отладчика используется gdb (руководство на русском), а в качестве трассировщиков ltrace и strace (конечно вы можете использовать другой отладчик и другие трассировщики).
Вот и все. Я предполагаю, что для большинства задач, связанных с кодокопанием, информации написанной здесь должно быть достаточно.
P.S. Забыл сказать о самом главном - если уж начали изучать, то добейте до конца =) и как всегда pdf'ка (и тут). Теперь все. Вечер поздний - всем доброй ночи.
sudo apt-get install linux-headers-`uname-r`
Второе, нам необходим редактор с помощью которого мы будем ориентироваться в ядре. Для этого необходимо, чтобы ваш редактор поддерживал (например модулями) ctags. Для начала установим ctags:
sudo apt-get install exuberant-ctags
Создать файл с тегами можно к примеру командой:
ctags -R -o out_tags_file
Выбор редактора это дело каждого (vim, emacas, gedit, etc), мой выбор пал на старенький Nedit (Nirvana Editor). После того, как вы выбрали редактор остается только загрузить файл с тегаи (в nedit это делается так: File -> Load tags file). Также есть и разные online навигаторы по ядру, вот довольно неплохой ресурс на мой взгляд.
Далее документация. Главную документацию нам предоставляют исходные тексты ядра. Они представлены в виде 9 раздела справочного руководства (man). Для того, чтобы их установить необходимо открыть каталог с исходным кодом. Далее:
1 2 |
make mandocs |
*как я понимаю там собраны только те функции, которые экспортируются ядром
Может понадобиться документация по системным вызовам, чтобы ей пользоваться необходимо установить пакет manpages-dev:
sudo apt-get install manpages-dev
*информация из manpages-dev находится во 2 и 3 разделах руководства man
Также некоторую документацию можно найти в каталоге Documentation исходных текстов ядра. Из обычной печатной литературы сложно что-либо рекомендовать просто потому, что печатные издания в России несколько устаревшие (отстают года на 2 от издания в стране «производителя», а для ядра это немаленький срок) в связи с затратами времени на перевод, но в любом случае в них есть довольно много актуальной информации. Можете время от времени заглядывать в рассылку LKML и следить за происходящим.
Теперь установим Git, чтобы быть в курсе «вся и всего»:
sudo apt-get install git-core
Создайте папку в удобном для вас месте, куда будет скачано дерево ядра Linux (Linux kernel tree. Внимание! На сегодняшний день это чуть более 700 Мб):
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git linux-2.6
Для большего удобства поставим GUI (для gnome):
sudo apt-get install giggle
*для kde можно установить qgit: sudo apt-get install qgit
Есть неплохое руководство на русском для ознакомления с возможностями git.
Также в процессе изучения могут понадобиться отладчик и трассировщики. В большинстве систем они установлены «из коробки». В качестве отладчика используется gdb (руководство на русском), а в качестве трассировщиков ltrace и strace (конечно вы можете использовать другой отладчик и другие трассировщики).
Вот и все. Я предполагаю, что для большинства задач, связанных с кодокопанием, информации написанной здесь должно быть достаточно.
P.S. Забыл сказать о самом главном - если уж начали изучать, то добейте до конца =) и как всегда pdf'ка (и тут). Теперь все. Вечер поздний - всем доброй ночи.