Конфигурация моего домашнего компьютера по нынешним временам далеко не самая продвинутая: Intel Celeron 300A 64 Mб ОЗУ. В принципе, мне хватает ни обработкой звука ни серьезной графикой я не занимаюсь да и шотган свой я практически зачехлил, вон в углу стоит. А как увеличить производительность, спросите Вы? А очень легко необходимо убрать лишние приложения с оперативной памяти. В MS Windows все просто до безобразия даже неинтересно: Пуск > Выполнить набираем msconfig и наслаждаемся, в смысле, выключаем все, чего душа пожелает. Но все дело в том что Linux сейчас в моем сердце. IMHO, эта ОС при равной с Windows нагрузке 2-3 PDF-файла по 3-4 мега 2-3 документа наподобие Word не считая Web-сервера Apache со всеми модулями наподобие Perl + MySQL и, конечно же, какой-нибудь музыкальный проигрыватель типа WinAmp производительней будет. Как же решить проблему повышения производительности в Linux?
В чем только ни упрекали эту операционную систему: и в недостатке программ для нее, и в том, что производители оборудования не поддерживают ее (см. статью Петра «Roxton’а» СЕМИЛЕТОВА «Линукс в каждый дом!», МК № 1718 (188189)), но по крайней мере в одном никто не может упрекнуть Linux в гибкости настройки. Да, иногда попотеть придется, но потом… Если заинтересовались, то поехали.
Во-первых, давайте выключим всех лишних демонов, так называются программы, которые висят в оперативной памяти. Чтобы сделать это, Вы должны обладать правами root. Если у Вас нет сети ни локальной ни Интернета (а бывает и такое сочувствую) выключаем:
dhcpd автоматическое распределение адресов TCP/IP в сети;
named ceрвер DNS определение IP-адреса компьютера по его доменному имени);
network управление сетевыми функциями;
nfs монтирование файловых систем в сети;
portmap обеспечение поддержки удаленного вызова процедур для различных протоколов NFS;
routed использование таблиц маршрутизации c использованием RIP;
smb доступ к файлам на компьютерах под управлением MS Windows;
squid proxy-сервер;
httpd web- сервер Apache
gated маршрутизация;
ypbindyppasswdypserv распределение файлов в UNIX.
Если нет принтера, то выключаем демоны cups, lpd. Если не нужны базы данных, то postgresqld mysqld msqld. Не используете задания, которые выполняются по расписанию anacron, atd, crond. Нет устройств, подключенных к порту USB тогда usb и usbd. Кстати, если непонятно, для чего предназначен демон, попробуйте: man название. Ну, хватит, по-моему, уже и так ничего не работает. Чтобы демон не загружался в современных дистрибутивах, достаточно выбрать (привожу пример для клонов Linux Mandrake) DrakConf > BootService (стартовые сервисы) и снять галочку с переключателя Boot, или попробуйте К > Настройка > Загрузка стартовые сервисы > Редактор SysV-init. Для тех, у кого нет данной фичи, могу предложить следующий вариант. Для начала необходимо сделать пару отступлений.
Во-первых, Linux загружается следующим образом :
ядро запускает программу init, находящуюся в каталоге /sbin;
init запускает сценарий (именно сценарий потом можно посмотреть, что к чему) /etc/rc.d/rc.sysinit;
rc.sysinit устанавливает различные системные переменные и выполняет реинициализацию системы;
init запускает все сценарии, определенные для уровня запуска по умолчанию;
init запускает сценарий (опять же сценарий!) /etc/rc.d/rc.local;
Второе уровни запуска Linux:
0 останов (halt);
1 однопользовательский режим
2 многопользовательский режим без NFS (то же, что и «3», но без сети);
3 полностью многопользовательский режим;
4 не используется;
5 X-Window;
6 перезагрузка (reboot);
Какой отсюда можно сделать вывод? Что нам нужно отключить загрузку демона при загрузке определенного уровня ( «5» c X-Window или «3» в командной консоли) или остановить его в скрипте /etc/rc.d/rc.local? Сначала второй вариант. Здесь все очень просто, добавьте только в конец файла строку /etc/rc.d/init.d/demon_name stop (вместо demon_name я думаю, Вы поняли: необходимо вписать название демона, которого Вы хотите остановить), соответственно, если возникнет необходимость в запуске, то можно будет просто закомментировать данную строку.
Ну, а теперь перейдем к первому варианту. Посмотрите в каталог /etc/rc.d/rc5.d/ (каталоги rc1.d rc6.d соответствуют своим уровням запуска). Там мы видим ссылки на файлы в каталоге /etc/init.d/ (то есть как раз на демонов, запускающихся на данном уровне), форма этих ссылок такова: @S10network, @K02usbd. Символ @ вначале показывает, что это ссылка, следующий символ S (start) или K (kill), дальше следует число из двух цифр, которое показывает последовательность запуска сценариев, и последним идет, как Вы уже догадались, название соответствующего демона. Теперь, я думаю, все понятно: чтобы демон не загружался, необходимо просто заменить букву S на K и все.
Следующий шаг: выключаем лишние виртуальные консоли (это те что под X-Window переключаются комбинацией Ctrl+Alt+F№) для этого заходим в /etc/inittab и ставим знак комментария в строках
Примечание: я ставлю два ## в строке, чтобы не делать резервную копию файла («тут за день так накувыркаешься») чтобы помнить что именно подверглось изменению (рекомендую вообще записывать ВСЕ изменения, которые Вы вносили в файлы конфигурации, на бумагу или в файл). Этот шаг позволяет сэкономить по 0.5 Mб на каждом терминале. Напоминаю что по умолчанию терминалов запускается шесть, плюс седьмой под X-Window оставляйте, сколько реально надо. Я, как видите, оставил два (из жадности).
Далее, если Вы любите слушать музыку в фоне (для рабочего настроения) то «навіщо платити більше» запустите mpg123 вместо XMMS. Звук такой же классный а памяти занимает меньше.
Следующий шаг. Я думаю, Вы уже знаете что X-Window не связана жестко с конкретным диспетчером окон. Поэтому есть возможность в любой момент запустить тот, который полегче. Вот некоторые из них: KDE (>11.1 Mб), Gnome (>9.6 Mб)Enlightenment (6.2 Mб), IceWM (4.8 Mб), Xfce (4.3 Mб), fvwm2 (2.3 Mб), fvwm1 (1.7 Mб), Sawfish (5.6 Mб) и т. д. Как видите, список большой, и я думаю, что это тема для отдельного разговора. Примечание: в скобках указано примерное количество оперативной памяти, занимаемой диспетчером а первые четыре мои любимые.
Но в чем особенная прелесть Linux’а это в том что система распространяется в исходных кодах. А потому можно заново собрать ядро, чтобы удалить лишние модули. Да-да! А в Windows системными файлами занимаются только вирусы (и программисты Microsoft, естественно :-)).
Поехали. Для начала почитайте последнюю версию Kernel-HOWTO и Kerneld. Далее необходимо определиться что за ядро будем ставить, или более новое или то которое было но без лишних модулей или же более старый релиз если в Вашем ядре есть ненужные параметры. Например общепризнанно что ядра серий 2.2.х немного быстрее 2.4.х. Выбор за Вами. У меня стоят параллельно ядро серии 2.4.10 и облегченный вариант 2.2.8 и в зависимости от планируемой работы я загружаю то, которое мне нужно.
Исходные тексты ядра в находятся в /usr/src/linux/, в Интернете ядра можно найти на ftp://ftp.kernel.org в каталоге /pub/linux/kernel/. Договоримся: будем перекомпилировать имеющееся. Переходим в каталог под root: cd/usr/src/linux/. Там же находится конфигурационный файл /usr/src/linux/.config. Параметры будущего ядра могут быть сконфигурированы с помощью любой из трех команд: make config, make menuconfig, make xconfig. Первая для отчаянных парней; в этом случае в командной строке необходимо будет ответить более чем на 200 вопросов. Вернуться к предыдущему пункту возможности нет. Следующая предоставляет более приятный пользовательский интерфейс. Основное достоинство в том, что нет необходимости проходить по всем параметрам, можно изменить только необходимые. Все построено на системе меню. Но если у Вас установлена система X-Windows, то можете воспользоваться командой make xconfig. Появится меню с красивой графической прорисовкой. При выборе пунктов меню могут быть выбраны следующие пункты: Y параметр встраивается в ядро, M будет компилироваться в виде подключаемого модуля и загружаться по требованию, N параметр не выбирается. Итак, переходим в каталог с исходными текстами и набираем make xconfig.
Все параметры перечислять не буду, Вам наверняка станет скучно, да и многое здесь зависит от конкретной конфигурации. К тому же при выборе двух последних команд доступен отличный HELP (на англицком, естественно). Поговорим об общих принципах:
Решите, будете ли Вы собирать целое ядро или модульное. Модули загружаются только по требованию если собираетесь работать с модулями, то ответьте Y на соответствующие вопросы (CONFIG_MODULESCONFIG_KERNELD);
Выберите тип Вашего процессора;
Если у Вас нет SCSI-устройств, отключите все, что со словом «SCSI», или оставьте только нужные устройства;
Отключите все сетевые устройства, поддержка которых Вам не нужна;
Запретите поддержку инфракрасных устройств (IrDA subsystem);
Разрешите поддержку и использование generic PCI bus-master DMA;
DMA по умолчанию (Use DMA be defaults);
Отключите поддержку сетевой файловой системы (NFS);
Запретите все консольные драйвера, за исключением VGA text console;
Отключите SAMBA (CONFIG_SMB_FS) он предназначен для работы c Windows-компьютерами в сети (если нет необходимости, естественно);
Запретите все Ftape;
Запретите поддержку файловых систем, за исключением ISO 9660 CDROM, second extended fs (CONFIG_EXT2_FS) куда же без нее и (CONFIG_FAT_FS) без Windows тоже никуда, наконец, /dev/pts, и /proc;
Запретите поддержку ISDN и IPv6;
Отключите ленточные устройства (CONFIG_BLK_DEV_IDETAPE) PCMCIA-устройства (CONFIG_BLK_DEV_IDE_PCMCIA) вряд ли они у Вас есть;
Запретите поддержку джойстиков;
Отключите Amateur Radio (все АХ-25);
Отключите все драйвера звуковых карт, которые Вам не нужны (почитайте Sound-HOWTO для настройки);
включите поддержку драйвера Вашей мыши (по названию фирмы и\или разъема).
Закончив вносить изменения, нажмите кнопку Save and Exit для сохранения и выхода из программы.
Теперь, когда настройка выполнена, приступаем к компиляции ядра. Наберите следующие команды:
Затем, если Ваша система поддерживает сжатые ядра, наберите
ну, а если не получается, то просто: make zImage
В принципе, в целях безопасности, чтобы root не висел в списке задач, рекомендуется вместо последней команды набрать nohup make bzImage & и выйти, а ядро будет компилироваться в фоне. В зависимости от выбранных параметров и производительности Вашего компьютера, процесс компиляции займет время от нескольких минут до нескольких часов у меня на это ушло около часа).
После того как завершится компиляция, необходимо скопировать новое ядро в загрузочный сектор /boot
и изменить загрузчик LILO. Чтобы иметь возможность загружаться с новым ядром, добавьте следующие строки в файл /etc/lilo.conf:
После изменения обновите LILO командой: /sbin/lilo -v. Теперь после перезагрузки можно выбрать новое ядро.
Итак, мы собрали сейчас цельное ядро. К сожалению, из-за недостатка места я не могу рассказать об особенностях компиляции модульного ядра попробуйте разобраться сами.
В заключение хочу сказать, что при перекомпиляции ядра Вам все равно не отвертеться от чтения документации (по секрету скажу, что ее, документацию, я прочитал после первого опыта сборки ядра, хоть я при этом и не особенно хулиганил). Но после всех мучений Вы получите легкую, быструю и гибкую в настройках систему. К тому же можно будет небрежно бросить в разговоре с друзьями: «Да я вот сегодня в Linux ядро пересобрал так, ничего особенного». Остается только пожелать успехов и … Linux forever.