Linux глазами хакера
Шрифт:
Установка из RPM-пакета дает нам доступ к новым функциям и исправляет старые ошибки. Возможности ядра остаются теми же, что заложил разработчик. Максимальных преимуществ от обновления можно добиться только при компиляции ядра.
3.8.3. Компиляция ядра
При установке из RPM-пакета мы получаем модульное ядро, в котором драйверы устройств могут быть как скомпилированы в одно целое с ядром, так и загружаться отдельно. Такое ядро медленнее в работе, но позволяет обновлять драйверы простой заменой модулей.
При компиляции можно выбрать и монолитное
Я рекомендую вам разобраться с компиляцией, потому что все свежие ядра выходят в исходных кодах, а издание RPM-пакетов иногда запаздывает на неделю и более. Все это время ваша система будет уязвимой.
Как правило, ядро поставляется в виде tar-архива. Сначала его надо разархивировать:
Имя архива в вашем случае может отличаться. Я беру самое новое на момент написания книги ядро, которое специально скачивал с сайта www.redhat.com.
Архив распаковывается в директорию linux-2.6.10-rc2 (имя архива без расширения tar.gz). Необходимо перейти в этот каталог, чтобы выполнять дальнейшие действия по компиляции из этой директории.
Для начала нужно сконфигурировать ядро, т.е. указать, что мы хотим получить в результате. Для этого можно использовать одну из четырех утилит:
1.
2.
3.
Рис. 3.6. Текстовая утилита конфигурирования ядра menuconfig
4.
Рис. 3.7. Графическая утилита конфигурирования ядра qconf
Во время конфигурации с помощью любой из вышеперечисленных утилит вы должны указать, нужна ли поддержка загружаемых модулей.
Если вы хотите иметь два разных ядра одной и той же версии, например, с поддержкой модулей и без нее, то необходимо открыть файл Makefile и в параметре
□
□
Лучше всего указывать в этом параметре, чем именно будет отличаться ядро. Например, помимо
Теперь выполняем команды подготовки к компиляции:
Следующая команда отнимет достаточно много времени, потому что она будет компилировать непосредственно ядро. Можно отправляться готовить кофе и пить его медленно и печально. Если у вас слабый процессор и памяти менее 256 Мбайт, то процедура будет долгой.
Итак, для компиляции ядра выполним команду:
Во время компиляции вы увидите список собираемых в ядро модулей. Их очень много, поэтому процесс продолжительный.
Если вы выбрали компиляцию ядра с использованием загружаемых модулей, то следующие две команды должны выполнить эту операцию:
Если вы запретили использование модулей, то эти команды можно пропустить, потому что от них толку мало, а выполняются они долго.
Все модули располагаются в директории /lib/modules/. С помощью первой команды мы скомпилировали модули нового ядра, а вторая скопирует их в каталог /lib/modules/. Здесь вы найдете директории модулей для каждой из версий ядер, установленных в системе.
Теперь инсталлируем скомпилированное ядро. Для этого выполняем следующую команду:
Эта команда скопирует все необходимые файлы для загрузки на свои места. Загляните в директорию /boot. Здесь можно найти несколько файлов, в том числе и загрузчик для новой версии ядра. Их легко можно определить по номеру. Например, я компилировал ядро 2.6.10, и у меня появились файлы vmlinuz-2.6.10 и initrd-2.6.10.img.
3.8.4. Настройка загрузчика
Теперь посмотрим, как можно настроить загрузку нового ядра, оставив при этом возможность пользоваться старыми версиями. Для этого нужно отредактировать файл /etc/lilo.conf, добавив в конец файла следующие строки:
В первой строке находится путь к ядру. Вы должны указать правильный путь, а точнее, имя файла, которое будет отличаться номером версии. Параметром