Ускорение загрузки Linux

Ускорение загрузки Linux вполне возможно.

Пламенный привет посетителям этой страницы, пришедшим из социальных сетей, да и всем остальным тоже!

В апреле 2021-го года наблюдал удивительное явление: обильный поток посетителей из 4-х социальных сетей. В связи с этим настоятельно рекомендую всем неоднократно и регулярно посещать сайт rtbsm.ru — там в общих чертах изложена Российская Теннисная Балльная Система Марии (Шараповой).

Приглашаю всех полюбоваться на Фото и Видео красавицы Марии — надеюсь, что Вы поделитесь адресом сайта rtbsm.ru с друзьями и знакомыми.

Главная проблема — известить Марию, чтобы она лично как можно скорее заявила на весь мир о РТБСМ.

Ускорение загрузки Linux — можно отключить много лишних задач во время загрузки и отключить лишние сервисы, без которых можно обходиться.

Привожу информацию со страницы https://losst.pro/uskorenie-zagruzki-linux :

Ускорение загрузки Linux

Обновлено: 27 августа 2020 г.
Опубликовано: 23 июля 2016 г. от admin
99 комментариев
Время чтения: 11 минут

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Скорость загрузки вашей операционной системы — это очень важный момент в работе компьютера. Никому не хочется смотреть на заставку

Но порой система инициализации выполняет много лишних задач во время загрузки, иногда некоторые сервисы ожидают загрузки других и завершаются только по таймауту через некоторое время. В таких случаях система может загружаться до нескольких минут.

В этой статье мы рассмотрим, как ускорить загрузку Linux, что нужно для этого настроить, что удалить. А также немного поговорим о процессе загрузки. Мы сосредоточимся на системе инициализации systemd.

Содержание статьи

  • Как проходит загрузка Linux
  • Анализ загрузки Systemd
  • Ускорение загрузки Linux
  • Настройка системы
  • Ускорение загрузки Linux отключением сервисов
  • Выводы

Как проходит загрузка Linux

Во всех подробностях процесс загрузки Linux (https://losst.pro/protsess-zagruzki-linux) описан в отдельной статье, здесь же мы рассмотрим только то, что будет касаться ускорения.

На то, как BIOS тестирует устройства и запускает загрузчик, мы повлиять не можем. Работу загрузчика тоже ускорить не получится, можно только убрать ожидание выбора пункта меню.

Но самое интересное начинается дальше. Перед тем, как начать загрузку системы, ядро выполняет несколько проверок, загружает модули и так далее. Не все проверки нужно выполнять и не все модули нам нужны.

После того как ядро передало управление системе инициализации, начинается монтирование дисков. Это тоже отнимает время, лучше не использовать виртуальные разделы дисков, например, raid или lvm, да и вообще, чем меньше разделов — тем лучше.

Идеальный вариант — только корневой раздел, тогда скорость загрузки linux будет максимальной. Но это очень невыгодный в плане удобства вариант, поэтому найдите золотую серединку. Перед тем как примонтировать каждый диск, система инициализации пытается проверить файловую систему на ошибки, это тоже замедляет загрузку.

Загрузка сервисов отнимает больше всего времени и больше всего работы придётся проделать здесь, определить какие сервисы не нужны и отключить их, также скрыть те сервисы, которые отключить нельзя.

Чтобы понять, что именно отключать, нам нужно знать сколько времени занимает загрузка каждого сервиса. Давайте рассмотрим анализ скорости загрузки systemd.

Анализ загрузки Systemd

Анализ скорости загрузки системы важен не только в самом процессе оптимизации, но и для того, чтобы оценить насколько эта оптимизация удалась. Перед и после оптимизации нужно замерять время загрузки, чтобы понять чего мы смогли добиться.

Давайте посмотрим насколько быстро грузится наша система сейчас:

1. systemd-analyze


systemd-analyze

Да, здесь 17 секунд, не так уж плохо, но будет еще лучше после завершения ускорения загрузки. На загрузку ядра уходит 5.405, а на все остальные сервисы 11.611. Чтобы понять, какие именно сервисы замедляют систему, нам нужна более подробная информация, мы можем её получить с помощью параметра blame:

2. systemd-analyze blame

У нас есть список сервисов, которые загружаются дольше всего, но этот список ни о чём нам не говорит, потому что в Systemd параллельная загрузка сервисов. Если бы во время загрузки была какая-нибудь проблема, мы бы её увидели, но проблем здесь нет. Нам нужен более детализованный график с указанием не только времени загрузки сервиса, но и с отображением параллельных загрузок и мы можем его получить командой:

3. systemd-analyze plot > graph.svf

Утилита сгенерирует svf файл с графиком, откройте его в браузере:

Вот теперь у нас есть вся информация, чтобы оптимизировать систему. Здесь отображается не только время загрузки каждого сервиса, но также время, когда он начал загружаться и когда завершил. Дальше начнём ускорение загрузки Linux.

Ускорение загрузки Linux

Начнём мы с оптимизации ядра 5 секунд, это не так много, но можно же ещё улучшить. Мы не будем пере-собирать ядро, хотя и это дало бы больший эффект, мы просто настроим его работу с помощью параметров загрузки.

Настраивать Grub будем правильно. Параметры загрузки ядра находятся в файле /etc/default/grub, а именно в строчке GRUB_CMDLINE_LINUX_DEFAULT. Откройте этот файл:

4. vi /etc/default/grub

Теперь приводим интересующую нас строчку к такому состоянию:

5. GRUB_CMDLINE_LINUX_DEFAULT=»quiet rootfstype=ext4  libahci.ignore_sss=1 raid=noautodetect selinux=0 plymouth.enable=0 lpj=12053560″

Разберём подробнее, за что отвечает каждый параметр:

  • quiet - вывод, это долго, поэтому говорим ядру, что на экран нужно выводить минимум информации
  • rootfstype=ext4 - указываем, в какую файловую систему отформатирован корень. У меня ext4.
  • libahci.ignore_sss=1 - Ignore staggered spinup flag, ускоряет загрузку жёстких дисков
  • raid=noautodetect - raid я не использую, думаю вы тоже. поэтому отключаем.
  • selinux=0 - система полномочий selinux на домашней машине тоже ни к чему, без неё будет быстрее.
  • plymouth.enable=0 - заставка plymouth тоже занимает много времени, поэтому убираем заставку
  • lpj=12053560 - позволяет задать константу loops_per_jiffy, что позволит ядру не вычислять её каждый раз и сэкономит до 250 миллисекунд. Это значение индивидуально для каждого компьютера.

Чтобы узнать значение последнего параметра выполните:

6. dmesg | grep ‘lpj=’

Нас будет интересовать значение lpj=, укажите его в своём конфигурационном файле.

Также для указания корневого раздела желательно не использовать всякие там UUID, быстрее будет? если написать прямо. Для того чтобы конфигуратор grub не использовал grub, добавьте в тот же файл строчку:

7. GRUB_DISABLE_LINUX_UUID=true

Сохраните файл и обновите конфигурацию grub:

8. sudo update-grub

Проверяем, действительно ли установлены нужные опции:

9. vi /boot/grub/grub.cfg

Да, всё правильно, перезагружаем компьютер и смотрим, что вышло:

10. systemd-analyze

Почти на одну секунду быстрее, и то хорошо. Возможно, у вас эффект будет намного лучше. Теперь идём разбираться с сервисами.

Настройка системы

Во-первых SELinux отключен не полностью. Для полного отключения добавляем строку в файл /etc/selinux/config:

11. sudo vi /etc/selinux/config

12. SELINUX=disabled

Во-вторых, проверка файловых систем тоже может занять некоторое время. Оставляем проверку на ошибки только для корня. Для этого откройте файл /etc/fstab и приведите строчку для корня к такому виду:

13. vi /etc/fstab

14. /dev/sda3 / ext4 defaults 1 1

Последний параметр отвечает за проверку, 1 — проверять, 0 — не проверять. Установите для всех других разделов 0. К тому же boot раздел лучше монтировать по требованию. Для этого изменяем его запись:

15. /dev/sda1 /boot ext4

16. noauto,comment=systemd.automount 1 0

Затем давайте перенесём папку /tmp в оперативную память, чтобы уменьшить количество операций на жёстком диске:

17. tmpfs /tmp tmpfs defaults 0 0

Ускорение загрузки Linux отключением сервисов

Вот мы и добрались к сервисам. Оптимизация сервисов заключается в том, чтобы отключить лишнее, а также использовать только возможности, встроенные в systemd, так будет быстрее. Сначала перенесём всю функциональность на systemd.

Первым отключим rsyslog. В systemd используется свой механизм записи логов journald, поэтому вести ещё один не нужно. Для отключения выполните:

18. sudo systemctl disable rsyslog
19. $ sudo systemctl mask rsyslog

Опция mask позволяет спрятать юнит, система будет думать, что его не существует, и не сможет загрузить. Восстановить такой юнит можно командой

20. systemctl unmask

В systemd реализована своя служба настройки сети — networkd, поэтому необязательно использовать NetworkManager. Работа со встроенной службой будет намного быстрее. Здесь нужно заметить, что если вы используете wifi и не хотите настраивать его вручную, через консоль, то отключать NetworkManager не стоит.

Отключаем NetworkManager и включаем networkd:

21. sudo systemctl disable NetworkManager
22. sudo systemctl enable systemd-networkd

Службу networking тоже можно отключить, если не используете:

23. sudo systemctl disable networking

Включаем resolved, который отвечает за настройку DNS серверов:

24. sudo systemctl enable systemd-resolved
25. sudo systemctl start systemd-resolved

Даём символическую ссылку на файл /etc/resolv.conf

26. sudo rm /etc/resolv.conf
27. sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

Осталось настроить динамическое получение ip адреса при загрузке:

28. sudo vi /etc/systemd/network/20-dhcp.network

[Match]
Name=enp0*
[Network]
DHCP=yes

enp0* значит, что сеть нужно подымать только для устройств, имена которых начинаются на enp0. Готово, сеть настроена.

В systemd есть своё решение для выполнения задач по расписанию, поэтому cron можно не использовать:

29. sudo systemctl disable cron

С заменой разобрались, перейдём к удалению лишнего. Отключаем файервол на домашней машине, за маршрутизатором он не нужен:

30. sudo systemctl disable ufw
31. $ sudo systemctl mask ufw

Отключаем apport (служба отчётов об ошибках):

32. sudo systemctl disable apport

Я не использую ppp и мобильные соединения, поэтому и эти сервисы можно отключить.

33. sudo systemctl disable pppd-dns
34. sudo systemctl mask pppd-dns

35. sudo systemctl disable ModemManager
36. sudo systemctl mask ModemManager

Если Вы не используете Avahi, его тоже можно отключить:

37. sudo systemctl disable avahi-daemon

Систему AppArmor тоже можно отключить:

38. sudo systemctl disable apparmor

Также если у Вас загружаются такие программы, как 39) postfix (почтовый сервер), 40) apache (веб-сервер), 41) mysql (сервер баз данных) лучше их тоже убрать из автозагрузки и запускать потом вручную.

Перезагружаемся и проверяем скорость загрузки:

У меня скорость загрузки linux выросла на пять секунд. Но это нормально, учитывая, что используется VirtualBox, на реальной машине можно получить и больше. А самая лучшая оптимизация — купить SSD, там можно достичь даже скорости загрузки до двух-трёх секунд.

Выводы

Вот и всё, в этой статье мы рассмотрели, как ускорить загрузку Linux. Если у вас долго грузится Linux, вы уже знаете, что нужно делать. Если вы знаете другие способы ускорить загрузку Linux, напишите в комментариях!

Была ли эта информация полезной для Вас?

Похожие записи

Процесс загрузки Linux — https://losst.pro/protsess-zagruzki-linux

Процесс загрузки Linux

Как проверить скорость загрузки сайта — https://losst.pro/kak-proverit-skorost-zagruzki-sajta

Как проверить скорость загрузки сайта

Как ускорить Linux — https://losst.pro/kak-uskorit-linux

Как ускорить Linux

Установка времени Linux — https://losst.pro/ustanovka-vremeni-linux

Установка времени Linux

Об авторе


ADMIN
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

99 комментариев к “Ускорение загрузки Linux”

Gordon 23 июля 2016 г.
никогда не замечал, что моя убунту долго загружается, наоборот, она просто летает. всегда. статья для виндузятников, скорее всего. вы заголовком и статьёй не ошиблись?


admin 24 июля 2016 г.
Нет)

Sergsh 25 января 2019 г.
win грузится от силы 25 секунд, я хочу работать на люникс, но люникс минт 18 грузится минут пять и выключается, как старая XP , МИНУТ 10, ну я всего лишь неделю тестирую её, может ещё и ускорю (пока не до этого), дальше я запустил 4 браузера и стала система тормозить, для простого сведения: у win минимум 18 процессов одновременно у меня тянет) да ubuntu быстра, но когда я переходил на неё, были проблемы с модемами 3 G, поэтому после недели сносил их, теперь всё-таки перешёл (YOTA появилась ), но опять проблемы, она больше не запускается на винде (я понимаю разные способы установки, но это решаемо, правда часа три на форумах обеспечено)

P.S. десять лет горю желанием перейти на люникс (нравятся возможности консоли), но опять эти пароли достают, я лицензионки винды 10 даже выкидываю не задумываясь (их суют с компом, ноутом и т. д.) только пиратские , (упрекнуть в бесплатности не получится) шваль, в числе доктора web и касперского выкидываю на хрен (самая бесполезная вещь) хотя по порно лазю лет 20 минимум и ловил, как и в жизни, всего.

дауж  7 апреля 2020 г.
Что за чушь. Большинство линуксов работают в разы быстрее винды.

jzyken  25 июля 2016 г.
Боо, да это же интересно. Я даже и не знал, что сустемд такое умеет. График вообще бомба — наглядность 100%! В винде чтобы такое проделать нужно кучу софта поставить, и то будет много сложнее. А начиная с 8-ки вообще голову сломать можно)

Лично у меня грузится до рабочего (!) состояния в среднем минутку, может чуть больше. С помощью отключения сервисов удалось снизить с 37 с до 26 с. Да, на целой минуте это будет незаметно, но я столько информации узнал из статьи! И это главное.

Спасибо автору за очень интересный и полезный блог! Интересно вот, а есть ли аналогичный функционал у /sbin/init ? А то что я не гуглил (правда пока не очень усердно) по поводу всяких systemctl status и т. п. в старом стартовом демоне такого не нашел.


admin  25 июля 2016
Графика в sysinit точно нет, а systemctl status был, /etc/init.d/демон status. Время загрузки системы мониторилось по логах.

jzyken  23 июля 2016
Ошибочка:
Не systemd-analyse
А systemd-analyze

User  24 июля 2016
Поправь $ systemd-analyse на $ systemd-analyze

Alexey Deripasko  24 июля 2016
>> Отключаем AppArrmor:
и
>>Систему AppArmor тоже можно отключить:


admin  24 июля 2016
Спасибо, всё подправил.

Konstantin  24 июля 2016
У меня avahi по ходу дела не отключается… плюс при переходе на встроенную сетевую систему systemd перестали работать индикаторы/виджеты сетевые. Может знает кто-нибудь работающие с Systemd для Ubuntu/Mint?

Александр  24 июля 2016
я могу отключить лишь некоторые службы? не влезая в конфигурации ядра и граб?
Очень не хочется очередной раз положить систему. 50 секунд много, а вот секунд 20 я подождать готов.
Я хочу отключить следующие службы:
23.987s apt-daily.service
15.010s NetworkManager-wait-online.service
9.279s ModemManager.service
стоит ли их отключать? а так же посоветуйте, что можно выключить из списка ниже


admin  24 июля 2016 г.
ModemManager — если не используете, модем можно отключить, NetworkManager управляет сетью. Отключить нельзя, но можно заменить на networkd. А так да, можете конфигурацию ядра не трогать.

Александр  24 июля 2016 г.
5.647s accounts-daemon.service 5.230s irqbalance.service
5.027s snapd.refresh.service 4.796s thermald.service
4.765s gpu-manager.service
4.699s grub-common.service
3.979s rsyslog.service
3.964s networking.service
3.941s systemd-logind.service
3.851s pppd-dns.service
3.808s alsa-restore.service


admin
Из списка ещё можно убрать rsyslog и pppd-dns

Konstantin  24 июля 2016 г.
Так как здесь в очередной раз задета тема Systemd, то не планируется ли материал, посвященный плюсам и минусам этой новой системы инициализации? Просто было бы интересно.


admin  24 июля 2016
Не знаю даже… наверное, можно будет сделать.

Silent Hill 24 июля 2016
У меня вот этот сервис дольше всего грузится, можно ли его отключить?
1min 3.847s apt-daily.service


admin 24 июля 2016
Этот сервис отвечает за автоматическое обновление системы, если вам не нужна эта функция, можете отключить. А учитывая что он занимает так много времени, то однозначно нужно отключать.

darkxakep 24 июля 2016
Startup finished in 11.436s (firmware) + 2.517s (loader) + 1.623s (kernel) + 1.616s (initrd) + 44.236s (userspace) = 1min 1.430s
Startup finished in 10.459s (firmware) + 1.903s (loader) + 1.884s (kernel) + 1.692s (initrd) + 40.785s (userspace) = 56.725s

Ilya  24 июля 2016
Минус 100 в карму автору.
Только что попробовал «оптимизировать» на fedora 24. В результате Wi-fi пропал.
Автор, просьба все свои эксперименты проводи на реальной машине, а не на виртуальной. Это не одно и то же! Потом Linux понятие растяжимое — указывай distr, на котором проводился эксперимент.
Да не ожидал я от Вас такого…


admin 24 июля 2016
Wifi пропал, потому что отключен NetworkManager, забыл дописать что если используется wifi то лучше NetworkManager не трогать. Верните на место программу и все будет работать.

jzyken  24 июля 2016
Ну есессна, без NM нужно wi-fi ручками настраивать. В интернете гайдов пруд пруди, уверен даже, что и на losst.pro есть =)
А всё потому, что как макаки Ctrl-c Ctrl-v, не разбираетесь в сути. Нет бы гуглонуть, что такое этот NetworkManager, да узнать за что он в системе отвечает. Да и systemd-networkd почитать как настроить, перед тем как отрубать NM.
Так нет, сразу какашками лезут кидаться. Автор что, нанялся вам тут всё разжевывать и в рот класть? Вы хоть как-нибудь помогли проекту перед тем, как требовать от него что-то?
Непонятно чего-то, не можешь нагуглить — стучись в комментарии, но не требуй, блина, а проси!
Минус over9000 тебе в карму.

jzyken  24 июля 2016 г.
Хм, ещё бы хотел спросить, не радикально ли отрубать крон? Все ли поймут, что теперь нужно использовать systemd?

admin  25 июля 2016 г.
Допишу несколько строк про это, думаю так будет лучше.

Алекс  24 июля 2016 г.
Я замечал, что Линукс у меня загружается дольше чем Вин8.1. Попробую исправить. Спасибо.

Лично у меня нет желания запускать десятки команд — пока что терплю длинную  начальную загрузку. Пронумеровал все 41 предложенные команды и постепенно исполню их, наблюдая за снижением времени загрузки.

Лично у меня создалось впечатление, что публикация довольно поверхностная — она не даст существенного выигрыша на моих двух ноутбуках с Линуксами: 5 секунд выигрыша меня мало интересуют.

Я могу за 8-мь дней постепенно выполнить 41-ну приведенную команду, но каждый раз мне придётся несколько часов проверять сохранение работоспособности ОС. К тому же автор забыл написать, как проводить откаты.

Результаты сообщу на этой странице.

Для оптимизации Windows 11 нового ноутбука использовал программу Optimizer — выиграл 3 секунды начальной загрузки ОС.

В Линуксе можно использовать

Stacer

Stacer is an open source system optimizer and application monitor that helps users to manage entire system with different aspects, its an all in one system utility.

Stacer — Linux System Optimizer & Monitoring

Немного погодя разберусь с программой Stacer. Пока что Линукс загружается примерно 91-ну секунду, что вполне терпимо и меня устраивает.

!…

Приглашаю всех высказываться в Комментариях. Критику и обмен опытом одобряю и приветствую. В особо хороших комментариях сохраняю ссылку на сайт автора!

И не забывайте, пожалуйста, нажимать на кнопки социальных сетей, которые расположены под текстом каждой страницы сайта.
Ускорение загрузки LinuxПродолжение тут…

Баннер

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Проверка комментариев включена. Прежде чем Ваши комментарии будут опубликованы пройдет какое-то время.