Глава 5 Конфигурирование и создание оптимизированных, безопасных ядер (Часть
1)
Общий обзор.
Ну хорошо, вы видите, что ваш сервер приобрел общую форму. Но
подождите, что является основной частью вашего сервера? Да, это ядро. Оно
является основой операционной системы. Без него Linux не Linux. Так что мы
должны очень внимательно отнестись к ядру и настроить его так, чтобы оно
соответствовало нашим потребностям. Первое о чем вы думаете, создавая новое
ядро, это его более отличная настроенность под вашу систему. Это сделать очень
просто, но в любом случае прочитайте вначале файл README в каталоге
"/usr/src/linux". При конфигурировании ядра вы должны компилировать коды,
которые вам нужны. Это даст следующие преимущества: ядро будет быстрее (меньше
размер кода, входящего в него), у вас освободиться место в RAM (меньше кода,
меньше размер ядра, а части ядра никогда не помещаются в виртуальную память),
ядро будет более стабильным (не надо искать не существующих устройств),
неиспользуемые части могут использоваться нападающим для получения доступа к
вашей или другим системам. Модули работают медленнее, чем тот же код в
компилированный в ядро. При конфигурировании и компиляции мы будем создавать
монолитное ядро. Такое ядро получатся при ответе на вопросы Yes или No (никогда
не создавайте модули) и пропуске следующих шагов: make modules и make
modules_install. Также мы будем патчить наше новое ядро кодом защиты от
переполнения буфера. Подобный патч для ядра существует и работает он подобно
Solar Designer's, отвергая выполнение кода находящегося в стеке, делая
осуществление атак типа "переполнение буфера" более сложным, и полностью защищая
систему от всех текущих эксплойтов взятых из "script kiddies" всемирной
сети.
Помните, что на все вопросы надо отвечать Yes или No, если вы
хотите создать монолитное ядро. Ели вы собираетесь использовать маскарадинг или
дозвон через ppp соединение, то создать монолитное ядро невозможно, эти функции
требуют использования ряда модулей. Поэтому вам придется создавать модульное
ядро.
Созданное ядро будет сильно привязано к определенному
аппаратному обеспечению, при конфигурировании я использовал следующее
оборудование:
- 1 Pentium II 400 MHz (i686) processor
- 1 Motherboard SCSI
- 1 Hard Disk SCSI
- 1 SCSI Controler Adaptec AIC 7xxx
- 1 CD-ROM ATAPI IDE
- 1 Floppy Disk
- 2 Ethernet Cards Intel EtherExpressPro 10/100
- 1 Mouse PS/2
Все шаги описанные ниже подразумевают
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:
- Неисполняемая область стека пользователя;
- Ограничение использования ссылок в /tmp;
- Ограничение использования FIFO в /tmp;
- Ограничения в /proc;
- Специальные дескрипторы для fd 0,1 и 2
- Усиление RLIMIT_NPROC на execve(2)
- Уничтожение неиспользуемых разделенных сегментов памяти;
Замечание. Когда вы наложите патч 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
Замечание. Эти первые два шага просто очищают любые
лишние элементы, которые могли быть случайно оставлены группой разработки
ядра.
Сейчас мы имеет корректно установленные исходные коды ядра.
Существует три пути для конфигурирования ядра.
- Команда make config. Она предоставляет вам текстовый интерфейс для ответов
на вопросы относительно всех параметров настройки ядра. Вы будете запрошены
обо всех нужных вам опциях.
- Команда make menuconfig. Она предоставляет все опции настройки в легком в
использовании меню.
- Команда 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)".