пятница, 29 июня 2007 г.

Оптимизация загрузки Slackware

Сразу обозначу с какой целью производится оптимизация. В конторе, где я работаю, Slackware Linux используется на большинстве серверов. Для тестирования решений, разработки новых программ, сборки slackware пакетов я также использую Slackware, но только внутри виртуальной машины. Соответственно вся оптимизация применяется для виртуальной машины. Особенности работы:
  • не используется графический режим, устанавливаются и работают только консольные программы. Фреймбуфер тоже не используется.
  • доступ только через ssh, как потом на рабочем сервере.
Всё сказанное здесь верно для всех известных версий Slackware, статья тестировалась на Slackware 11. Можно использовать описанные здесь приёмы и для рабочих машин, но делать это с осторожностью.
  1. Настройка загрузчика lilo. Произвоится редактированием файла /etc/lilo.conf. Задаем параметры:
    # графический режим консоли - текстовый
    vga = normal
    # задержка перед автоматической загрузкой - 5 секунд
    timeout = 50
    
    Если не планируется пересобирать ядро или менять параметры его загрузки, можно вообще отключить вывод меню:
    # prompt
    
    После изменения /etc/lilo.conf, не забудьте запустить lilo, чтобы изменение настроек вступило в силу.
  2. Отключение лишних консолей. Редактируем файл /etc/inittab. Оставим одну из шести консолей, остальные комментируем:
    c1:1235:respawn:/sbin/agetty 38400 tty1 linux
    # c2:1235:respawn:/sbin/agetty 38400 tty2 linux
    # c3:1235:respawn:/sbin/agetty 38400 tty3 linux
    # c4:1235:respawn:/sbin/agetty 38400 tty4 linux
    # c5:1235:respawn:/sbin/agetty 38400 tty5 linux
    # c6:12345:respawn:/sbin/agetty 38400 tty6 linux
    
  3. Отключение загрузки неиспользуемых модулей ядра. Смотрим файл /etc/rc.d/rc.modules. Здесь можно отключить загрузку модулей agp и эмуляции scsi:
    # /sbin/modprobe agpgart
    ...
    # /sbin/modprobe ide-scsi
    
  4. Отключение неиспользуемых демонов. С помощью комманды: chmod -x /etc/rc.d/rc.xxxxx снимаем атрибут исполняемого файла, со всех файлов в каталоге /etc/rc.d, кроме:
    /etc/rc.d/rc.4
    /etc/rc.d/rc.6
    /etc/rc.d/rc.K
    /etc/rc.d/rc.M
    /etc/rc.d/rc.S
    /etc/rc.d/rc.inet1
    /etc/rc.d/rc.inet2
    /etc/rc.d/rc.modules-2.4.33.3
    /etc/rc.d/rc.netdevice
    /etc/rc.d/rc.sshd
    /etc/rc.d/rc.syslog
    
  5. Отключение неиспользуемых демонов 2. Чтобы отключить демон отсроченного запуска комманд и обновление индекса шрифтов, комментируем следующие строчки в файле /etc/rc.d/rc.M :
    # Start atd (manages jobs scheduled with 'at'):
    # if [ -x /usr/sbin/atd ]; then
    #   /usr/sbin/atd -b 15 -l 1
    # fi
    ...
    # Update the X font indexes:
    # if [ -x /usr/X11R6/bin/fc-cache ]; then
    #   echo "Updating X font indexes:  /usr/X11R6/bin/fc-cache"
    #   /usr/X11R6/bin/fc-cache
    # fi
    
  6. Отключение демонов 3. Для экстремалов. Можно (но не рекомендуется) отключить демона журналирования syslog:
    chmod -x /etc/rc.d/rc.syslog
    
    Тогда отпадает надобность в демоне запуска заданий по расписанию, используемом для ротации журналов. Комментируем строчки в файле /etc/rc.d/rc.M :
    # Start crond (Dillon's crond):
    # If you want cron to actually log activity to /var/log/cron, then change
    # -l10 to -l8 to increase the logging level.
    # if [ -x /usr/sbin/crond ]; then
    #   /usr/sbin/crond -l10 >>/var/log/cron 2>&1
    # fi
    
Теперь остается перезагрузить виртуальную машину и убедится что всё работает. Самое время сделать снимок состояния виртуальной машины для многократного использования в будущем.

Комментариев нет: