Бруй В.В., Карлов С.В. - Linux-сервер - пошаговые инструкции - инсталляции и настройки (1077321), страница 23
Текст из файла (страница 23)
В обоих случаях выполняемые операции идентичны.Необходимые исходные коды ядра – пакеты linux-2.4.18.tar.gz или linux2.4.19.tar.gz, можно получить с http://www.kernel.orq или ftp://204.152.189.116.Дополнительно устанавливаемые пакетыЕсли в системе предполагается использовать систему сетевой защиты (Firewall), поддержку ограничений использования дискового пространства quota, SCSI или RAID контроллеры, перед компиляцией ядранеобходима установка соответствующих пакетов:• для реализации системы сетевой защиты необходима установка пакета iptables;• для реализации поддержки ограничений использования дискового пространства пользователями необходима установка пакета quota;• при использовании SCSI или RAID контроллеров необходима установка пакета mkinitrd;• при использовании модульной архитектуры ядра следует установить пакеты mkbootdisk иdosfstools.•ЗАМЕЧАНИЕ Процесс установки пакетов iptables и quota подробно описан в соответствующихглавах этой книги.Создание аварийной загрузочной дискеты для ядра с модульной архитектуройПеред началом конфигурирования, компиляции и инсталляции нового ядра необходимо создать аварийную загрузочную дискету.
Исходя из предположения, что вы используете модульное ядро, устанавливаемое в ASPLinux 7.3, ниже описывается процесс создания загрузочной дискеты для ядра с модульной архитектурой.ЗАМЕЧАНИЕ Процесс создания аварийной загрузочной дискеты для ядра с монолитной архитектуройописан в конце этой главы.Шаг 1Выполните команду:[root@drwalbr /]# uname -aLinux drwalbr.und 2.4.18-5asp #1 Sat Jul 6 20:16:12 EEST 2002 i686 unknownВерсия ядра на рассматриваемой системе – 2.4.18-5asp. Эта информация используется при созданиизагрузочной дискеты.Шаг 2Вставьте в дисковод чистую дискету и выполните команду:[root@drwalbr /]# mkbootdisk --device /dev/fd0H1440 2.4.18-5aspInsert a disk in /dev/fd0.
Any information on the disk will be lost.Press <Enter> to continue or ^C to abort:ЗАМЕЧАНИЕ В этом примере в качестве опции команды mkbootdisk используется версия ядра, установленного в системе, т. е. 2.4.18-5asp. Если установлена другая версия ядра, например, 2.4.19-1, которуюмы рекомендуем, то, естественно, нужно указывать именно ее опции, для надежности проверив ядро командой uname -a.Загрузочная дискета может быть использована для загрузки системы в случае возникновения проблемво время обновления ядра. Вы всегда сможете загрузить систему, установив в настройках BIOS загрузку сдискеты, и продолжить настройку ядра.
Для большей уверенности загрузите систему с дискеты. Если всепрошло успешно, можно переходить к следующим шагам.Подготовка ядра к инсталляцииПрежде всего, необходимо скопировать архив с исходными кодами ядра в директорию /usr/src иудалить старое ядро.73Глава 6. Безопасность и оптимизация ядраЗАМЕЧАНИЕ Удаление старого ядра не вызовет остановки компьютера, потому что ядро Linux постоянно находится в оперативной памяти. В случае аварийного отключения питания, окончания рабочего дня ит. п. вы можете загрузить ядро с дискеты и продолжить работу.Шаг 1Поместите архив с исходными кодами ядра в каталог /usr/src:[root@drwalbr /]# cp linux-2.4.18.tar.gz /usr/src/Шаг 2Если ядро системы было установлено с использованием rpm-пакетов (в случае выполнения установкисистемы в соответствии с рекомендациями главы 2, это действительно так), вам необходимо их удалить:[root@drwalbr /]# rpm –q kernelkernel-2.4.18-5asp.i386.rpm[root@drwalbr /]# rpm –q glibc-kernheadersglibc-kernheaders-2.4-7.14.asp.i386.rpm[root@drwalbr /]# rpm –e--nodeps kernelglibc-kernheadersЗАМЕЧАНИЕ Если вы получите сообщения об ошибках, подобно такой: "cannot remove/lib/modules/2.4.x directory, directory not empty", удалите каталог вручную:rm -rf /lib modules/2.4.18-5asp/.Этот каталог предназначен для хранения модулей старого ядра и больше вам не понадобится.Если необходимо удалить старое ядро, установленное из исходных кодов tar-архива (например, ядро,созданное в результате выполнения рекомендаций этой главы), то необходимо выполнить следующие действия.Перейдите в каталог /usr/src:[root@drwalbr /]# cd /usr/srcУдалите каталог заголовков ядра:[root@drwalbr src]# rm –rf linux-2.4.х/Удалите ядро:[root@drwalbr src]# rm –f /boot/vmlinuz-2.4.xУдалите файл system.map:[root@drwalbr src]# rm -f /boot/System.map-2.4.хЕсли в системе установлена модульная версия ядра, удалите каталог модулей ядра Linux:[root@drwalbr src]# rm -rf /lib/modules/2.4.х/Шаг 3Распакуйте и удалите архив с исходными кодами ядра:[root@drwalbr src]# tar xzpf linux-version.tar.gz[root@drwalbr src]# rm -f linux-version.tar.gzЗАМЕЧАНИЕ Мы советуем вам перенести в надежное место и сохранить архив с кодами ядра доокончания обновления ядра и успешной перезагрузки системы.
Он может понадобиться в случае неудачи приобновлении ядра.Применение патча GrsecurityGrsecurity – патч, предназначенный для улучшения безопасности устойчивых версий ядра Linux.Существует много других подобных проектов, например, rsbac (http://www.rsbac.org/), lids(http://www.lids.org/),SELinux(http://www.nsa.gov/selinux/)иOpenWall(http://www.openwall.com/linux/), которые рассматривают лишь частные вопросы обеспечениябезопасности. Проект Grsecurity, на наш взгляд, наиболее комплексно учитывает различные аспекты обеспечения безопасности ядра Linux-системы и имеет механизмы защиты, не реализованные в других проектах.Патч Grsecurity адаптируется применительно к различным версиям ядер, поэтому необходимо использоватьпатч, соответствующий версии ядра, используемого в системе. Для версии ядра 2.4.18 используется патчGrsecurity для версии ядра 2.4.18, для версии ядра 2.4.19 – патч Grsecurity для версии ядра 2.4.19 и т.
д. Приконфигурации ядра, использующего патч Grsecurity, в настройках ядра будет добавлен новый раздел, позволяющий конфигурировать настройки безопасности.74Часть 1. Инсталляция операционной системы Linux на сервереНеобходимый патч для версии ядра 2.4.18 или 2.4.19 можно получить с узлаhttp://www.grsecurity.org. Применение патча и дальнейшие операции по созданию и установке нового ядра рассматриваются применительно к версии 2.4.18.[root@drwalbr /]# cp grsecurity-1.9.4-2.4.18.patch /usr/src/[root@drwalbr /]# cd /usr/src/linux/[root@drwalbr linux]# patch -p1 < ../grsecurity-1.9.4-2.4.18.patch[root@drwalbr linux]# cd ..[root@drwalbr src]# rm -f grsecurity-1.9.4-2.4.18.patchНастройка ядраПереходим к конфигурированию (т.
е. определению номенклатуры драйверов и функциональныхвозможностей, включаемых в код) нового ядра.Шаг 1В файле /usr/src/linux-2.4.х/include/linux/sem.h измените параметр:#define SEMMNI 128 /* <= IPCMNI max # of semaphore identifiers */на параметр:#define SEMMNI 512 /* <= IPCMNI max # of semaphore identifiers */В файле /usr/src/linux-2.4.х/include/linux/limits.h измените следующие параметры:#define NR_OPENна:#define NR_OPENи#define OPEN_MAXна:#define OPEN_MAX10248192256/* # open files a process may have */8192/* # open files a process may have */В файле /usr/src/linux-2.4.х/include/linux/posix_types.h измените параметр:#define __FD_SETSIZE1024на:#define __FD_SETSIZE8192Шаг 2Теперь необходимо задать параметры оптимизации ядра применительно к имеющейся архитектурепроцессора.В файле usr/src/linux-2.4.х/Makefile измените строку:HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointerна:HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -march=i686 -funroll-loops -fomit-frame-pointerиCFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes - O2 -fomit-frame-pointer-fno-strict-aliasingна:CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes - O2 -march=i686 –funroll -loops -fomit-frame-pointer –fno -strict-aliasingЗАМЕЧАНИЕ В последних примерах проведена оптимизация для процессора i686.
Для систем с процессорами i586, i486 или AMD K6 или K6-2 параметр -march-i686 должен быть изменен, соответственно, на-march-i586, -march-i486 или -march-k6. Компиляция ядра с опцией -O3 (прописная буква "O" три) неповышает его производительности и в некоторых случаях приводит к нестабильности ядра. Поэтому при компиляции ядра используется параметр -O2 (прописная буква "O" два).Очистка ядраДля выполнения дальнейших операций необходимо обеспечить правильность/usr/include/asm и /usr/include/linux.
Для этого необходимо сделать следующее.ссылокГлава 6. Безопасность и оптимизация ядра75Шаг 1Удалите старые и создайте новые ссылки asm и linux:[root@drwalbr /]# cd /usr/include/[root@drwalbr include] # rm -f asm linux[root@drwalbr include] # ln -s /usr/src/linux-2.4.х/include/asm-i386 asm[root@drwalbr include] # ln -s /usr/src/linux-2.4.х/include/linux linuxЭто очень важная часть конфигурирования.
В ней удаляются каталоги asm и linux в/usr/include, содержащие файлы заголовков старой версии ядра, и создаются новые ссылки на те же каталоги для новой версии исходного кода ядра.ЗАМЕЧАНИЕ Если ранее установленное ядро было создано из rpm-пакетов, то ссылок asm и linuxне будет, т. к. при удалении пакета glibc-kernheaders они будут удаляться автоматически.Шаг 2Удалите старые объектные файлы и зависимости:[root@drwalbr include] # cd /usr/src/linux-2.4.х/[root@drwalbr linux-2.4.х]# make mrproperШаг 3Для конфигурирования ядра можно воспользоваться одной из нескольких программ:• make config, позволяющей последовательно вводить требуемые параметры конфигурации ядрапутем ответа на вопросы в текстовой консоли;• make menuconfig, позволяющей вводить параметры настройки ядра с использованием меню втекстовом режиме;• make xconfig, позволяющей вводить параметры настройки ядра с использованием меню в графическом режиме.Авторы рекомендуют осуществлять конфигурирование ядра программой make config или makemenuconfig, чтобы не устанавливать лишних пакетов, наличие которых может негативно повлиять набезопасность системы:[root@drwalbr /]# cd /usr/src/linux-2.4.x/[root@drwalbr linux-2.4.х] # make configrm -f include/asm( cd include ; In -sf asm-i386 asm)/bin/sh scripts/Configure arch/i386/config.in## Using defaults found in arch/i386/defconfig#Конфигурирование ядраПосле запуска программы make config на экране последовательно отображаются вопросы о включении различных опций конфигурации ядра, отвечая на которые можно определить, какие функциональныевозможности и драйверы устройств будут включены в ядро системы.