Improving performance (Русский)/Boot process (Русский)
Улучшение производительности загрузки системы уменьшает время ожидания загрузки, а также служит способом изучения взаимодействия определённых системных файлов и скриптов друг с другом. В этой статье сделана попытка собрать воедино методы ускорения загрузки системы Arch Linux.
Анализ процесса загрузки
С помощью systemd-analyze
В состав systemd входит инструмент systemd-analyze , который можно использовать для просмотра информации о времени загрузки, в том числе svg-график с отображением юнитов, ожидающих запуска своих зависимостей. Вы можете увидеть, какие юниты вызывают замедление процесса загрузки, и попытаться оптимизировать их запуск.
Чтобы узнать, сколько времени было потрачено в пространстве ядра и пространстве пользователя при загрузке, просто используйте:
Просмотр списка запущенных юнитов, отсортированного по времени, которое потребовалось каждому из них для запуска:
В некоторых местах загрузка не может продолжаться, пока не произойдёт успешное выполнение какого-то юнита. Чтобы узнать, какие юниты оказываются в этих критических местах цепочки загрузки, выполните команду:
Также можно создать создать SVG-файл, который демонстрирует процесс загрузки в графическом виде, подобно Bootchart:
Смотрите systemd-analyze(1) для более подробной информации.
С помощью bootchart2
Также можно использовать Bootchart2 для визуализации процесса загрузки.
Использование хука systemd
По умолчанию в конфигурации mkinitcpio для сборки initramfs используются хуки base и udev . Для более быстрой загрузки их можно заменить на systemd .
Смотрите mkinitcpio (Русский)#Доступные хуки для более подробной информации. Также смотрите fsck (Русский)#Проверка при загрузке в случае замены хука fsck .
Компиляция собственного ядра
Компиляция своего ядра может сократить время загрузки и использование памяти, хотя со стандартизацией 64-битной архитектуры и модульной природой ядра Linux улучшение может оказаться не таким значительным. Смотрите Ядро#Компиляция для более подробной информации.
Initramfs
Самый простой способ уменьшить размер initramfs — добавить хук autodetect в настройках mkinitcpio. Более сложные методы уменьшения размера описаны в статье Minimal initramfs.
В зависимости от вашего оборудования (процессора и скорости хранилища), использование lz4 вместо используемого по умолчанию алгоритма сжатия zstd может оказаться быстрее, поскольку более высокая скорость декомпрессии при загрузке обычно компенсирует немного больший размер initramfs, который приходится считывать с диска. Смотрите раздел mkinitcpio (Русский)#COMPRESSION.
Выбор оптимального способа запуска служб
Одной из центральных особенностей systemd является активация через D-Bus и сокеты. Это предпочтительно в большинстве случаев, поскольку позволяет службам запускаться только при первом обращении к ним, что, как правило, хорошо (например, включение службы cups.service во время загрузки обычно не особо полезно для настольных систем, вместо него лучше включить cups.socket , который будет запускать службу, только когда потребуется что-то распечатать).
Однако если вы точно знаете, что какая-то служба (например, upower ) всегда будет запускаться во время загрузки, то общее время загрузки можно уменьшить, запустив её как можно раньше. Для этого можно включить службу, например upower.service (если файл службы настроен для этого, что в большинстве случаев так и есть).
Это заставит systemd запустить UPower как можно раньше, не вызывая гонок с активацией сокета или D-Bus.
Последовательная раскрутка дисков
Некоторые диски поддерживают последовательную раскрутку (staggered spin-up): ОС проверяет интерфейсы ATA последовательно, что позволяет раскручивать диски по одному и таким образом снижать пиковое энергопотребление. Это замедляет скорость загрузки, а на большинстве домашних компьютеров вообще не даёт никаких преимуществ, поскольку диски уже раскручиваются сразу после включения питания. Чтобы проверить, используется ли SSS:
Если не используется, то эта команда ничего не выведет.
Для отключения добавьте параметр ядра libahci.ignore_sss=1 .
Монтирование файловых систем
Благодаря хуку fsck в mkinitcpio можно избежать дорогостоящего перемонтирования корневого раздела, изменив ro на rw в параметрах ядра: опции монтирования можно задать через rootflags=rw,другие_опции . Запись должна быть удалена из файла /etc/fstab , иначе служба systemd-remount-fs.service будет продолжать попытки применения этих настроек. В качестве альтернативы можно попытаться замаскировать этот юнит.
Если в качестве корневой файловой системы используется Btrfs, то нет необходимости в выполнении fsck при каждой загрузке, как в других файловых системах. В этом случае можно удалить хук fsck . Вы также можете замаскировать службу systemd-fsck-root.service или запретить ей выполнять проверку корневой файловой системы с помощью параметра ядра fsck.mode=skip . Без fsck systemd всё равно будет выполнять проверку всех соответствующих файловых систем через systemd-fsck@.service .
Из /etc/fstab можно удалить записи для тех точек монтирования, которые systemd монтирует сам с использованием своих юнитов (список таких юнитов можно посмотреть с помощью команды pacman -Ql systemd | grep ‘\.mount$’ ). Например, нередко пользователи по старой привычке добавляют запись для монтирования /tmp , как делали во времена sysvinit, но сегодня в этом нет необходимости, так как systemd-юнит tmp.mount уже позаботился об этом. Следовательно, такую запись можно смело удалить.
Другие файловые системы, такие как /home или системный раздел EFI, могут быть смонтированы с помощью отредактированных mount-юнитов. Добавление noauto,x-systemd.automount к опциям монтирования будет буферизировать весь доступ к этому разделу, а также будет выполнять проверку и монтировать его в момент первого обращения, таким образом уменьшая количество файловых систем, которые нужно проверять/монтировать в процессе загрузки.
- Это изменит тип файловой системы /home на autofs , который mlocate по умолчанию игнорирует. В зависимости от системы, ускорение от отложенного монтирования /home может составлять около секунды-двух, так что, возможно, это не стоит того.
- Если система установлена в подтом btrfs (то есть корневой каталог / сам по себе является подтомом), а /home находится на отдельной файловой системе, вы можете захотеть предотвратить создание подтома /home . Замаскируйте tmpfiles-настройку home.conf : ln -s /dev/null /etc/tmpfiles.d/home.conf .
Уменьшение вывода во время загрузки
На некоторых системах, особенно с SSD, узким местом процесса загрузки может оказаться медленный TTY, поэтому меньший объём выводимого в консоль текста означает более быструю загрузку. Смотрите статью Тихая загрузка для более подробной информации.
Изменение загрузчика
Изменение загрузчика (например, на более простой, такой как systemd-boot), может сэкономить несколько секунд.
Если есть возможность использовать EFISTUB, это сэкономит ещё больше времени.
Ждущий режим
Лучший способ сократить время включения системы — не выключать её вообще. Попробуйте вместо выключения использовать ждущий режим.
Увеличение скорости работы Ubuntu
Эти инструкции будут полезны для оптимизации процесса загрузки, его ускорения, а также общей оптимизации и ускорения системы.
Оптимизация загрузки Ubuntu
Оптимизация начальной загрузки
В Ubuntu по умолчанию установлена утилита readahead , которая позволяет ускорить загрузку системы. Для того чтобы эта утилита давала максимальный эффект, рекомендуется время от времени загружать систему с параметром profile , который обновляет кэши readahead. Чтобы сделать это, надо во время загрузки компьютера зайти в меню GRUB, зажав Shift при включении компьютера, затем выбрать строку c названием Ubuntu и нажать кнопку E для редактирования параметров загрузки. В появившемся тексте найдите строку вида 1)
и добавьте слово profile в конец строки (не забудьте поставить пробел перед profile). Для загрузки системы нажмите Ctrl + X или F10 . С этой опцией система будет загружаться дольше обычного, так как будет производиться сбор информации. После полной загрузки нужно еще раз перезагрузиться.
Эти действия обновляют информацию о всех используемых на этапе загрузки библиотеках и утилитах в файле /etc/readahead/boot, а в /etc/readahead/desktop — информацию о загрузке десктоп окружения. При следующей загрузке сервис readahead, при помощи программы /sbin/readahead-list, загрузит библиотеки и программы, упоминающиеся в индексе, в page cache, что немного уменьшит время загрузки.
Оптимизация файловой системы
Отключение журнала для корневого раздела
Откройте терминал, введите:
Найдите следующую после комментария похожего на «/ was on /dev/sda2 during installation« строку и приведите ее к виду
Теперь введите следующую команду в консоли:
и приведите строку
к следующему виду
Обновите конфигурацию загрузчика:
Если у вас раздел отформатирован в одну из файловых систем из семейства Ext выполните следующую команду:
Помните, что название вашего раздела с корневой системой может отличатся от /dev/sdb2.
Параметры для Ext4 для обладателей Источником Бесперебойного Питания (ИБП)
Параметры для btrfs для обладателей Источником Бесперебойного Питания (ИБП)
Отключение ненужных служб (демонов)
Де́мон (англ. daemon) — в системах класса UNIX — служба, работающая в фоновом режиме без прямого общения с пользователем. Демоны обычно запускаются во время загрузки системы. Типичные задачи демонов: серверы сетевых протоколов (HTTP , FTP, электронная почта и др.), управление оборудованием, поддержка очередей печати, управление выполнением заданий по расписанию и т. д. В зависимости от задач, выполняемых компьютером, некоторые из этих демонов можно отключить и, таким образом, сэкономить на времени запуска системы и уменьшить нагрузку на систему во время работы. Для этого воспользуемся утилитой sysv-rc-conf. Утилита эта консольная, но очень проста и интуитивно понятна, поэтому использовать ее могут даже люди с паническим страхом терминала. Установка:
В терминале получаем следующее: Управление осуществляется несколькими клавишами: Пробел — ставим/убираем крестик, + — — остановка/запуск процесса, Q — выход.
Цифры в верхей строчке — это уровни выполнения. Для отключения сервиса, надо просто убрать крестик со всех уровней.
Отключение ненужного в автозагрузке
Начиная с версии 11.10 все системные программы в автозагрузке скрыты директивой NoDisplay. В окне «Автозапуск программ» отображаются только программы, добавленные пользователем. Для отображения всех программ, надо ввести в терминале команду:
Получим вот такое: Теперь осталось аккуратно отключить то, что не используется и перезагрузиться. На скриншоте ненужные мне программы и сервисы уже отключены.
Для возвращения окна «Автозапуск программ» в исходное состояние, можно воспользоваться командой:
Системная оптимизация
Настройка Swappiness
Изменим поведение Ubuntu в отношении использования ОЗУ и подкачки. Есть такой параметр vm.swappiness, который по умолчанию имеет значение 60, и контролирует, каким образом система будет работать с файлом подкачки (swap). Этот параметр может иметь следующие значения:
Значение параметра | Описание |
---|---|
vm.swappiness = 0 | Ядро будет использовать файл подкачки только в том случае, если значение свободной оперативной памяти будет меньше указанного в параметре vm.min_free_kbytes. |
vm.swappiness = 1 | Для ядер версии 3.5 и выше, минимальное использование файла подкачки без его полного отключения. |
vm.swappiness = 10 | Это значение часто рекомендуют для увеличения производительности при наличии достаточного объема оперативной памяти на компьютере |
vm.swappiness = 60 | Значение по умолчанию |
vm.swappiness = 100 | Система будет использовать файл подкачки очень интенсивно (НЕ РЕКОМЕНДУЕТСЯ, т.к. вызовет сильное замедление работы системы) |
При большом количестве ОЗУ в компьютере, лучше изменить параметр vm.swappiness до 10 либо до 1. В консоли введите следующую команду:
Добавьте строку в конец файла:
При этом «агрессивность» swap опредиляется несколькими праметрами
swapiness — определенный парамет (или системой или переопределен пользователем vm.swappiness)
distress — сколько раз ядро пыталось освободить память (каждый раз повышается на 1, изначальное число 0)
mapped_ratio — процент занятой оперативной памяти
swap_tendency — если число 100 и более, то система будет свопить (второе ограничение — остаток свободной памяти менее 64МиБ)
Система еще не свопила перед этим, swappiness установлен по дефолту 60. То есть система первый раз засвопит при достижении значения свободной памяти в 80%
Соответственно, с этим параметром стоит быть предельно осторожным, так как и увеличение и уменьшение параметра может привести к значительному замедлению системы.
vm.swappiness = 100 замедление может быть заметно сразу
0 проявятся «жуткие» тормоза в процессе использования системы, особенно под нагрузкой
Параллельная загрузка
найдите CONCURRENCY=none и замените на:
Сохраните и перезагрузите компьютер.
В Linux большинство программ используют протокол IPv4 для подключения к интернету. В Ubuntu IPv6 включен по умолчанию, отключим его, если он вызывает проблемы в сети:
Найдите параметр GRUB_CMDLINE_LINUX_DEFAULT и аккуратно дополните значением ipv6.disable=1 Сохраните изменения. Вызовите
для применений изменений, перезагрузите компьютер.
Ускорение запуска программ, с помощью preload
Preload – демон, который собирает информацию о наиболее часто используемых программах, и кэширующий их и используемые ими библиотеки, что приводит к повышению скорости загрузки программ. Для установки нужно просто выполнить в терминале
или запустить Центр приложений Ubuntu, найти в нем preload и установить его. После установки preload перезагрузите компьютер и выполните в консоли команды
Проверить работу Preload можно посмотрев содержимое preload.state
Если файл не пуст, значит демон работает.
Настройки preload по умолчанию подходят большинству, поэтому изменять что-либо в файле /etc/preload.conf не обязательно.
Кеширование символьных таблиц
Создайте пустой каталог
Ваши Qt/GTK программы будут чуток быстрее стартовать и потреблять меньше памяти, благодаря тому, что libX11 будет создавать в
/.compose-cache кеши распарсенной информации и использовать ее повторно.
Оптимизация DE
Ускорение GNOME 2
сохранить в своем «домашнем» каталоге под названием .gtkrc-2.0 (не забыть про лидирующую точку) и перегрузить иксы.
поставить галочку reduced_resources
убрать галочку enable_animations
убрать галочку accessibility.
Установить текстовый параметр в значение panel-speed-fast, для ускорения анимации панели. Перезапустить сессию Gnome.
Как ускорить загрузку в Linux
Нет ничего более раздражающего, чем сидеть перед компьютером и ждать, пока он загрузится и мы сможем с ним взаимодействовать. Есть много причин, по которым Linux компьютер может необъяснимо продлить время запуска , несмотря на то, что это гораздо более легкая операционная система, чем Windows. У этой проблемы есть несколько очень простых решений, решения, которые мы покажем вам ниже.
Большинство решений, которые мы предлагаем в этой статье, могут быть реализованы любым пользователем, независимо от его уровня знаний о Linux, а некоторые требуют небольших финансовых вложений.
Замените жесткий диск на SSD
Первый метод, который мы показываем вам для ускорения загрузки Linux и который также действителен для любой другой настольной операционной системы, заключается в замене механического жесткого диска (HDD) твердотельным диском (SSD). Механические жесткие диски, как следует из названия, используют дискообразный механизм, на котором размещена игла, отвечающая за считывание всей информации. Работа очень похожа на работу поворотного стола.
Please enable JavaScript
Однако твердотельные накопители хранят всю информацию в запоминающем устройстве, аналогичном картам памяти, поэтому скорость как чтения, так и записи намного превосходят механические приводы . Если наши потребности в пространстве не очень высоки и мы полагаемся на платформу облачного хранилища, мы можем купить твердотельный накопитель емкостью 256 ГБ чуть менее чем за 30 евро.
Уменьшить время ожидания GRUB
Если мы используем Linux и Windows на одном компьютере, через несколько секунд после запуска компьютера первое, что появляется, — это GRUB, селектор загрузки, который позволяет нам выбрать, какую операционную систему мы хотим использовать на компьютере в любое время. Если мы не выберем какую-либо операционную систему, через определенное время, 10 секунд, автоматически запустится версия Linux, которую мы установили на компьютер.
Если мы обычно нажимаем кнопку питания на нашем компьютере и начинаем что-то делать, пока он загружается, ожидая, пока GRUB автоматически загрузит Linux по истечении установленного времени, мы можем сократить это время до 2 секунд , Например. Чтобы изменить время ожидания GRUB, мы будем использовать команду
sudo nano /etc/default/grub
Мы вводим пароль нашей учетной записи и изменяем GRUB_TIMEOUT раздел, чтобы установить количество секунд, которое требуется для запуска выбранной операционной системы. Наконец, мы сохраняем изменения.
Далее нам нужно обновить загрузку с изменениями, которые мы внесли в GRUB. Для этого мы будем использовать следующую команду в Ubuntu и дистрибутивы Debian
Проверить время загрузки процессов
Другой метод, который мы можем использовать для проверки времени загрузки процессов, которые запускаются при запуске Linux, это анализировать время их загрузки с помощью системд. Если мы не обладаем высокими познаниями в Linux или не знаем, чему соответствует каждый процесс, лучше не трогать этот раздел.
Для анализа времени выполнения процессов воспользуемся командой
Если мы хотим отключить любой из этих процессов, мы будем использовать команду
systemctl disable nombredelservicio
Установить ожидающие обновления
В зависимости от дистрибутива Linux, который мы используем, количество доступных для установки обновлений может быть более или менее частым, как и обновления установленных приложений, хотя это не зависит от самого дистрибутива. Каждое новое обновление включает ряд улучшений, направленных на улучшение производительности и стабильности компьютера, поэтому их установка на компьютер практически обязательна.
Чтобы проверить, есть ли у нас ожидающие обновления для установки, для обоих дистрибутивов Linux, которые мы используем, мы открываем приложение «Обновление программного обеспечения».
Используйте проприетарные драйверы
С некоторых пор количество производителей, которые также делают ставку на Linux, значительно увеличилось, и в настоящее время нет необходимости обращаться к сообществу, чтобы в полной мере воспользоваться, например, нашей видеокартой. Непатентованные драйверы не так хорошо оптимизированы, как разработанные производителем, поэтому всякий раз, когда у нас есть возможность, мы должны установить их, если мы хотим сократить как время загрузки, так и общую работу дистрибутива.
Чтобы проверить, включает ли какой-либо компонент нашего оборудования возможность использование проприетарных драйверов производителя , мы будем использовать приложение «Программное обеспечение и обновления», а затем на вкладке «Дополнительные драйверы».
Проверьте приложения, которые запускаются
Приложения, которые запускаются при загрузке операционной системы, — это проблема, которую мы всегда найдем в любой операционной системе, будь то мобильная или настольная. Все процессы, необходимые для запуска операционной системы, включены разработчиком операционной системы. Однако по мере того, как мы устанавливаем приложения, некоторые из них автоматически включаются в автозагрузку компьютера, продлевая агонию запуска компьютера.
Чтобы удалить приложения, которые запускаются автоматически каждый раз, когда мы загружаем Linux, мы должны получить доступ к параметрам конфигурации и открыть приложение «Приложения» при запуске. В появившемся окне мы должны выбрать приложения, которые мы хотим удалить, а затем нажать кнопку «Удалить».
Если название приложения звучит для нас незнакомо, то лучше его не удалять, так как это может быть программный компонент, необходимый для корректной работы компьютера. Если мы их удалим, наш дистрибутив Linux может работать нестабильно и не запускаться должным образом.
Сократите время загрузки с помощью Preload
Если мы не только хотим сократить время, необходимое для запуска компьютера, но также хотим сократить время, необходимое для запуска приложений, мы можем использовать предварительную загрузку. Preload хранит двоичные файлы приложений в Оперативная память в фоновом режиме, так что когда нам нужно открыть приложение, оно уже частично загружено в память и время запуска сокращается.
Чтобы воспользоваться этой функцией, первое, что мы должны сделать, это установить ее с помощью команды и перезагрузить компьютер, чтобы она начала работать. С нашей стороны делать абсолютно нечего.
sudo apt-get install preload
Расширенное управление питанием в Linux
Еще одно решение, которое мы показываем вам для оптимизации работы Linux в целом, — это использование Linux Advanced Power Management, с помощью которого мы можем оптимизировать работу оборудования чтобы он адаптировался к типу оборудования, на котором мы его используем (ноутбук или настольный компьютер). С помощью этого приложения мы также можем оптимизировать работу устройства хранения, так что никогда не помешает попробовать.
Чтобы установить это приложение, мы идем в терминал и добавляем репозиторий, где он находится
sudo add-apt-repository ppa:linrunner/tlp
И обновляем список включенных в линукс
sudo apt-get update
мы устанавливаем это
sudo apt-get install tlp tlp-rdw
И мы запускаем его в работу
Используйте легкий дистрибутив
Если после проверки методов, которые мы показали вам в этой статье, мы не можем значительно уменьшить время запуска в линуксе, а наш компьютер особо не выделяется своей современностью, самое простое решение — использовать легкий дистрибутив линукса.
Эти типы дистрибутивов не включают в себя те же приложения и функции, которые доступны в самых последних версиях Ubuntu или Debian, однако они включают все необходимое, чтобы без проблем работать с этой операционной системой.
Lubuntu
Одним из самых популярных легковесных дистрибутивов является Lubuntu, дистрибутив, который, как можно понять из его названия, основан на Ubuntu. Он включает в себя большое количество предустановленных приложений для бесперебойной работы и использует рабочий стол LXQt, который потребляет меньше ресурсов, чем GNOME. Мы можем загрузить этот дистрибутив через его веб-сайт, щелкнув следующее ссылке .
Linux Mint
Еще одна интересная альтернатива, которую мы должны рассмотреть, если мы ищем легкий дистрибутив Linux, мы находим его в Linux Mint, дистрибутиве с дизайном, похожим на Windows XP, который также основан на Ubuntu. включает основные приложения чтобы иметь возможность работать. Мы можем загрузить Linux Mint через следующие ссылке .
Ускорение загрузки Linux
Скорость загрузки вашей операционной системы — это очень важный момент в работе компьютера. Никому не хочется смотреть на заставку загрузки по несколько минут. Чем быстрее загрузится система и будет готова к работе, тем лучше.
Но порой система инициализации выполняет много лишних задач во время загрузки, иногда некоторые сервисы ожидают загрузки других и завершаются только по таймауту через некоторое время. В таких случаях система может загружаться до нескольких минут. В этой статье мы рассмотрим как ускорить загрузку Linux, что нужно для этого настроить, что удалить. А также немного поговорим о процессе загрузки. Мы сосредоточимся на системе инициализации systemd.
Как проходит загрузка Linux
Во всех подробностях процесс загрузки Linux описан в отдельной статье, здесь же мы рассмотрим только то, что будет касаться ускорения.
На то как BIOS тестирует устройства и запускает загрузчик мы повлиять не можем. Работу загрузчика тоже ускорить не получится, можно только убрать ожидание выбора пункта меню.
Но самое интересное начинается дальше. Перед тем как начать загрузку системы ядро выполняет несколько проверок, загружает модули и так далее. Не все проверки нужно выполнять и не все модули нам нужны.
После того как ядро передало управление системе инициализации, начинается монтирование дисков. Это тоже отнимает время, лучше не использовать виртуальные разделы дисков, например, raid или lvm, да и вообще, чем меньше разделов — тем лучше. Идеальный вариант — только корневой раздел, тогда скорость загрузки linux будет максимальной. Но это очень невыгодный в плане удобства вариант, поэтому найдите золотую серединку. Перед тем как примонтировать каждый диск, система инициализации пытается проверить файловую систему на ошибки, это тоже замедляет загрузку.
Загрузка сервисов отнимает больше всего времени и больше всего работы придется проделать здесь, определить какие сервисы не нужны и отключить их также скрыть те сервисы, которые отключить нельзя. Чтобы понять что именно отключать нам нужно знать сколько времени занимает загрузка каждого сервиса. Давайте рассмотрим анализ скорости загрузки systemd.
Анализ загрузки Systemd
Анализ скорости загрузки системы важен не только в самом процессе оптимизации, но и для того, чтобы оценить насколько эта оптимизация удалась. Перед и после оптимизации нужно замерять время загрузки, чтобы понять чего мы смогли добиться.
Давайте посмотрим насколько быстро грузится наша система сейчас:
Да, здесь 17 секунд, не так уж плохо, но будет еще лучше после завершения ускорения загрузки. На загрузку ядра уходит 5.405, а на все остальные сервисы 11.611. Чтобы понять какие именно сервисы замедляют систему нам нужна более подробная информация, мы можем ее получить с помощью параметра blame:
У нас есть список сервисов, которые загружаются дольше всего, но этот список ни о чем нам не говорит, потому что в Systemd параллельная загрузка сервисов. Если бы во время загрузки была какая-нибудь проблема, мы бы ее увидели, но проблем здесь нет. Нам нужен более детализованный график с указанием не только времени загрузки сервиса, но и с отображением параллельных загрузок и мы можем его получить командой:
systemd-analyze plot > graph.svf
Утилита сгенерирует svf файл с графиком, откройте его в браузере:
Вот теперь у нас есть вся информация, чтобы оптимизировать систему. Здесь отображается не только время загрузки каждого сервиса, но также время когда он начал загружаться и когда завершил. Дальше начнем ускорение загрузки Linux.
Ускорение загрузки Linux
Начнем мы с оптимизации ядра 5 секунд, это не так много, но можно же еще улучшить. Мы не будем пересобирать ядро, хотя и это дало бы больший эффект, мы просто настроим его работу с помощью параметров загрузки.
Настраивать Grub будем правильно. Параметры загрузки ядра находятся в файле /etc/default/grub, а именно в строчке GRUB_CMDLINE_LINUX_DEFAULT. Откройте этот файл:
Теперь приводим интересующую нас строчку к такому состоянию:
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 миллисекунд. Это значение индивидуально для каждого компьютера.
Чтобы узнать значение последнего параметра выполните:
dmesg | grep ‘lpj=’
Нас будет интересовать значение lpj=, укажите его в своем конфигурационном файле.
Также для указания корневого раздела желательно не использовать всякие там UUID, быстрее будет если написать прямо. Для того чтобы конфигуратор grub не использовал grub добавьте в тот же файл строчку:
Сохраните файл и обновим конфигурацию grub:
Проверяем, действительно ли установлены нужные опции:
Да, все правильно, перезагружаем компьютер, и смотрим что вышло:
Почти на одну секунду быстрее, и то хорошо. Возможно, у вас эффект будет намного лучше. Теперь идем разбираться с сервисами.
Настройка системы
Во-первых SELinux отключен не полностью. Для полного отключения добавляем строку в файл /etc/selinux/config:
sudo vi /etc/selinux/config
Во-вторых, проверка файловых систем тоже может занять некоторое время. Оставляем проверку на ошибки только для корня. Для этого откройте файл /etc/fstab и приведите строчку для корня к такому виду:
/dev/sda3 / ext4 defaults 1 1
Последний параметр отвечает за проверку, 1 — проверять, 0 — не проверять. Установите для всех других разделов 0. К тому же boot раздел лучше монтировать по требованию. Для этого изменяем его запись:
/dev/sda1 /boot ext4 noauto,comment=systemd.automount 1 0
Затем давайте перенесем папку /tmp в оперативную память, чтобы уменьшить количество операций на жестком диске:
tmpfs /tmp tmpfs defaults 0 0
Ускорение загрузки Linux отключением сервисов
Вот мы и добрались к сервисам. Оптимизация сервисов заключается в том, чтобы отключить лишнее, а также использовать только возможности, встроенные в systemd, так будет быстрее. Сначала перенесем всю функциональность на systemd.
Первым отключим rsyslog. В systemd используется свой механизм записи логов journald, поэтому вести еще один не нужно. Для отключения выполните:
sudo systemctl disable rsyslog
$ sudo systemctl mask rsyslog
Опция mask позволяет спрятать юнит, система будет думать что его не существует и не сможет загрузить. Восстановить такой юнит можно командой systemctl unmask.
В systemd реализована своя служба настройки сети — networkd, поэтому необязательно использовать NetworkManager. Работа со встроенной службой будет намного быстрее. Здесь нужно заметить, что если вы используете wifi и не хотите настраивать его вручную, через консоль, то отключать NetworkManager не стоит.
Отключаем NetworkManager и включаем networkd:
sudo systemctl disable NetworkManager
sudo systemctl enable systemd-networkd
Службу networking тоже можно отключить, если не используете:
sudo systemctl disable networking
Включаем resolved, который отвечает за настройку DNS серверов:
sudo systemctl enable systemd-resolved
sudo systemctl start systemd-resolved
Даем символическую ссылку на файл /etc/resolv.conf
sudo rm /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
Осталось настроить динамическое получение ip адреса при загрузке:
sudo vi /etc/systemd/network/20-dhcp.network
[Match]
Name=enp*
[Network]
DHCP=yes
enp0* значит, что сеть нужно подымать только для устройств, имена которых начинаются на enp0. Готово, сеть настроена.
В systemd есть свое решение для выполнения задач по расписанию, поэтому cron можно не использовать:
sudo systemctl disable cron
С заменой разобрались, перейдем к удалению лишнего. Отключаем фаервол, на домашней машине, за маршрутизатором он не нужен:
sudo systemctl disable ufw
$ sudo systemctl mask ufw
Отключаем apport (служба отчетов об ошибках):
sudo systemctl disable apport
Я не использую ppp и мобильные соединения, поэтому и эти сервисы можно отключить.
sudo systemctl disable pppd-dns
sudo systemctl mask pppd-dns
sudo systemctl disable ModemManager
sudo systemctl mask ModemManager
Если вы не используете Avahi, его тоже можно отключить:
sudo systemctl disable avahi-daemon
Систему AppArmor тоже можно отключить:
sudo systemctl disable apparmor
Также если у вас загружаются такие программы, как postfix (почтовый сервер), apache (веб-сервер), mysql (сервер баз данных) лучше их тоже убрать из автозагрузки и запускать потом вручную.
Перезагружаемся и проверяем скорость загрузки:
У меня скорость загрузки linux выросла на пять секунд. Но это нормально, учитывая, что используется VirtualBox, на реальной машине можно получить и больше. А самая лучшая оптимизация — купить SSD, там можно достичь даже скорости загрузки до двух-трех секунд.
Выводы
Вот и все, в этой статье мы рассмотрели как ускорить загрузку Linux. Если у вас долго грузится Linux вы уже знаете что нужно делать. Если вы знаете другие способы ускорить загрузку Linux, напишите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.