Оптимизация и отказ от NetworkManager

Предыстория.
Мой старенький ноут грузится за 1 мин 30 сек. Даже для HDD это многовато. Проведя анализ по статье Ускорение загрузки , выяснил, что максимальное время загрузки происходит за счет монтирования /dev/loop* устройств snap пакетов. От них избавиться просто — найти замену из репозиториев или aur. Далее, сравнимые с ними по длительности загрузки оказались avahi и NetworkManager. С первым просто отключаем, не знаю кто им пользуется (почитал в гугле). А вот отказ от NetworkManager это уже история:

$ sudo systemctl disable NetworkManager
$ sudo systemctl enable systemd-networkd

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

$ sudo systemctl enable systemd-resolved
$ sudo systemctl start systemd-resolved

Вы можете проверить состояние этих системных служб с помощью следующих команд:

$ systemctl status systemd-networkd
$ systemctl status systemd-resolved

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

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

Не забываем удалить апплет сети из автозагрузки.

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

$ sudo nano /etc/systemd/network/20-dhcp.network

Вставляем

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

enp* значит, что сеть нужно подымать только для устройств, имена которых начинаются на enp. Cеть настроена. Но это только для сетевой карты. У кого нет Wi-Fi, можно на этом остановиться. У кого есть, читаем дальше. Некоторые настройки взяты отсюда:
Как заменить менеджер сетевых соединений NetworkManager на systemd-networkd в Linux

Как подключиться к WPA/WPA2 WiFi сети используя командную строку Linux.
Узнайте имя вашего WiFi устройства.

$ iw dev

Выхлоп команды будет что-то вроде:

phy#0
Interface wlp2s0
ifindex 3
type managed
…….

Выше видно, что система имеет одну физическую WiFi карту, обозначенную как phy#0. Имя устройства wlp2s0. Тип определяет режим работы беспроводного устройства. managed означает устройство беспроводной станции или клиент, который подключается к точке доступа.
Поднимаем адресацию. В моем случае, при испльзовании systemd-networkd — надо задать описание интерфейсу в /etc/systemd/network/. Первоисточник Подключение к WiFi без NetworkManager’a

Завожу конфиг /etc/systemd/network/25-wireless.network с следующим содержимым

[Match]
Name=wlp2s0
[Network]
DHCP=ipv4

Далее рестартанем systemd-networkd

$ sudo systemctl restart systemd-networkd

Убедитесь, что устройство активно.

$ ip link show wlp2s0

Вывод команды:

3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000

Должно быть ‘UP‘ внутри скобок в первой строке вывода. Если это не так, то выполните

$ sudo ip link set wlp2s0 up

И еще раз проверте активизацию интерфейса.

Проверяем статус.

$ iw wlp2s0 link

Если вывод команды

Not connected.
то подключения к сети нет.

Сканируем сеть на предмет обнаружения доступных WiFi точек.

$ sudo iw wlp2s0 scan

Вывод команды приблизительно будет такой:

BSS 70:4d:7b:4e:3e:b8(on wlp2s0)
TSF: 4540713984369 usec (52d, 13:18:33)
freq: 2412
beacon interval: 100 TUs
capability: ESS Privacy ShortSlotTime APSD (0x0c11)
signal: -90.00 dBm
last seen: 187 ms ago
SSID: berligostr
Supported rates: 1.0* 2.0* 5.5* 11.0* 9.0 18.0 36.0 54.0
DS Parameter set: channel 1
Extended supported rates: 6.0 12.0 24.0 48.0
………..

В выводе две важные части: SSID и протокол безопасности (WPA / WPA2 vc WEP). SSID из приведенного выше примера это berligostr. Протокол безопасности РСН, который также называют WPA2. Протокол безопасности важен, потому что он определяет, какой инструмент вы используете для подключения к сети.

Подключаемся к WPA/WPA2 WiFi сети. Для этого выполняем два действия. Сначала вы генерируете конфигурационный файл для wpa_supplicant, который содержит pre-shared key («пароль») для WiFi сети.

Дальнейшие действия подсказала статья на вики WPA supplicant (Русский)

Cоздаем

$ sudo nano /etc/wpa_supplicant/example.conf

Вписываем туда

ctrl_interface=/run/wpa_supplicant
update_config=1

Сконфигурируйте для соединения с известной сетью

$ wpa_passphrase MYSSID passphrase
network={
ssid="MYSSID"
#psk="passphrase"
psk=59e0d07fa4c7741797a4e394f38a5c321e3bed51d54ad5fcbd3f84bc7415d73d
}

Полученный выхлоп вставляете в конец /etc/wpa_supplicant/example.conf
Где MYSSID — имя вашей Wi-Fi сети, passphrase — ваш пароль для подключения к ней
Подключаетесь к сети

$ sudo wpa_supplicant -B -i wlp2s0 -c /etc/wpa_supplicant/example.conf

Проверяете соединение

$ ping 8.8.8.8

Все работает? Тогда делаем автозапуск соединения при загрузке (systemd).
Делаем копию файла /etc/wpa_supplicant/example.conf и переименовываем его в /etc/wpa_supplicant/wpa_supplicant-wlp2s0.conf
Запускаем

$ systemctl enable wpa_supplicant@wlp2s0

Вот собственно и все.

В результате всех манипуляций время загрузки уменьшилось до 35 сек. Неплохо так, в 3 раза для старенького бука.

ЗЫ. Попытался проделать все это в ubunte (не к месту сказано). Однако получилось, НО

  1. От NetworkManager не так просто избавиться. Его можно удалить sudo apt purge network-manager-gnome , но он за собой тянет gnome-contro-center , удаление это самое простое. После удаления появляется сервис systemd-networkd-wait-online.service , который оттягивает загрузку аж на две минуты, — выключаем sudo systemctl disable systemd-networkd-wait-online.service. Тогда беда, все что не дождалось старта сети — нестартует)))
  2. Вернул gnome-contro-center , сделал sudo systemctl mask NetworkManager , sudo systemctl disable NetworkManager-wait-online.service, sudo systemctl mask NetworkManager-wait-online.service . Перезагрузка, все взлетело за 46 секунд.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Вы можете быть заинтересованы в Cледующем

Подписаться
Уведомление о
guest
4 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
berligostr

сегодня проверил как это работает в ubuntu. работает, только NetworkManager надо удалять так sudo apt purge network-manager, иначе он остается висеть в процессах. а также пришлось один раз сделать rfkill unblock all , так как wi-fi оказался заблокирован

Виталий

Здравствуйте. Сделал все по инструкции, и все сайты работают, но КРОМЕ репозитория AUR (стала появляться ошибка dial tcp: lookup aur.archlinux.org: no such host) и ArchWiki, форума Arch и т.д O_o
В чем проблема может быть?

feresey

супликант какашка. iwctl намного приятнее и удобнее

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: