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

Обновлено: 07.07.2024

В одной из наших предыдущих статей мы объяснили, как использовать менеджер пакетов apt для выполнения различных операций, таких как поиск доступных пакетов, установка или обновление пакетов, удаление пакетов и т. Д. Но сегодня мы обсудим другую утилиту, которая может улучшить скорость загрузки пакетов apt и это называется apt-fast.

Apt-fast - это оболочка сценариев оболочки для «apt-get» и «aptitude», использующая возможности менеджеров загрузки axel или aria 2 для ускорения процесса загрузки. Это улучшает производительность загрузки, загружая пакеты одновременно и с несколькими пакетами на соединение.

В этой статье мы расскажем, как установить apt-fast, чтобы ускорить процесс обновления и загрузки. Мы запустили команды и процедуры, упомянутые в этой статье, в системе Debian10.

Шаг 1: Установка необходимых компонентов

Чтобы использовать apt-fast, сначала нужно установить axel или aria2 ускорители загрузки из командной строки. Оба являются отличными инструментами, которые помогают повысить скорость загрузки с несколькими подключениями в пакете.

Запустите приложение Terminal в своей системе, перейдя на вкладку Activities в верхнем левом углу рабочего стола. Затем в строке поиска введите терминал . Когда появится значок терминала, щелкните по нему, чтобы запустить его. Затем запустите следующую команду в Терминале, чтобы установить axel или aria2:


Шаг 2. Установка и настройка apt-fast

Для установки apt-fast сначала нам нужно добавить ключ хранилища для apt-fast. Это позволит системе доверять пакетам, добавляемым из хранилища. Чтобы добавить ключ, выполните в терминале следующую команду:


После добавления ключа добавьте PPA-репозиторий apt-fast в свою систему, выполнив в терминале следующую команду:


Теперь обновите локальный Репозиторий apt, выполнив следующую команду в Терминале:


Наконец, выполните следующую команду в Терминале для установки apt-fast:


Во время установки apt-fast появится всплывающее окно для вас, чтобы настроить apt-fast.

Когда появится следующий экран, выберите apt-get в качестве менеджера пакетов и нажмите Enter , чтобы перейти к следующему шагу.


Теперь выберите максимально допустимое количество подключений. Оставьте это по умолчанию. Нажмите Enter, чтобы перейти к следующему шагу.


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

Вы можете отключить диалог подтверждения apt-fast каждый раз, когда хотите установить пакет. Для этого оставьте значение по умолчанию и нажмите Enter.


После завершения установки нам потребуется выполнить базовую настройку. Файл конфигурации по умолчанию apt-fast находится по адресу / etc / apt-fast .

Запустите следующую команду в Терминале, чтобы отредактировать файл конфигурации в редакторе:

В файле конфигурации добавьте разделенные запятыми зеркала в следующем синтаксисе:

Используйте следующую официальную страницу зеркала Debian и добавьте ближайшие зеркала в зависимости от вашего географического положения.


Также добавьте зеркала, которые присутствуют в /etc/apt/sources.list или в apt-fast файле конфигурации / etc / кв-fast.conf.

Шаг 3: Использование Apt-fast

Как только вы закончите установку и настройку apt-fast, используйте его так же, как вы используете apt-get. Просто замените fast вместо get в команде apt-get. Ниже приведены некоторые полезные команды для использования apt-fast:

Используйте следующую команду для установки пакета с помощью apt-fast:

Используйте следующую команду для удаления пакета с помощью apt-fast:

Используйте следующую команду для обновления пакета с помощью apt-fast:

Используйте следующую команду для обновления пакета с помощью apt-fast:

Давайте посмотрим, как работает apt-fast, установив Apache2. Для этого выполните следующую команду в Терминале:

Будет запрошено подтверждение, введите y для подтверждения.


Из приведенных выше результатов видно, что он загружает пакет Apache2, используя несколько соединений.

В этой статье мы увидели, как утилита apt-fast может использоваться не только для установки пакетов программного обеспечения в вашей системе, но и для увеличения скорости загрузки. Теперь наслаждайтесь быстрой загрузкой!


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

Мой журнал загрузки выглядит следующим образом:

Обратите внимание, что я что-то искал GAVE UP WAITING FOR. и кто-то направил на это,

Тот /dev/sda7 это мой файл подкачки.

Как я могу загрузиться быстрее, может быть, менее чем за 10 секунд на каждую секунду?

  • Проверьте systemd-analyze blame и systemd-analyze critical-chain
  • У него может быть некоторая задержка, но если это не SSD, 1 минута не кажется ужасно медленной.
  • Я также добавил сюда весь сюжет в вопросе: в сетевом диспетчере пользовательского пространства и свопинг занимает некоторое время, но даже мое ядро ​​загружается за 38 секунд. sudo update-initramfs -u -k all отображает некоторую ошибку об отсутствии UUID, который ранее был UUID моего свопа, который был изменен, когда я установил другую ОС.


Это то, чего я добился после исправления некоторых проблем. Как видите, время запуска постепенно уменьшается с 1 мин 5 сек до 28 сек.

1. sudo update-initramfs -u -k all: время ядра

Он кричал во все тяжкие, что я пытался возобновить работу с устройства, которое не было найдено, т.е. у меня был блок возобновления в моем grub.cfg

Это просто ошибка,

И эта красивая строка кода просила меня объявить новый раздел подкачки, чтобы моя система могла возобновить работу с него,

2. systemd-analysis виноват: пользовательское время

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

Теперь у меня время загрузки сократилось до 28 секунд, и вот моя вина и критическая цепочка,

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

У меня была такая же проблема, в основном UUID перепутались после отключения и удаления моего свопа внутри виртуального бокса. Это вызывало проблемы с тайм-аутом и сбои зависимостей, а также заставляло проверять файловую систему при каждой загрузке. Мне пришлось соответственно обновить свои UUID.

Если раздел подкачки удален (например, намеренно при переходе с HD на SSD), файл /etc/initramfs-tools/conf.d/resume должно быть либо полностью пустым, либо читать RESUME= . Удалите любой номер UUID. RESUME=NONE не является допустимым. Независимо от того, используете ли вы подкачку, исправление см. Ниже:

Для устранения неполадок (необязательно):

Список правильных UUIDS раздела:

Убедитесь, что следующие три файла имеют правильный UUID, указанный в списке blkid, перезапишите их правильным UUID:

Затем обновите файловую систему Initial Ram:

Редактирование трех файлов выше также навсегда решило мою cryptsetup: error: couldn't resolve device ошибки при запуске update-initramfs

Это должно предотвратить необходимость добавления UUID в /etc/initramfs-tools/conf.d/resume однако, если у вас все еще есть проблема, рассмотрите возможность добавления UUID, например: RESUME=UUID=c0198c37-f28b-41f5-bb0f-37d575e86896 , или установить RESUME= если вы не используете файл подкачки.

Также убедитесь /etc/default/grub установил на GRUB_TIMEOUT=0 , чтобы ускорить процесс загрузки. После всего, что я здесь описываю, он выполнил последнюю проверку файловой системы при загрузке, но после этого он загрузился через 10 секунд вместо 1 минуты 30 секунд.

Отредактируйте / etc / default / grub, поместите профиль вместо quit и splash Sudo update-grub Отредактируйте / etc / fstab случай 1 ИЛИ 2 из 0 Маскируйте сетевой менеджер, ждите онлайн Маска Plymouth, ждите онлайн Перезагрузка

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

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

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

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

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

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

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

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

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

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

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

systemd

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

systemd1

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

systemd-analyze plot > graph.svf

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

systemd2

Вот теперь у нас есть вся информация, чтобы оптимизировать систему. Здесь отображается не только время загрузки каждого сервиса, но также время когда он начал загружаться и когда завершил. Дальше начнем ускорение загрузки 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='

systemd3

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

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

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

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

systemd5

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

systemd4

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

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

Во-первых 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 адреса при загрузке:

[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 (сервер баз данных) лучше их тоже убрать из автозагрузки и запускать потом вручную.

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

systemd7

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

Выводы

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

Все действия производить с чистой системой, в случае с рабочей, есть риск всё сломать! Для данных целей рекомендуется netinstall образ
При установке /boot необходимо сделать отдельным разделом, хватит 200мб и ext2

Для данных целей нужно использовать последнее ядро (>=2.6.28) и собирать его вручную, как правильно это сделать:
make menuconfig
В Processor type and features -> Processor family выберите свой процессор (у меня Core 2/newer Xeon)
В File systems модульно The Extended 4 (ext4) filesystem и выбрать Ext4 extended attributes
Закончим конфигурирование, приступим к сборке:
make-kpkg --initrd --append-to-version="-append" kernel_image kernel_headers
dpkg -i ../linux*.deb
Где append можно заменить на любое своё слово.
Что бы точно не было проблем с модулями рекомендуется подключить репозиторий sidux'а, для этого в /etc/apt/sources.list:
deb debian.tu-bs.de/project/sidux/debian sid main contrib non-free fix.main fix.contrib fix.non-free
deb-src debian.tu-bs.de/project/sidux/debian sid main contrib non-free fix.main fix.contrib fix.non-free

Перевод в ext4

apt-build

Это программа, благодаря которой можно устанавливать пакеты из исходных кодов, для установки введите aptitude install apt-build, после установки будет предложено выбрать ваш процессор, в интернете можно найти дополнительные параметры для вашего процессора, мой файл настроек (/etc/apt/apt-build.conf): build-dir = /var/cache/apt-build/build
repository-dir = /var/cache/apt-build/repository
Olevel = -O2
mtune = -mtune=core2
options = "-pipe -fomit-frame-pointer"
make_options = "-j4 "
Для начала пересоберём уже установленный пакеты, для этого:
dpkg --get-selections | awk '' > /etc/apt/apt-build.list
echo "Package: *
Pin: release o=apt-build
Pin-Priority: 990" >> /etc/apt/preference
Последнее было сделано для того, чтоб при обновление собранные пакеты не заменились пакетами из репозитория.
Для пересборки всего вводим apt-build world и когда пишет, что для какой0то программы нет исходных текстов, удаляем её из /etc/apt/apt-build.list

Позже пакеты устанавливать через apt-build install, обновлятся через apt-build upgrade, более подробная информация в man apt-build

Замена init на upstart

upstart работает быстрее, чем init, для замены подключите репозитоий с experimental и введите:
echo "Package: *
Pin: release o=experimental
Pin-Priority: 101" >> /etc/apt/preference
apt-build install upstart

Читайте также: