Безопасность и оптимизация Linux.Редакция для Red Hat

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


Шаг 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.


Содержание раздела