LASG - The Linux kernel
Ядро Linux
Обзор
Обновление и компиляция
ядра
Версии ядра
Патчи (заплатки) для ядра
Отладка ядра
Обзор
Linux (или GNU/Linux согласно Stallman, если речь о полном дистрибутиве)
фактически только ядро операционной системы. Оно обрабатывает работу с
дисками, прочей аппаратурой, поддерживает механизмы безопасности и сеть.
В дополнение к этому мы имеем аппаратные проблемы подобно Pentium F00F
bug, и проблемы, свойственные TCP-IP протоколу, Linux ядро имеет способы их
обхода. Версии ядра обозначены как X.Y.Z, где Z младший номер версии, Y
задает является ли ядро тестовым (нечетное значение) или рабочим (четное
число), X определяет старший номер версии (пока что есть 0, 1 и 2). Серия
2.2.x имеет сильные усовершенствования о сравнению с серией 2.0.x.
Использование ядер 2.2.x также позволяет Вам использовать новые возможности,
например, ipchains (вместо ipfwadm). Выяснить ппоследние версии ядра можно
просто командой finger @linux.kernel.org:
[seifried@mail kernel-patches]$ finger @linux.kernel.org
[linux.kernel.org]
The latest stable version of the Linux kernel is: 2.2.13
The latest beta version of the Linux kernel is: 2.3.29
The latest prepatch (alpha) version *appears* to be: 2.3.30-3
Обновление ядра включает получение нового ядра и модулей, правку
/etc/lilo.conf, запуск LILO для записи нового MBR. Ядро обычно помещается в
/boot, а модули в /lib/modules/kernel.version.number.
Получить новое ядро можно двумя способами: скачать соответствующий ядерный
пакет и установить его, или скачать и откомпилировать исходный код ядра с
ftp://ftp.kernel.org (пожалуйста,
используйте зеркальный сайт!).
cd /usr/src
Там должна быть ссылка linux на каталог с текущим ядром. Если
ее нет, одной проблемой меньше. Если есть, удалите ее. Лучше всего
переименовать каталог linux в /usr/src/linux-kernel.version.number и создать
на него ссылку /usr/src/linux.
Распакуйте исходеники, используя tar и gzip так, чтобы получить
/usr/src/linux примерно с 50 мегабайтами исходников. Следующий шаг должен
создать ядерную конфигурацию linux (/usr/src/linux.config), это может быть
достигнуто, используя make config, make menuconfig
или make xconfig, мне кажется, что лучше всего
make menuconfig (для этого, Вы будете нуждаться в библиотеках
ncurses и ncurses devel). Это, возможно, самый трудный шаг: имеются сотни
параметров, которые могут быть категоризированы в две основных области:
аппаратная поддержка и сервисная поддержка. Для аппаратной поддержки напишите
список аппаратных средств, с которыми это ядро будет работать, и включите
соответствующие параметры. Что касается сервисной поддержки Вы будете должны
вычислить, которые файловые системы (fat, ext2, minix, ...) Вы планируете
использовать, то же самое для работы с сетями (firewalling и т.д.).
Когда Вы сконфигурировали ядро, Вы должны скомпилировать его, следующие
команды создают зависимости, гарантирующие, что библиотеки будут встроены в
правильном порядке, затем чистят любую информацию от предыдущей компиляции,
компилируют ядро, затем формируют и устанавливают модули.
make dep #(makes dependencies)
make clean #(cleans out previous cruft)
make bzImage #(make zImage pukes if the kernel is to big, and 2.2.x
#kernels tend to be pretty big)
make modules #(creates all the modules you specified)
make modules_install #(installs the modules to
#/lib/modules/kernel.version.number/)
Вы должны скопировать /usr/src/linux/arch/i386/boot/bzImage (или zImage) в
/boot/vmlinuz-kernel.version.number. Потом поправьте файл /etc/lilo.conf,
добавьте в него запись для нового ядра.
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
default=linux
image=/boot/vmlinuz-2.2.9
label=linux
root=/dev/hda1
read-only
image=/boot/vmlinuz-2.2.5
label=linuxold
root=/dev/hda1
read-only
По окончании правки /etc/lilo.conf надо запустить /sbin/lilo для
обновления MBR (Master Boot Record). При запуске LILO должен вывести нечто
похожее на:
Added linux *
Added linuxold
Вывод представляет собой список ядер, которые будут указаны в MBR, *
обозначает ядро, загружаемое по умолчанию (обычно, это первое ядро, если Вы
не указали другое директивой default).
Сейчас стабильными версиями ядра является серия 2.2.x, а тестовыми 2.3.x.
Тестовая серия 2.1.x не рекомендуется из-за множества проблем. Серия 2.0.x
устарела и не имеет ряда полезных возможностей. Увы, переход от 2.0.x к 2.2.x
труден, надо обновить несколько пакетов программ, библиотек, ppp, modutils и
другие (подробности в документации на ядро). Дополнительно храните старое
рабочее ядро, добавьте для него запись в lilo.conf как "linuxold"
или что-то подобное, тогда будет возможность отступления в случае
необходимости.
Имеется ряд заплат ядра, которые могут расширить защиту Linux-системы.
Одни предотвращают буферное переполнение, другие обеспечивают сильное crypto.
Имеется ряд заплат, непосредственно связанных с защитой.
Данная заплата (Secure Linux kernel patch) решает ряд проблем и
обеспечивает другой уровень защиты для системы. Заплата доступна для ядер
серий 2.0 и 2.2. Скачать можно с
http://www.openwall.com/linux.
Данная заплата (International kernel patch) более мегабайта в размере!
Добавляет огромное количество сильного crypto и связанных элементов. Это
включает несколько алгоритмов шифрования, которые были AES-кандидатами
(включая MARS из IBM). Вы можете скачать патч с
http://www.kerneli.org.
Данная заплата добавляет ряд интересных возможностей, прежде всего
нацеленных на обнаружение нападения. Вы можете "блокировать" файлы, правила
firewall, есть еще ряд интересных параметров. Вы можете скачать патч с
http://www.soaring-bird.com.cn/oss_proj/lids.
Проект Linux (ACL) ряд заплат и утилит, чтобы конфигурировать ACL-доступ к
файловой системе. Это решение все еще немного ненадежно, поскольку хранит
разрешения в файле и действует как уровень фильтрации между файлом и
пользователями, что не соответствует ACL (но это начало). Вы можете получить
пакет на
http://www.braysystems.com/linux/trustees.html.
Rule Set Based Access Control всесторонний набор заплат и утилит, чтобы
управлять различными аспектами системы. Доступен на
http://www.rsbac.de/rsbac.
LOMAC (Low Water-Mark Mandatory Access Control for Linux) набор заплат,
чтобы расширить защиту Linux. Вы можете получить его с
ftp://ftp.tislabs.com/pub/lomac.
auditd позволяет Вам использовать регистрирующие средства на уровне ядра
(очень мощный инструмент). Вы можете регистрировать сообщения почты, события
системы и нормальные элементы, что делает и syslog, но в дополнение к этому
Вы можете отслеживать события типа специфических пользователей, открывающих
файлы, выполнение программ, setuid-программ, и так далее. Если Вы нуждаетесь
в твердом контрольном следе, значит этот инструмент для Вас! Вы можете
получить его с
ftp://ftp.hert.org/pub/linux/auditd.
Загружаемый модуль ядра, который позволяет Вам управлять максимальным
числом процессов на пользователя и максимальным числом ветвлений, очень
полезен для shell-серверов. Скачать можно с
http://rexgrep.tripod.com/rexfbdmain.htm.
Отладчик ядра SGI доступен на
http://oss.sgi.com/projects/kdb.
В SGI написали инструмент, который позволяет Вам делать отладку ядра,
дистанционно, не связываясь с консолью. Доступен на
http://oss.sgi.com/projects/kgdb.
Back
|