Linux-Kernel-Mini-HOWTO (Краткая история о ядерных реакциях)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Аватара пользователя
Soloven
Сообщения: 63

Linux-Kernel-Mini-HOWTO

Сообщение Soloven »

Отказ от обязательств:

Данный документ по конфигурированию, сборке, обновлению ядра для ix86-based систем, не в коей мере не является полноценным руководством к действию. Также не является авторизованным переводом, что, не позволительно учитывая уровень языковых знаний автора. Все ниже сказанное основано на личном опыте и базируется на The Linux Kernel HOWTO версии v6.3, 4 July 2003 от Al Dev (Alavoor Vasudevan).
1. Введение:
1.1. Версия ядра.


Номер версии ядра состоит из трех компонентов – старшего (major), младшего (middle) и версии номера исправления (patch-level или minor). Старший номер увеличивается при внесении существенных изменений в ядро. Младший позволяет судить о устойчивости (стабильности) ядра. Четные номера зарезервированы для стабильных версий, а нечетные присваиваются версиям, которые находятся в стадии разработки и могут изменяться. Ядра, находящиеся в стадии разработки могут неоднократно подвергаться модернизации. Рассмотрим три примера : первый 2.4.19-трех компонентный номер стабильного ядра 19 версия исправления (patch-level или minor); второй 2.5.70 –70-я стадия модернизации нестабильного ядра (5); третий – 2.4.18-14 – четырехкомпонентный номер ядра 4 –ый компонент – номер дополнения (EXTRAVERSION)-наиболее часто встречается в системах Red Hat, ASPLinux.

Примечание.

Посмотреть свою версию ядра можно командой # cat /proc/version
1.2. Причины.

Существует несколько причин, по которым вы можете принять решение, что вам необходима сборка ядра вместе с тем достаточно и одной из них:

· Вы занимаетесь разработкой и тестированием ядра.

· Вы установили новое оборудование, не поддерживаемое текущей версией.

· Вы решили собрать ядро, оптимизированное только под ваше оборудование.

· У Вас устаревшее/несовременное ядро.

· Разрабатываемое вами программное обеспечение требует специальной настройки ядра.

· Вы решили пересобрать ядро для ускорения работы вашей машины или для минимизации ядра.
2. Первые шаги.

Перед тем как осуществлять конфигурирование и перекомпиляцию ядра, было бы хорошей идеей сделать резервную копию действующей версии и желательно системы в целом. Резервная копия системы избавит Вас от многих проблем, которые могут возникнуть как результат допущенных ошибок в процессе конфигурирования и сборки ядра.

2.1. Если вы решили оптимизировать или переконфигурировать текущую версию ядра, то для начала проверьте наличие исходных кодов, обычно они располагаются в каталоге /usr/src/linux-X.X.X, где X.X.X номер версии ядра. Если таковых не оказалось вам необходимо установить их с дистрибутивного диска или взять с ftp://ftp.kernel.org/pub/linux/kernel/

2.2. Если у вас установлено действующее ядро, и вы просто решили произвести обновление до последней новейшей версии, т.е. другими словами произвести minor-update (к примеру, у вас установлено скомпилированное (build) 2.4.19 вырешили произвести обновление до 2.4.20). В таком случае вам необходимо сохранить конфигурационный файл вашего ядра для дальнейшего использования и с целью минимизировать затраты времени в дальнейшем, так как выполнение команды make mrproper удалит имеющийся у вас конфигурационных файл.


bash# mkdir /usr/src/kernelconfigs


bash# mv /usr/src/linux/.config /usr/src/kernelconfigs/.config.save


Еще один метод это копирование старого конфигурационного файла из дерева старого ядра в дерево нового а также специфично для некоторых версий linux (например, Red Hat).


bash# rm /usr/src/linux-2.4


bash# ls -l /usr/src/linux-2.4 /usr/src/linux-2.4.X, где X ваше ядро


bash# cd /usr/src/linux-2.4


bash# cp /usr/src/linux-2.4.19/.config .


Есть и еще один метод make oldconfig в данном случае конфигуратор самостоятельно ответит на большинство вопросов обращенных обычно к вам.


Замечание:


Если у вас недостаточно места в каталоге /usr/src/ для выполнения операций вы мжете осуществить эти операции в любом каталоге единственное что симлинк в /usr/src должен указывать на местоположение нового ядра.

3. Шаг второй - Make.

1. Распакуйте исходные коды ядра, например командой

tar xzvf linux-2.4.20.tar.gz

2. Далее комментариев не требуется.

cd /usr/src/linux;

mkdir /usr/src/kernelconfigs;

cp /usr/src/linux/.config /usr/src/kernelconfigs/.config.save; #при условии если вы хотите сохранить конфигурацию.

make clean;

make mrproper;

make clean;

cp /usr/src/kernelconfigs/.config.save .config

2. Далее в зависимости от ваших желаний:

make config # выполнить конфигурирование в консоли

make menuconfig # выполнить конфигурирование с помощью меню (не меня)

в консоли (требует наличие библиотеки ncurses)

make oldconfig # выполнить конфигурирование с учетом старой конфигурации

(вам придется ответить на вопросы связанные только с устанавливаемым ядром

все остальное самостоятельно)

make xconfig # для предпочитающих графический интерфейс настройки

(только с Х терминала)

make dep

3. Теперь Вы можете указать на версию сборки, т.е. установить EXTRAVERSION. Поправьте соответствующую строку /usr/src/linux-2.4/Makefile, обычно эта строка пустая.

4. make bzImage

5. make modules

6. make modules_install

7. make install #не рекомендуется верно работает только в Red Hat и то только благодаря скрипту kernel_install от Red Hat. Лучше сделать так:

cp /usr/src/linux/arch/i386/boot/bzImage /boot/wmlinux-2.4.X



8. Сконфигурируйте загрузчик lilo или grub (это не тема для обсуждения здесь)

9. Подготовьтесь к самому страшному – запаситесь загрузочной дискетой

bash #mkbootdisk

10. Перезагружайте машину и с богом!

11. Если все нормально у вас есть еще дела make rpm (только если у вас rpm-based linux и вам нет желания при каждой установке повторять сборку заново)

12. make clear (если нет желания захламлять жесткий диск)
4. Установка заплат.

Одновременно с появлением новой версии ядра могут появиться веские причины для его обновления. Сберегите свое время, нервы и здоровье, своевременно устанавливая заплаты для исправления ошибок.

В первую очередь загрузите заплату ядра. Если версия текущего ядра имеет номер 2.4.19, то в этом случае используется файл заплаты patch-2.4.20. bz2. При каждом исправлении можно подняться только на один уровень. Чтобы перейти на два уровня, нужно установить две заплаты.

Поместите файл заплаты в каталог /usr/src. В том случае, если существует символическая связь с ядром linux-2 .4.19, которая называется linux (или же исходные файлы ядра расположены в каталоге linux), продолжите процесс, введя следующую команду:

# bzcat patch-2.4.20.bz2 | patch -p0 --dry-run

Если предшествующая команда будет выполнена без появления сообщения со строками FAILED, параметры --dry-run можно удалить и безбоязненно установить заплату.

В том случае, если каталог linux отсутствует (или отсутствует символическая связь), воспользуйтесь командой cd и перейдите в дерево исходных кодов ядра linux. После этого введите следующую команду:

bzcat ../patch-2-4.20.bz2 | patch –p1 --dry-run

В случае необходимости предыдущая команда может быть дополнена следующим выражением:

# error.log | grep FAIL > error.log

Отсутствие сообщения FAIL, выводимого командой grep, говорит о том, что заплата будет установлена корректно.



Одно из преимуществ подобного метода установки заплат состоит в том, что он позволяет вам пропустить этапы make mrproper и make [x| menu]config и перейти непосредственно к сборке ядра (предполагая, что заплата не обеспечивает новых функциональных возможностей, которые вы хотите ввести. В противном случае вам придется снова воспользоваться командой make config, выполнить изменение и сохранить конфигурацию).

5. Сборка единичного модуля.



Часто возникает необходимость добавить один два модуля к готовому ядру. При этом естественно нет никакого желания производить полную перекомпиляцию ядра в целом или всех модулей. Для примера рассмотрим вопрос добавления поддержки файловой системы ntfs. Например, RedHat 7.2 и 8.0 не умеют читать разделы ntfs.

Что бы произвести добавление этого модуля вам необходимо произвести изменение конфигурационного файла. Выполните по вашему желанию make [x| menu]config. В разделе filesystems включите поддержку ntfs – модулем и сохраните конфигурацию.

Далее:


cd /usr/src/linux


cp Makefile Makefile.original


cp Makefile.original Makefile.my


vi Makefile.my


# Закомментируйте имеющуюся переменную 'SUBDIRS' а добавьте свою


# директорию, для примера, fs/ntfs:


#SUBDIRS =kernel drivers mm fs net ipc lib abi crypto


SUBDIRS =fs/ntfs


# Сохраните Makefile.my и выполните команду -


make -f Makefile.my modules


# таким образом мы получим модуль ntfs.o


# теперь скопируйте полученный модуль в директорию


#действующего ядра /lib/modules


# ВНИМАНИЕ: Не выполняйте - "make -f Makefile.my modules_install"


# Это может привести к стиранию иных модулей системы


cp ntfs.o /lib/modules/2.4.20/kernel/fs/autofs





Источники:

3.1.1. The Linux Kernel HOWTO версии v6.3, 4 July 2003 от Al Dev (Alavoor Vasudevan).

3.1.2. "Использование Linux" Дэвид Бендел, Роберт Нейпир.

Благодарности:


Пивоваренным компания – за задание тонуса в работе.


San Андреев – за наставления на путь истинный.


freeman73 freeman73@mail.ru - за помощь в написании пункта 4 - рекомендации


Linux – за то что он есть.


Red Hat Inc – за то что я неустанно что-то привожу в надлежавший вид.





понедельник, 4 августа 2003 г.


Andrew E. Kuznetsoff ака Разгильдяй на обкуренной кошке
The /dev/null где то рядом ©
Использовать компьютер только для игр все равно, что Использовать Ламборгини для перевозки картошки ©
Спасибо сказали: