Все описанные далее действия выполняются от имени пользователя root. Ошибки в некоторых шагах могут привести к различным сбоям в загрузке системы, поэтому рекомендуется делать все очень внимательно, а также запастись live-версией какого-либо дистрибутива.

Оценка времени загрузки при помощи bootchart

  1. Установить bootchart urpmi bootchart Bootchart - представляет собой собой сборщик данных о загрузке и времени выполнения отдельных процессов. После загрузки можно сгененерировать графический файл с разбором полетов.
  2. Перейти в каталог /boot/grub и открыть файл menu.lst
  3. В параметры загрузки необходимо добавить init=/sbin/bootchartd
  4. Сохранить изменения и перезагрузить систему.
  5. Перейти в каталог /var/log и открыть файл bootchart.png
  6. В файле находится графическое представление процесса загрузки системы.

О точности

При оценке времени загрузки стоит учесть, что некоторое время тратится на запуск самого bootchart, а также на сбор результатов. Гораздо удобнее использовать команду systemd-analyze, но в ROSA нет соответствующего пакета. Сам bootchart часто врет, результаты имеют некоторый разброс. Кроме того иногда подсчет времени ведется неверно и на выходе получаются астрономические цифры (например, 7 минут), несоответствующие действительности. Поэтому данные, получаемые из его графиков, служат относительным показателем времени, но все же позволяют определить наиболее “долгие” процессы. Вот почему в некоторых случаях для приблизительной оценки использовался обычный секундомер мобильного телефона.

Большинство приложений в Linux используют динамически загружаемые библиотеки, которые содержат различные функции, необходимые для их работы. При каждом запуске приложения должны быть также загружены эти библиотеки. В случае тяжелых приложений, имеющих большое количество связей, этот процесс может занять определенное время. При этом выполняемые для связывания библиотек действия одинаковы, если сами библиотеки не меняются. Утилита prelink позволяет прописать связи с библиотеками непосредственно в исполняемый файл, что ускорит запуск приложения. Выполняется это без перекомпиляции приложений.

Внимание: по непроверенной информации установка prelink в системе, использующей wine может привести к ухудшению или прекращению работы последнего.

$ urpmi prelink
$ prelink -amfR

и перезагрузить систему.

Примечание: Учтите, что запускать prelink необходимо после каждого обновления библиотек и/или приложений. В ROSA запуск prelink будет автоматически добавлен в задания cron.

После установки prelink скорость загрузки системы удалось сократить на 20-30 сек. Результат во многом зависит от количества программ, запускающихся автоматически при старте системы.

Установка дополнительных параметров ядра

  1. Перейти в каталог /boot/grub и открыть файл menu.lst
  2. В параметры загрузки необходимо добавить libahci.ignore_sss=1 raid=noautodetect Опции “raid=noautodetect” и “libahci.ignore_sss=1” позволяют ускорить время инициализации ядра из-за пропуска дополнительных проверок.
  3. Сохранить изменения и перезагрузить систему.

После добавления параметров загрузки время развертывания системы составило 66 секунд.

Отключение сервисов

Для отключения следует использовать команду “systemctl mask”, достоинство которой в том, что %post скрипт RPM в дальнейшем не включит сервис автоматически. Cервисы отключенные через “systemctl mask” при необходимости можно в любой момент вернуть командой “systemctl unmask”.

  1. Перейти в каталог /lib/systemd/system
  2. lvm2 Если на компьютере не используются LVM, то можно отключить все соответствующие сервисы. systemctl mask lvm2-monitor.*
  3. bluetoothd Если на компьютере не используется bluetooth, отключаем его. systemctl mask bluetoothd.*
  4. avahi-daemon Avahi - это система, которая обеспечивает возможность обнаружения сервисов в локальной сети. Это означает, что после подключения вашего компьютера к локальной сети вы сможете мгновенно обнаружить доступные принтеры, увидеть, какие разделяемые ресурсы имеются в сети, узнать, с кем из других пользователей сети вы можете поговорить через chat и так далее. Если в локальной сети нет совместно используемых принтеров и прочего, отключаем. systemctl mask avahi-daemon.*
  5. cups Это демон общей службы печати UNIX (the “Common UNIX Printing Solution”). Как следует уже из названия, это система печати, которая обеспечивает работу с различными форматами файлов и различными типами принтеров. Если вы хотите печатать, пусть этот демон работает в вашей системе, если нет, то: systemctl mask cups*
  6. mandi Демон мониторинга сети. В большинстве случаев не нужен.
  7. nscd Это демон кэширования для службы имен. Он поддерживает таблицу групп и паролей для запущенных программ, а затем выдает запомненный результат по следующему запросу тех служб, которые иначе работают слишком медленно, например, NIS или LDAP.

Результаты выполнения этого шага зависят от конфигурации системы и часто их влияние на скорость загрузки минимально, но хотя бы оперативную память чуточку разгрузим.

Манипуляции с монтированием разделов.

  1. Монтировать раздел /tmp с использованием tmpfs для сокращения нагрузки на диск в процессе загрузки.
  2. Добавить опции монтирования noatime,nodiratime.

В результате /etc/fstab будет выглядеть следующим образом:

# Entry for /dev/sda5
UUID=5434a306-2216-4dfc-ad67-dd512986a805 / ext4 defaults,noatime,nodiratime 1 1

# Entry for /dev/sda7
UUID=f8db9aa0-26ca-4705-a45b-b92a1f8b5abb /home ext4 defaults,noatime,nodiratime 1 2

none /proc proc defaults 0 0

# Entry for /dev/sda6
UUID=975dc49c-b065-41e1-b92d-7f664fcf8178 swap swap defaults 0 0

# Entry for tmpfs
tmpfs  /tmp  tmpfs  defaults  0 0

Если в системе есть раздел /boot, то его можно перевести в режим “монтирование по требованию”, добавив опции noauto,comment=systemd.automount.

Выигрыш от описанных операции обычно минимален, порядка 200-500 мск.

Заключение

Не забыть убрать запуск bootchart из /boot/grub/menu.lst