Назад Оглавление Вперед

Глава 5 Конфигурирование и создание оптимизированных, безопасных ядер (Часть 1)

В это главе
Ядро Linux
Создание аварийных загрузочных дискет
Безопасность ядра
Компиляция ядра
Инсталляция нового ядра
Удаление программ, файлов и строк связанных с модулями
Создание новой аварийной дискеты
Создание аварийного загрузочного флоппи-диска
Обновление "/dev" входов

Общий обзор.

Ну хорошо, вы видите, что ваш сервер приобрел общую форму. Но подождите, что является основной частью вашего сервера? Да, это ядро. Оно является основой операционной системы. Без него Linux не Linux. Так что мы должны очень внимательно отнестись к ядру и настроить его так, чтобы оно соответствовало нашим потребностям. Первое о чем вы думаете, создавая новое ядро, это его более отличная настроенность под вашу систему. Это сделать очень просто, но в любом случае прочитайте вначале файл README в каталоге "/usr/src/linux". При конфигурировании ядра вы должны компилировать коды, которые вам нужны. Это даст следующие преимущества: ядро будет быстрее (меньше размер кода, входящего в него), у вас освободиться место в RAM (меньше кода, меньше размер ядра, а части ядра никогда не помещаются в виртуальную память), ядро будет более стабильным (не надо искать не существующих устройств), неиспользуемые части могут использоваться нападающим для получения доступа к вашей или другим системам. Модули работают медленнее, чем тот же код в компилированный в ядро. При конфигурировании и компиляции мы будем создавать монолитное ядро. Такое ядро получатся при ответе на вопросы Yes или No (никогда не создавайте модули) и пропуске следующих шагов: make modules и make modules_install. Также мы будем патчить наше новое ядро кодом защиты от переполнения буфера. Подобный патч для ядра существует и работает он подобно Solar Designer's, отвергая выполнение кода находящегося в стеке, делая осуществление атак типа "переполнение буфера" более сложным, и полностью защищая систему от всех текущих эксплойтов взятых из "script kiddies" всемирной сети.

Помните, что на все вопросы надо отвечать Yes или No, если вы хотите создать монолитное ядро. Ели вы собираетесь использовать маскарадинг или дозвон через ppp соединение, то создать монолитное ядро невозможно, эти функции требуют использования ряда модулей. Поэтому вам придется создавать модульное ядро.

Созданное ядро будет сильно привязано к определенному аппаратному обеспечению, при конфигурировании я использовал следующее оборудование:

Все шаги описанные ниже подразумевают

UNIX-совместимые команды
Исходные коды находятся в /usr/src
Тестирование проводилось под Rad Hat 6.1 и 6.2
Все шаги инсталляции выполнялись от пользователя root
Последняя версия ядра 2.2.14
Последняя версия Secure Linux Kernel Patches 2_2_14-ow2

Пакеты.

Домашняя страница ядер Linux: http://www.kernelnotes.org/
Вы должны скачать: linux-2_2_14_tar.gz
Домашняя страница Secure Linux Kernel Patches: http://www.openwall.com/linux/
Вы должны скачать: linux-2_2_14-ow2_tar.gz
FTP сервер, где лежит Secure Linux Kernel Patches: 195.42.162.180

Создание аварийной загрузочной дискеты.

Первый прединсталляционный шаг - создание "аварийной загрузочной дискеты" (если ее у вас еще нет). Самый простой путь - это воспользоваться командой mkbootdisk.

Первое, надо выяснить какое ядро вы сейчас используете. Для этого просмотрите файл "/etc/lilo.conf" и посмотрите какой образ загружается. У меня этот файл выглядит так:

[root@deep]# cat /etc/lilo.conf
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz-2.2.12-20
  label=linux
  root=/dev/sda6
  initrd=/boot/initrd-2.2.12-20.img
  read-only

Найдите в нем образ ядра, который вы используете. Обычно, он имеет метку linux. В нашем примере это "/boot/vmlinuz-2.2.12-20". Теперь просто вставьте дискетку 1,44'' и подключитесь к системе как пользователь root.

[root@deep]# mkbootdisk --device /dev/fd0 2.2.12-20
Insert a disk in /dev/fd0. Any information on the disk will be lost.
Press <Enter> to continue or ^C to abort:

После выполнения этих рекомендаций, вы будете иметь загрузочную дискету с известным работающим ядром, на случай, если обновление пройдет неудачно. Я рекомендую перезагрузить систему с этой дискеты, чтобы убедиться, что все в порядке.

Деинсталляция и оптимизация.

Шаг 1.

Скопируйте архив ядра в /usr/src и перейдите туда:

[root@deep]# cp linux-version_tar.gz /usr/src/
[root@deep]# cd /usr/src/
Если вы уже инсталлировали ядро из tar архива.

Эти шаги нужно выполнять, если у вас уже были установлены ранее исходные кодя ядра из tar.gz. Если это первое обновление ядра, то надо деинсталлировать два rpm пакета: kernel-headers-version.i386.rpm и kernel-version.i386.rpm.

Удаление символической ссылки.

[root@deep]# rm -rf linux

Удаление текущий каталог с заголовочными файлами ядра

[root@deep]# rm -rf linux-2.2.xx

Удаление каталога с модулями ядра:

[root@deep src]# rm -rf /lib/modules/2.2.xx

Замечание. Удаление старых модулей ядра необходимо, если вы до этого устанавливали модульное ядро. Если в "/lib" вы не находите каталога с модулями, значит ядро у вас было монолитных.

Если у вас были установлены стандартные RPM пакеты с ядром.

Если у вас были установлены стандартные RPM пакеты с ядром вместо .tar.gz архива, потому что вы только, что завершили установку нового сервера или использовали RPM пакеты для обновления вашей системы, тогда используйте следующие команды для деинсталляции ядра.

Для проверки, что они у вас установлены дайте команду.

[root@deep]# rpm -qa | grep kernel
kernel-headers-2.2.12-20.i386.rpm
kernel-2.2.12-20.i386.rpm

Для деинсталляции RPM пакетов:

[root@deep src]# rpm -e --nodeps kernel-headers kernel
cannot remove /usr/src/linux-2.2.xx - directory not empty
cannot remove /lib/modules/2.2.xx - directory not empty
[root@deep src]# rm -rf /usr/src/linux-2.2.xx/
[root@deep src]# rm -rf /lib/modules/2.2.xx/

Мы вручную удалили каталоги "/usr/src/linux-2.2.12" и "/lib/modules/2.2.12", которые останутся после деинсталляции rpm пакетов.

Шаг 2.
Разворачивание архива с ядром Linux

Сейчас мы будем разворачивать исходные коды нового ядра из tar.gz затем удалим Linux tar-архив.

[root@deep]# tar xzpf linux-version_tar.gz
[root@deep]# rm -f linux-version_tar.gz

Шаг 3.
Увеличение числа задач (оптимизация).

Для увеличения числа разрешенных задач (максимальное число процессов для пользователя) вам нужно редактировать файл "/usr/src/linux/include/linux/tasks.h" и изменить следующий параметр:

Редактируйте tasks.h file (vi +14 /usr/src/linux/include/linux/tasks.h) и измените:

NR_TASKS из 512 в 3072
MIN_TASKS_LEFT_FOR_ROOT из 4 в 24

Замечание. 1. Значение NR_TASKS определяет максимальное число идентификаторов задач (процессов), которое ядро будет назначать каждому пользователю. Увеличение этого числа приведет к увеличению количества соединений от клиента к серверу (например, веб-сервер сможет обслуживать большее количество запросов).
2. Linux защищен от того, чтобы распределить все свободные области памяти процессов обычным пользователям. С помощью опции MIN_TASKS_LEFT_FOR_ROOT резервируются подобные области для root. (24 хорошее значение).

Шаг 4.
Оптимизация ядра.

Для оптимизации ядра Linux под вашу конкретную архитектуру CPU и включения оптимизационных флагов вам надо редактировать файл "/usr/src/linux/Makefile" и изменить следующие параметры:

Редактируйте Makefile (vi +18 /usr/src/linux/Makefile) и измените следующую строку:

HOSTCC =gcc

Должна быть:

HOSTCC =egcs

Редактируйте Makefile (vi +25 /usr/src/linux/Makefile) и измените следующую строку:

CC =$(CROSS_COMPILE)gcc -D__KERNEL__ -I$(HPATH)

Должна быть:

CC =$(CROSS_COMPILE)egcs -D__KERNEL__ -I$(HPATH)

Редактируйте Makefile (vi +90 /usr/src/linux/Makefile) и измените следующую строку:

CFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer

Должна быть:

CFLAGS = -Wall -Wstrict-prototypes -O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions

Редактируйте файл Makefile (vi +19 /usr/src/linux/Makefile) и измените следующую строку:

HOSTCFLAGS =-Wall -Wstrict-prototypes -O2 -fomit-frame-pointer

Должна быть:

HOSTCFLAGS =-Wall -Wstrict-prototypes -O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions

Они включают агрессивные оптимизационные трюки, которые могут и не работать со всеми ядрами. Пожалуйста, если оптимизационные флаги приведенные выше не работают у вас, не пытайтесь во чтобы то ни стало заставить их работать. Я не хочу сделать вашу систему нестабильной, подобно Microsoft Windows.

Безопасность ядра.

Secure Linux kernel patches от Openwall Project прекрасный путь предупредить атаки Stack Buffer Overflows и подобные ей. Этот патч включает набор дополнительных возможностей связанных с обеспечением безопасности ядра Linux, которые настраиваются через новую конфигурационную секцию '"Security options".

Новые возможности патча linux-2_2_14-ow2_tar.gz:

Замечание. Когда вы наложите патч linux-2_2_14-ow2 в конце конфигурации ядра будет добавлена секция "Security options". Для получения большей информации о новых возможностях читайте в файле README, поставляемого вместе с исходными кодами патча.

Применение патча.

[root@deep]# cp linux-2_2_14-ow2_tar.gz /usr/src/
[root@deep]# cd /usr/src/
[root@deep]# tar xzpf linux.2_2_14-ow2_tar.gz
[root@deep]# cd linux-2.2.14-ow2/
[root@deep]# mv linux-2.2.14-ow2.diff /usr/src/
[root@deep]# cd ..
[root@deep]# patch -p0 < linux-2.2.14-ow2.diff
[root@deep]# rm -rf linux-2.2.14-ow2
[root@deep]# rm -f linux-2.2.14-ow2.diff
[root@deep]# rm -f linux-2_2_14-ow2_tar.gz

Первое, мы копируем программный архив в каталог /usr/src, затем мы перемещаемся в этот каталог и раскрываем там архив linux-2_2_14ow2_tar.gz, переходим в раскрытый патч и перемещаем оттуда файл linux-2.2.14-ow2.diff в /usr/src, возвращаемся в /usr/src и патчим ядро файлом linux-2.2.14-ow2.diff. После этого мы удаляем все файлы, связанные с этим патчем. Замечание. Все сообщения обеспечения безопасности связанные с патчем linux- 2.2.14-ow2 должны фиксироваться в файле /var/log/massage. Стадия наложения патча на ваше ядро завершена. Теперь пора вернуться к созданию ядра и перезагрузке.

ЗАМЕЧАНИЕ ОТ ПЕРЕВОДЧИКА. При определение опции "Destroy shared memory segments not in use" в секции "Security options" у меня начала "ругаться" программа, предназначенная для работы с UPS, apcupsd. Пришлось эту опцию отключить.

Компиляция.

Очень важно, чтобы ваши "/usr/include/asm", "/usr/include/linux" и "/usr/include/scsi" представляли из себя символические ссылки к исходным кодам ядра.

Шаг 1.

Каталоги "asm", "linux" и "scsi" являются символическими ссылками к реальным include директориям необходимым для конкретной архитектуры, например, "/usr/src/linux/include/asm-i386" для "asm".

[root@deep]# cd /usr/include/
[root@deep]# rm -rf asm linux scsi
[root@deep]# ln -s /usr/src/linux/include/asm-i386 asm
[root@deep]# ln -s /usr/src/linux/include/linux linux
[root@deep]# ln -s /usr/src/linux/include/scsi scsi

Это очень важная часть конфигурирования, мы удаляем каталоги "asm", "linux", и "scsi" под "/usr/include", затем создаем ссылки на каталоги с такими же именами в дереве исходных кодов нового ядра. Каталог "include" содержит важнейшие заголовочные файлы необходимые для вашего ядра и для программ, которые вы будете компилировать.

Шаг 2.

Сделайте так, чтобы у вас не было старых .o файлов и неправильных зависимостей:

[root@deep]# cd /usr/src/linux/
[root@deep]# make mrproper

Замечание. Эти первые два шага просто очищают любые лишние элементы, которые могли быть случайно оставлены группой разработки ядра.

Сейчас мы имеет корректно установленные исходные коды ядра. Существует три пути для конфигурирования ядра.

  1. Команда make config. Она предоставляет вам текстовый интерфейс для ответов на вопросы относительно всех параметров настройки ядра. Вы будете запрошены обо всех нужных вам опциях.
  2. Команда make menuconfig. Она предоставляет все опции настройки в легком в использовании меню.
  3. Команда make xconfig. Она предоставляет полный графический интерфейс ко всем опциям ядра.
Шаг 3.

В этой главе, для конфигурирования ядра мы используем команду make config, потому что у нас на сервере не установлен Xfree86.

[root@deep /]# cd /usr/src/linux/ (если вы еще не в этом каталоге).
[root@deep linux]# make config
rm -f include/asm
( cd include ; ln -sf asm-i386 asm)
/bin/sh scripts/Configure arch/i386/config.in
#
# Using defaults found in arch/i386/defconfig
#

Конфигурация ядра.

Code maturity level options
Prompt for development and/or incomplete code/drivers
(CONFIG_EXPERIMENTAL) [N/y/?]
Processor type and features
Processor family (386, 486/Cx486, 586/K5/5x86/6x86, Pentium/K6/TSC,
PPro/6x86MX) [PPro/6x86MX]
Maximum Physical Memory (1GB, 2GB) [1GB]
Math emulation (CONFIG_MATH_EMULATION) [N/y/?]
MTRR (Memory Type Range Register) support (CONFIG_MTRR) [N/y/?]
Symmetric multi-processing support (CONFIG_SMP) [Y/n/?] N
Loadable module support
Enable loadable module support (CONFIG_MODULES) [Y/n/?] N
General setup
Networking support (CONFIG_NET) [Y/n/?]
PCI support (CONFIG_PCI) [Y/n/?]
PCI access mode (BIOS, Direct, Any) [Any]
PCI quirks (CONFIG_PCI_QUIRKS) [Y/n/?] N
Backward-compatible /proc/pci (CONFIG_PCI_OLD_PROC) [Y/n/?] N
MCA support (CONFIG_MCA) [N/y/?]
SGI Visual Workstation support (CONFIG_VISWS) [N/y/?]
System V IPC (CONFIG_SYSVIPC) [Y/n/?]
BSD Process Accounting (CONFIG_BSD_PROCESS_ACCT) [N/y/?]
Sysctl support (CONFIG_SYSCTL) [Y/n/?]
Kernel support for a.out binaries (CONFIG_BINFMT_AOUT) [Y/n/?]
Kernel support for ELF binaries (CONFIG_BINFMT_ELF) [Y/n/?]
Kernel support for MISC binaries (CONFIG_BINFMT_MISC) [Y/n/?]
Parallel port support (CONFIG_PARPORT) [N/y/?]
Advanced Power Management BIOS support (CONFIG_APM) [N/y/?]
Plug and Play support
Plug and Play support (CONFIG_PNP) [N/y/?]
Block devices
Normal PC floppy disk support (CONFIG_BLK_DEV_FD) [Y/n/?]
Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
(CONFIG_BLK_DEV_IDE) [Y/n/?]
Use old disk-only driver on primary interface (CONFIG_BLK_DEV_HD_IDE)
[N/y/?]
Include IDE/ATA-2 DISK support (CONFIG_BLK_DEV_IDEDISK) [Y/n/?]
Include IDE/ATAPI CDROM support (CONFIG_BLK_DEV_IDECD) [Y/n/?]
Include IDE/ATAPI TAPE support (CONFIG_BLK_DEV_IDETAPE) [N/y/?]
Include IDE/ATAPI FLOPPY support (CONFIG_BLK_DEV_IDEFLOPPY) [N/y/?]
SCSI emulation support (CONFIG_BLK_DEV_IDESCSI) [N/y/?]
CMD640 chipset bugfix/support (CONFIG_BLK_DEV_CMD640) [Y/n/?] N
RZ1000 chipset bugfix/support (CONFIG_BLK_DEV_RZ1000) [Y/n/?] N
Generic PCI IDE chipset support (CONFIG_BLK_DEV_IDEPCI) [Y/n/?]
Generic PCI bus-master DMA support (CONFIG_BLK_DEV_IDEDMA) [Y/n/?]
Boot off-board chipsets first support (CONFIG_BLK_DEV_OFFBOARD) [N/y/?]
Use DMA by default when available (CONFIG_IDEDMA_AUTO) [Y/n/?]
Other IDE chipset support (CONFIG_IDE_CHIPSETS) [N/y/?]
Loopback device support (CONFIG_BLK_DEV_LOOP) [N/y/?]
Network block device support (CONFIG_BLK_DEV_NBD) [N/y/?]
Multiple devices driver support (CONFIG_BLK_DEV_MD) [N/y/?]
RAM disk support (CONFIG_BLK_DEV_RAM) [N/y/?]
XT hard disk support (CONFIG_BLK_DEV_XD) [N/y/?]
Mylex DAC960/DAC1100 PCI RAID Controller support
(CONFIG_BLK_DEV_DAC960) [N/y/?] (NEW)
Parallel port IDE device support (CONFIG_PARIDE) [N/y/?]
Compaq SMART2 support (CONFIG_BLK_CPQ_DA) [N/y/?] (NEW)
Networking options
Packet socket (CONFIG_PACKET) [Y/n/?]
Kernel/User netlink socket (CONFIG_NETLINK) [N/y/?]
Network firewalls (CONFIG_FIREWALL) [N/y/?] Y
Socket Filtering (CONFIG_FILTER) [N/y/?]
Unix domain sockets (CONFIG_UNIX) [Y/n/?]
TCP/IP networking (CONFIG_INET) [Y/n/?]
IP: multicasting (CONFIG_IP_MULTICAST) [N/y/?]
IP: advanced router (CONFIG_IP_ADVANCED_ROUTER) [N/y/?]
IP: kernel level autoconfiguration (CONFIG_IP_PNP) [N/y/?]
IP: firewalling (CONFIG_IP_FIREWALL) [N/y/?] (NEW) Y
IP: transparent proxy support (CONFIG_IP_TRANSPARENT_PROXY) [N/y/?]
(NEW)
IP: masquerading (CONFIG_IP_MASQUERADE) [N/y/?] (NEW)
IP: optimize as router not host (CONFIG_IP_ROUTER) [N/y/?]
IP: tunneling (CONFIG_NET_IPIP) [N/y/?]
IP: GRE tunnels over IP (CONFIG_NET_IPGRE) [N/y/?]
IP: aliasing support (CONFIG_IP_ALIAS) [N/y/?]
IP: TCP syncookie support (not enabled per default) (CONFIG_SYN_COOKIES)
[N/y/?] Y
IP: Reverse ARP (CONFIG_INET_RARP) [N/y/?]
IP: Allow large windows (not recommended if <16Mb of memory)
(CONFIG_SKB_LARGE) [Y/n/?]
The IPX protocol (CONFIG_IPX) [N/y/?]
Appletalk DDP (CONFIG_ATALK) [N/y/?]
Telephony support
Linux telephony support (CONFIG_PHONE) [N/y/?] (NEW)
SCSI support
SCSI support (CONFIG_SCSI) [Y/n/?]
SCSI disk support (CONFIG_BLK_DEV_SD) [Y/n/?]
SCSI tape support (CONFIG_CHR_DEV_ST) [N/y/?]
SCSI CD-ROM support (CONFIG_BLK_DEV_SR) [N/y/?]
SCSI generic support (CONFIG_CHR_DEV_SG) [N/y/?]
Probe all LUNs on each SCSI device (CONFIG_SCSI_MULTI_LUN) [Y/n/?] N
Verbose SCSI error reporting (kernel size +=12K) (CONFIG_SCSI_CONSTANTS)
[Y/n/?] N
SCSI logging facility (CONFIG_SCSI_LOGGING) [N/y/?]
SCSI low-level drivers
7000FASST SCSI support (CONFIG_SCSI_7000FASST) [N/y/?]
ACARD SCSI support (CONFIG_SCSI_ACARD) [N/y/?]
Adaptec AHA152X/2825 support (CONFIG_SCSI_AHA152X) [N/y/?]
Adaptec AHA1542 support (CONFIG_SCSI_AHA1542) [N/y/?]
Adaptec AHA1740 support (CONFIG_SCSI_AHA1740) [N/y/?]
Adaptec AIC7xxx support (CONFIG_SCSI_AIC7XXX) [N/y/?] Y
Enable Tagged Command Queueing (TCQ) by default [N/y/?] (NEW) Y
Maximum number of TCQ commands per device
(CONFIG_AIC7XXX_CMDS_PER_DEVICE) [8] (NEW)
Collect statistics to report in /proc (CONFIG_AIC7XXX_PROC_STATS) [N/y/?]
(NEW)
Delay in seconds after SCSI bus reset (CONFIG_AIC7XXX_RESET_DELAY) [5]
(NEW)
IBM ServeRAID support (CONFIG_SCSI_IPS) [N/y/?] (NEW)
AdvanSys SCSI support (CONFIG_SCSI_ADVANSYS) [N/y/?]
Always IN2000 SCSI support (CONFIG_SCSI_IN2000) [N/y/?]
AM53/79C974 PCI SCSI support (CONFIG_SCSI_AM53C974) [N/y/?]
AMI MegaRAID support (CONFIG_SCSI_MEGARAID) [N/y/?]
BusLogic SCSI support (CONFIG_SCSI_BUSLOGIC) [N/y/?]
DTC3180/3280 SCSI support (CONFIG_SCSI_DTC3280) [N/y/?]
EATA ISA/EISA/PCI (DPT and generic EATA/DMA) support
(CONFIG_SCSI_EATA) [N/y/?]
EATA-DMA [Obsolete] (DPT, NEC, AT&T, SNI, AST, Olivetti, Alphatronix)
support
(CONFIG_SCSI_EATA_DMA) [N/y/?]
EATA-PIO (old DPT PM2001, PM2012A) support (CONFIG_SCSI_EATA_PIO)
[N/y/?]
Future Domain 16xx SCSI/AHA-2920A support
(CONFIG_SCSI_FUTURE_DOMAIN) [N/y/?]
GDT SCSI Disk Array Controller support (CONFIG_SCSI_GDTH) [N/y/?]
Generic NCR5380/53c400 SCSI support (CONFIG_SCSI_GENERIC_NCR5380)
[N/y/?]
Initio 9100U(W) support (CONFIG_SCSI_INITIO) [N/y/?]
Initio INI-A100U2W support (CONFIG_SCSI_INIA100) [N/y/?]
NCR53c406a SCSI support (CONFIG_SCSI_NCR53C406A) [N/y/?]
symbios 53c416 SCSI support (CONFIG_SCSI_SYM53C416) [N/y/?]
Simple 53c710 SCSI support (Compaq, NCR machines) (CONFIG_SCSI_SIM710)
[N/y/?] (NEW)
NCR53c7,8xx SCSI support (CONFIG_SCSI_NCR53C7xx) [N/y/?]
NCR53C8XX SCSI support (CONFIG_SCSI_NCR53C8XX) [N/y/?]
SYM53C8XX SCSI support (CONFIG_SCSI_SYM53C8XX) [Y/n/?] N
PAS16 SCSI support (CONFIG_SCSI_PAS16) [N/y/?]
PCI2000 support (CONFIG_SCSI_PCI2000) [N/y/?]
PCI2220i support (CONFIG_SCSI_PCI2220I) [N/y/?]
PSI240i support (CONFIG_SCSI_PSI240I) [N/y/?]
Qlogic FAS SCSI support (CONFIG_SCSI_QLOGIC_FAS) [N/y/?]
Qlogic ISP SCSI support (CONFIG_SCSI_QLOGIC_ISP) [N/y/?]
Qlogic ISP FC SCSI support (CONFIG_SCSI_QLOGIC_FC) [N/y/?]
Seagate ST-02 and Future Domain TMC-8xx SCSI support
(CONFIG_SCSI_SEAGATE) [N/y/?]
Tekram DC390(T) and Am53/79C974 SCSI support (CONFIG_SCSI_DC390T)
[N/y/?]
Trantor T128/T128F/T228 SCSI support (CONFIG_SCSI_T128) [N/y/?]
UltraStor 14F/34F support (CONFIG_SCSI_U14_34F) [N/y/?]
UltraStor SCSI support (CONFIG_SCSI_ULTRASTOR) [N/y/?]
Network device support
Network device support (CONFIG_NETDEVICES) [Y/n/?]
ARCnet devices
ARCnet support (CONFIG_ARCNET) [N/y/?]
Dummy net driver support (CONFIG_DUMMY) [Y/n/?]
EQL (serial line load balancing) support (CONFIG_EQUALIZER) [N/y/?]
General Instruments Surfboard 1000 (CONFIG_NET_SB1000) [N/y/?] (NEW)
Ethernet (10 or 100Mbit)
Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET) [Y/n/?]
3COM cards (CONFIG_NET_VENDOR_3COM) [N/y/?]
AMD LANCE and PCnet (AT1500 and NE2100) support (CONFIG_LANCE)
[N/y/?]
Western Digital/SMC cards (CONFIG_NET_VENDOR_SMC) [N/y/?]
Racal-Interlan (Micom) NI cards (CONFIG_NET_VENDOR_RACAL) [N/y/?]
Other ISA cards (CONFIG_NET_ISA) [N/y/?]
EISA, VLB, PCI and on board controllers (CONFIG_NET_EISA) [Y/n/?]
AMD PCnet32 (VLB and PCI) support (CONFIG_PCNET32) [N/y/?]
Apricot Xen-II on board Ethernet (CONFIG_APRICOT) [N/y/?]
CS89x0 support (CONFIG_CS89x0) [N/y/?]
DM9102 PCI Fast Ethernet Adapter support (EXPERIMENTAL)
(CONFIG_DM9102) [N/y/?] (NEW)
Generic DECchip & DIGITAL EtherWORKS PCI/EISA (CONFIG_DE4X5) [N/y/?]
DECchip Tulip (dc21x4x) PCI support (CONFIG_DEC_ELCP) [N/y/?]
Old DECchip Tulip (dc21x4x) PCI support (CONFIG_DEC_ELCP_OLD) [N/y/?]
(NEW)
Digi Intl. RightSwitch SE-X support (CONFIG_DGRS) [N/y/?]
EtherExpressPro/100 support (CONFIG_EEXPRESS_PRO100) [Y/n/?]
PCI NE2000 support (CONFIG_NE2K_PCI) [N/y/?]
TI ThunderLAN support (CONFIG_TLAN) [N/y/?]
VIA Rhine support (CONFIG_VIA_RHINE) [N/y/?]
SiS 900/7016 PCI Fast Ethernet Adapter support (CONFIG_SIS900) [N/y/?] (NEW)
Pocket and portable adaptors (CONFIG_NET_POCKET) [N/y/?]
Ethernet (1000 Mbit)
SysKonnect SK-98xx support (CONFIG_SK98LIN) [N/y/?] (NEW)
FDDI driver support (CONFIG_FDDI) [N/y/?]
PPP (point-to-point) support (CONFIG_PPP) [N/y/?]
SLIP (serial line) support (CONFIG_SLIP) [N/y/?]
Wireless LAN (non-hamradio) (CONFIG_NET_RADIO) [N/y/?]
Token ring devices
Token Ring driver support (CONFIG_TR) [N/y/?]
Fibre Channel driver support (CONFIG_NET_FC) [N/y/?] (NEW)
Wan interfaces
MultiGate (COMX) synchronous serial boards support (CONFIG_COMX) [N/y/?]
(NEW)
Frame relay DLCI support (CONFIG_DLCI) [N/y/?]
WAN drivers (CONFIG_WAN_DRIVERS) [N/y/?]
SBNI12-xx support (CONFIG_SBNI) [N/y/?] (NEW)
Amateur Radio support
Amateur Radio support (CONFIG_HAMRADIO) [N/y/?]
IrDA subsystem support
IrDA subsystem support (CONFIG_IRDA) [N/y/?]
ISDN subsystem
ISDN support (CONFIG_ISDN) [N/y/?]
Old CD-ROM drivers (not SCSI, not IDE)
Support non-SCSI/IDE/ATAPI CDROM drives (CONFIG_CD_NO_IDESCSI)
[N/y/?]
Character devices
Virtual terminal (CONFIG_VT) [Y/n/?]
Support for console on virtual terminal (CONFIG_VT_CONSOLE) [Y/n/?]
Standard/generic (dumb) serial support (CONFIG_SERIAL) [Y/n/?]
Support for console on serial port (CONFIG_SERIAL_CONSOLE) [N/y/?]
Extended dumb serial driver options (CONFIG_SERIAL_EXTENDED) [N/y/?]
Non-standard serial port support (CONFIG_SERIAL_NONSTANDARD) [N/y/?]
Unix98 PTY support (CONFIG_UNIX98_PTYS) [Y/n/?]
Maximum number of Unix98 PTYs in use (0-2048)
(CONFIG_UNIX98_PTY_COUNT) [256] 128
Mouse Support (not serial mice) (CONFIG_MOUSE) [Y/n/?]
Mice
ATIXL busmouse support (CONFIG_ATIXL_BUSMOUSE) [N/y/?]
Logitech busmouse support (CONFIG_BUSMOUSE) [N/y/?]
Microsoft busmouse support (CONFIG_MS_BUSMOUSE) [N/y/?]
PS/2 mouse (aka "auxiliary device") support (CONFIG_PSMOUSE) [Y/n/?]
C&T 82C710 mouse port support (as on TI Travelmate)
(CONFIG_82C710_MOUSE) [Y/n/?] N
PC110 digitizer pad support (CONFIG_PC110_PAD) [N/y/?]
Joystick support
Joystick support (CONFIG_JOYSTICK) [N/y/?]
QIC-02 tape support (CONFIG_QIC02_TAPE) [N/y/?]
Watchdog Timer Support (CONFIG_WATCHDOG) [N/y/?]
/dev/nvram support (CONFIG_NVRAM) [N/y/?]
Enhanced Real Time Clock Support (CONFIG_RTC) [N/y/?]
Video for Linux
Video For Linux (CONFIG_VIDEO_DEV) [N/y/?]
Double Talk PC internal speech card support (CONFIG_DTLK) [N/y/?]
Ftape, the floppy tape device driver
Ftape (QIC-80/Travan) support (CONFIG_FTAPE) [N/y/?]
Filesystems
Quota support (CONFIG_QUOTA) [N/y/?] Y
Kernel automounter support (CONFIG_AUTOFS_FS) [Y/n/?] N
Amiga FFS filesystem support (CONFIG_AFFS_FS) [N/y/?]
Apple Macintosh filesystem support (experimental) (CONFIG_HFS_FS) [N/y/?]
DOS FAT fs support (CONFIG_FAT_FS) [N/y/?]
ISO 9660 CDROM filesystem support (CONFIG_ISO9660_FS) [Y/n/?]
Microsoft Joliet CDROM extensions (CONFIG_JOLIET) [N/y/?]
Minix fs support (CONFIG_MINIX_FS) [N/y/?]
NTFS filesystem support (read only) (CONFIG_NTFS_FS) [N/y/?]
OS/2 HPFS filesystem support (read only) (CONFIG_HPFS_FS) [N/y/?]
/proc filesystem support (CONFIG_PROC_FS) [Y/n/?]
/dev/pts filesystem for Unix98 PTYs (CONFIG_DEVPTS_FS) [Y/n/?]
ROM filesystem support (CONFIG_ROMFS_FS) [N/y/?]
Second extended fs support (CONFIG_EXT2_FS) [Y/n/?]
System V and Coherent filesystem support (CONFIG_SYSV_FS) [N/y/?]
UFS filesystem support (CONFIG_UFS_FS) [N/y/?]
Network File Systems
Coda filesystem support (advanced network fs) (CONFIG_CODA_FS) [N/y/?]
NFS filesystem support (CONFIG_NFS_FS) [Y/n/?] N
SMB filesystem support (to mount WfW shares etc.) (CONFIG_SMB_FS) [N/y/?]
NCP filesystem support (to mount NetWare volumes) (CONFIG_NCP_FS) [N/y/?]
Partition Types
BSD disklabel (BSD partition tables) support (CONFIG_BSD_DISKLABEL) [N/y/?]
Macintosh partition map support (CONFIG_MAC_PARTITION) [N/y/?]
SMD disklabel (Sun partition tables) support (CONFIG_SMD_DISKLABEL) [N/y/?]
Solaris (x86) partition table support (CONFIG_SOLARIS_X86_PARTITION)
[N/y/?]
Console drivers
VGA text console (CONFIG_VGA_CONSOLE) [Y/n/?]
Video mode selection support (CONFIG_VIDEO_SELECT) [N/y/?]
Sound
Sound card support (CONFIG_SOUND) [N/y/?]
(Security options will appear only if you are patched your kernel with the Openwall
Project patch).
Security options
Non-executable user stack area (CONFIG_SECURE_STACK) [Y]
Autodetect and emulate GCC trampolines (CONFIG_SECURE_STACK_SMART)
[Y]
Restricted links in /tmp (CONFIG_SECURE_LINK) [Y]
Restricted FIFOs in /tmp (CONFIG_SECURE_FIFO) [Y]
Restricted /proc (CONFIG_SECURE_PROC) [N] Y
Special handling of fd 0, 1, and 2 (CONFIG_SECURE_FD_0_1_2) [Y]
Enforce RLIMIT_NPROC on execve(2) (CONFIG_SECURE_RLIMIT_NPROC) [Y]
Destroy shared memory segments not in use (CONFIG_SECURE_SHM) [N] Y
Kernel hacking
Magic SysRq key (CONFIG_MAGIC_SYSRQ) [N/y/?]

Сейчас вернитесь в каталог "/usr/src/linux" (если вы там не находитесь). Вам нужно компилировать новое ядро. Для этого используйте следующие команды:

[root@deep]# make dep; make clean; make bzImage

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

make clean - стирает все следы предыдущих компиляций, чтобы ошибки предыдущей версии не попали в новое ядро.

make bzImage - осуществляет полную компиляцию ядра.

После того как процесс компиляции завершается, ядро сжимается и готово к инсталляции. Перед тем как инсталлировать ядро вы должны скомпилировать необходимые модули. Это необходимо, если вы ответите Yes на вопрос "Enable loadable module support (CONFIG_MODULES)" и отметили некоторые опции в ядре как модули. В этом случае введите следующие команды:

[root@deep linux]# make modules
[root@deep linux]# make modules_install

Замечание. Команды make modules и make modules_install нужны, если вы ответили Yes на вопрос "Enable loadable module support (CONFIG_MODULES)".


Назад Оглавление Вперед