Ускорение загрузки
Содержание
ПРЕДУПРЕЖДЕНИЕ
Нижеприведённый текст рассчитан дать представление о возможностях тонкой настройки и оптимизации системы. Бездумные действия могут привести к неожиданным результатам.
Чем замеряем
первое, что нам потребуется - это не большая утилита, которая умеет по логам строить интересный график
systemd-analyze из пакета:
urpmi systemd-tools
Для начала построим наш график до того, как что-то навыключали:
systemd-analyze plot > ~/default.svg
Ну графике есть три довольно значимых этапа загрузки:
Startup finished in 843ms (kernel) + 8841ms (initramfs) + 24549ms (userspace) = 34235ms
Ну с ядром мы вряд ли что-то поделаем - не пересобирать же его, а вот с остальными двумя очень даже, и так приступим.
Общие рекомендации
- не используем софтрейд
- не используем разделы LVM
- отключаем и выкидываем ненужные для нашего оборудования модули и скрипты.
- отключаем ненужные сервисы
Выкидываем лишнее из initramfs
дописываем в конец конфигурационного файла dracut:
echo 'omit_dracutmodules+="i18n plymouth resume"' >> /etc/dracut.conf.d/50-dracut-rosa.conf
и перегенерим наш initrd:
dracut -f /boot/initrd-$(uname -r).img
Некоторые опции ядра
в файле /etc/default/grub находим параметр GRUB_CMDLINE_LINUX_DEFAULT и приводим его к такому виду:
GRUB_CMDLINE_LINUX_DEFAULT='splash=silent logo.nologo quiet nouveau.modeset=0 rootfstype=ext4 plymouth.enable=0'
теперь необходимо перегенерить конфиг груба:
update-grub2
Ускоряем запуск userspace
Включим профилировщик:
systemctl enable systemd-readahead-collect.service systemd-readahead-replay.service systemctl start systemd-readahead-collect.service systemd-readahead-replay.service
Если у Вас выделен на отдельный раздел /home то имеет смысл к опциям его монтирования в файле /etc/fstab добавить такие строки noauto,x-systemd.automount
А дальше отключаем кучу ненужных сервисов:
systemctl disable mysqld.service systemctl disable polkit.service systemctl disable acpid.service systemctl disable apmd.service systemctl disable console-kit-daemon.service systemctl disable wine.service systemctl disable mdadm.service systemctl mask mdadm.service systemctl mask systemd-ask-password-plymouth.path systemctl mask plymouth-start.service systemctl disable laptop-mode.service systemctl disable bluetooth.service systemctl disable wpa_supplicant.service systemctl mask mandrake_everytime.service systemctl mask mysqld.service systemctl mask dev-hugepages.mount systemctl mask fedora-storage-init-late.service systemctl mask fedora-storage-init.service systemctl mask console-kit-log-system-start.service systemctl disable lm_sensors.service systemctl mask systemd-vconsole-setup.service systemctl disable rpcbind.service systemctl disable autofs.service systemctl mask partmon.service systemctl mask plymouth-read-write.service systemctl disable rsyslog.service systemctl disable postfix.service systemctl mask avahi-daemon.service systemctl mask sys-kernel-debug.mount systemctl mask mandriva-save-dmesg.service systemctl mask mandriva-kmsg-loglevel.service
Некоторые сервисы Вам могут быть необходимы. Например, при использовании "легких" оконных сред (LXDE, XFCE) вам может понадобиться acpid.
Избавляемся от GRUB
Если у Вас ROSA стоит как единственная система, то видеть меню выбора загрузки вовсе не обязательно т.к. выбирать там особо нечего, а это все драгоценные секунды. И еще, такой фокус возможен только если у Вас EFI загрузка.
Начнем
копируем Ваше ядро и initrd на раздел EFI (по умолчанию он должен быть смонтирован в /boot/efi)
cp /boot/vmlinuz-$(uname -r) /boot/efi/EFI/rosa/ cp /boot/initrd-$(uname -r).img /boot/efi/EFI/rosa/
И добавляем пункт загрузки в BIOS:
efibootmgr --create --gpt --disk /dev/sda --part 1 \ --write-signature --label "ROSA Linux (kernel-$(uname -r))" \ --loader "\EFI\rosa\vmlinuz-$(uname -r)" \ -u "$(cat /proc/cmdline) initrd=/EFI/rosa/initrd-$(uname -r).img"
Где:
- --part 1 - это тот самый раздел который смонтирован в /boot/efi/
- наш диск /dev/sda имеет разделы GPT (в принципе это все дефолтовые параметры при установке системы на чистый носитель)
- тут мы копируем текущее загруженное ядро. Если нужно загрузить другую версию ядра то строку $(uname -r) замените на нужную Вам версию.
Эти шаманства придется проделывать каждый раз при обновлении ядра. И у Вас будет отсутствовать возможность выбрать загрузку другой системы, но такая возможность останется через настройки BIOS. Если система работает с включённым Secure Boot, то его придётся отключить, так как ядро не содержит необходимой подписи.
Итог:
Циферки говорят сами за себя:
Startup finished in 937ms (kernel) + 974ms (initramfs) + 2887ms (userspace) = 4800ms