Отказ от обязательств:
Данный документ по конфигурированию, сборке, обновлению ядра для 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 ака Разгильдяй на обкуренной кошке
Linux-Kernel-Mini-HOWTO (Краткая история о ядерных реакциях)
Модератор: Модераторы разделов
-
- Сообщения: 63
Linux-Kernel-Mini-HOWTO
The /dev/null где то рядом ©
Использовать компьютер только для игр все равно, что Использовать Ламборгини для перевозки картошки ©
Использовать компьютер только для игр все равно, что Использовать Ламборгини для перевозки картошки ©