Ускорение загрузки — различия между версиями
(Новая страница: «== Чем замеряем == первое, что нам потребуется - это не большая утилита, которая умеет по ло...») |
Trs (обсуждение | вклад) |
||
(не показаны 22 промежуточные версии 9 участников) | |||
Строка 1: | Строка 1: | ||
+ | == ПРЕДУПРЕЖДЕНИЕ == | ||
+ | |||
+ | Нижеприведённый текст рассчитан дать представление о возможностях тонкой настройки и оптимизации системы. Бездумные действия могут привести к неожиданным результатам. | ||
+ | |||
== Чем замеряем == | == Чем замеряем == | ||
Строка 5: | Строка 9: | ||
'''systemd-analyze''' из пакета: | '''systemd-analyze''' из пакета: | ||
− | + | <pre> | |
+ | urpmi systemd-tools | ||
+ | </pre> | ||
− | Для начала построим наш график до того как что то | + | Для начала построим наш график до того, как что-то навыключали: |
<pre> | <pre> | ||
Строка 15: | Строка 21: | ||
Ну графике есть три довольно значимых этапа загрузки: | Ну графике есть три довольно значимых этапа загрузки: | ||
− | ''Startup finished in 843ms (kernel) + 8841ms (initramfs) + 24549ms (userspace) = 34235ms'' | + | '''Startup finished in 843ms (kernel) + 8841ms (initramfs) + 24549ms (userspace) = 34235ms''' |
− | Ну с ядром мы | + | Ну с ядром мы вряд ли что-то поделаем - не пересобирать же его, а вот с остальными двумя очень даже, и так приступим. |
== Общие рекомендации == | == Общие рекомендации == | ||
Строка 23: | Строка 29: | ||
* не используем софтрейд | * не используем софтрейд | ||
* не используем разделы LVM | * не используем разделы LVM | ||
− | * отключаем и выкидываем | + | * отключаем и выкидываем ненужные для нашего оборудования модули и скрипты. |
− | * отключаем | + | * отключаем ненужные сервисы |
== Выкидываем лишнее из initramfs == | == Выкидываем лишнее из initramfs == | ||
− | дописываем в конец | + | дописываем в конец конфигурационного файла dracut: |
− | + | echo 'omit_dracutmodules+="i18n plymouth resume"' >> /etc/dracut.conf.d/50-dracut-rosa.conf | |
− | echo 'omit_dracutmodules+=" i18n plymouth resume"' >> /etc/dracut.conf.d/50-dracut-rosa.conf | + | |
− | + | ||
− | и перегенерим наш initrd | + | и перегенерим наш initrd: |
<pre> | <pre> | ||
− | dracut -f /boot/initrd- | + | dracut -f /boot/initrd-$(uname -r).img |
</pre> | </pre> | ||
− | |||
== Некоторые опции ядра == | == Некоторые опции ядра == | ||
Строка 46: | Строка 49: | ||
<pre> | <pre> | ||
− | GRUB_CMDLINE_LINUX_DEFAULT='splash=silent logo.nologo quiet nouveau.modeset=0 rootfstype=ext4 plymouth.enable=0 | + | GRUB_CMDLINE_LINUX_DEFAULT='splash=silent logo.nologo quiet nouveau.modeset=0 rootfstype=ext4 plymouth.enable=0' |
</pre> | </pre> | ||
Строка 52: | Строка 55: | ||
<pre> | <pre> | ||
− | + | update-grub2 | |
</pre> | </pre> | ||
Строка 64: | Строка 67: | ||
</pre> | </pre> | ||
− | А дальше отключаем кучу | + | {{Примечание|Эффект от службы readahead проявится после нескольких (обычно 2-3) перезагрузок.}} |
+ | |||
+ | Если у Вас выделен на отдельный раздел /home то имеет смысл к опциям его монтирования в файле '''/etc/fstab''' добавить такие строки '''noauto,x-systemd.automount''' | ||
+ | |||
+ | А дальше отключаем кучу ненужных сервисов: | ||
<pre> | <pre> | ||
systemctl disable mysqld.service | systemctl disable mysqld.service | ||
Строка 74: | Строка 81: | ||
systemctl disable mdadm.service | systemctl disable mdadm.service | ||
systemctl mask mdadm.service | systemctl mask mdadm.service | ||
− | |||
− | |||
systemctl mask systemd-ask-password-plymouth.path | systemctl mask systemd-ask-password-plymouth.path | ||
systemctl mask plymouth-start.service | systemctl mask plymouth-start.service | ||
Строка 88: | Строка 93: | ||
systemctl mask console-kit-log-system-start.service | systemctl mask console-kit-log-system-start.service | ||
systemctl disable lm_sensors.service | systemctl disable lm_sensors.service | ||
− | systemctl mask systemd-vconsole | + | systemctl mask systemd-vconsole-setup.service |
− | systemctl disable rpcbind | + | systemctl disable rpcbind.service |
systemctl disable autofs.service | systemctl disable autofs.service | ||
systemctl mask partmon.service | systemctl mask partmon.service | ||
systemctl mask plymouth-read-write.service | systemctl mask plymouth-read-write.service | ||
− | |||
systemctl disable rsyslog.service | systemctl disable rsyslog.service | ||
systemctl disable postfix.service | systemctl disable postfix.service | ||
systemctl mask avahi-daemon.service | systemctl mask avahi-daemon.service | ||
+ | systemctl mask sys-kernel-debug.mount | ||
+ | systemctl mask mandriva-save-dmesg.service | ||
+ | systemctl mask mandriva-kmsg-loglevel.service | ||
</pre> | </pre> | ||
− | + | ||
+ | {{Примечание|Некоторые сервисы Вам могут быть необходимы. Например, при использовании "легких" оконных сред (LXDE, XFCE) вам может понадобиться acpid.}} | ||
+ | |||
+ | |||
+ | == Избавляемся от GRUB == | ||
+ | |||
+ | Если у Вас ROSA стоит как единственная система, то видеть меню выбора загрузки вовсе не обязательно т.к. выбирать там особо нечего, а это все драгоценные секунды. | ||
+ | И еще, такой фокус возможен только если у Вас EFI загрузка. | ||
+ | |||
+ | Начнем | ||
+ | |||
+ | копируем Ваше ядро и initrd на раздел EFI (по умолчанию он должен быть смонтирован в /boot/efi) | ||
+ | <pre> | ||
+ | cp /boot/vmlinuz-$(uname -r) /boot/efi/EFI/rosa/ | ||
+ | cp /boot/initrd-$(uname -r).img /boot/efi/EFI/rosa/ | ||
+ | </pre> | ||
+ | |||
+ | И добавляем пункт загрузки в BIOS: | ||
+ | |||
+ | <pre> | ||
+ | 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" | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | |||
+ | Где: | ||
+ | * --part 1 - это тот самый раздел который смонтирован в /boot/efi/ | ||
+ | * наш диск /dev/sda имеет разделы GPT (в принципе это все дефолтовые параметры при установке системы на чистый носитель) | ||
+ | * тут мы копируем текущее загруженное ядро. Если нужно загрузить другую версию ядра то строку $(uname -r) замените на нужную Вам версию. | ||
+ | |||
+ | {{Примечание|Эти шаманства придется проделывать каждый раз при обновлении ядра. И у Вас будет отсутствовать возможность выбрать загрузку другой системы, но такая возможность останется через настройки BIOS. Если система работает с включённым Secure Boot, то его придётся отключить, так как ядро не содержит необходимой подписи. }} | ||
== Итог: == | == Итог: == | ||
Строка 105: | Строка 145: | ||
'''Startup finished in 937ms (kernel) + 974ms (initramfs) + 2887ms (userspace) = 4800ms''' | '''Startup finished in 937ms (kernel) + 974ms (initramfs) + 2887ms (userspace) = 4800ms''' | ||
+ | |||
+ | [[Category:Установка и настройка]] |
Текущая версия на 16:10, 11 октября 2017
Содержание
ПРЕДУПРЕЖДЕНИЕ
Нижеприведённый текст рассчитан дать представление о возможностях тонкой настройки и оптимизации системы. Бездумные действия могут привести к неожиданным результатам.
Чем замеряем
первое, что нам потребуется - это не большая утилита, которая умеет по логам строить интересный график
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