Статья предназначена для линуксят, столкнувшихся с проблемами при установке дистрибутива Debian GNU/Linux на свежее железо. От опытных линуксоидов хотелось бы услышать конструктивную критику и рекомендации по усовершенствованию данного метода установки. Давайте вместе поможем линуксятам не повесить носики в сложных ситуациях и открыть для себя удивительный мир консоли и возможностей.
Предыстория
На просторах сети Интернет редко встречается метод установки дистрибутива, представленный в данной статье. Я, честно сказать, и сам раньше всегда ставил netinstall-версию и не парился. Но покупка ноутбука на свежем железе все изменила. Недавно я приобрёл Xiaomi RedmiBook Pro 15" 2022 Ryzen Edition (AMD R7-6800H, Radeon 680M). Главная проблема заключается в том, что ноутбук появился в продаже весной 2022 года и напичкан железками последних поколений. Люди, купившие его сразу после выхода, столкнулись с огромным количеством багов в прошивке BIOS и отсутствием драйверов. На 4pda есть отдельная ветка, посвящённая данной модели. Проблемы с кривыми драйверами существуют до сих пор. Первые недели я пользовался официальной активированной Windows 11, и даже там (не удивительно?) постоянно отваливался модуль Wi-Fi, крашился Adrenalin, были проблемы с режимом гибернации и многое другое.
Спустя время я решил вернуться в привычную среду и установить Debian. Записал образ на флешку, установил, перезагрузил и канул во тьму. Система не подтягивала графическую оболочку, работала только в консольном интерфейсе, сыпала ошибками в dmesg и намертво зависала спустя полчаса. Выяснить причину такого поведения не удалось. Перепробовав разные варианты, я разочаровался и отложил затею на пару дней. В тот момент я даже задумался, а не остаться ли на Windows 11 и использовать там WSL для рабочих задач. Дьявол шептал за window? Кто знает... На 4pda посоветовали поставить Liquorix Kernel. Я не последовал совету и решил попробовать накатить Kali Linux в ветке rolling, так как там ядро посвежее, да и большое количество предустановленного софта, который необходим для работы. На этот раз графическая оболочка загружалась, система работала часик-другой. Но журнал сообщений ядра продолжал сыпать критическими ошибками, а система намертво зависать когда ей захочется.
Осознав свое положение линуксёнка и повесив носик, я обратился к компетентному коллеге на работе, который всю жизнь администрирует сети. Услышав о шаоми, он отправил меня... Но когда речь зашла о его любимом дистрибутиве, он выдал базу и по итогу направил меня на путь истинный. Данный метод установки не совершенен, так как я просто не смог понять всего, что посоветовал сделать мой коллега. И все же, в моем случае это сработало и дало возможность пользоваться любимым дистрибутивом.
Установка базовой системы
Будучи на Windows, необходимо обновить прошивку BIOS с официального сайта Xiaomi (используя VPN), выключить Secure Boot и потереть ключи.
Скачиваем дистрибутив с non-free firmware отсюда. Нам нужен файл firmware-*-amd64-DVD-1.iso
Создаем загрузочный носитель и выполняем стандартные шаги установки за исключением партиционирования накопителя и выбора готовых наборов программного обеспечения.
Партиционирование накопителя достаточно нетривиальный этап установки для обычных пользователей. По нему мало информации, да и важен он зачастую для серверов. Вы можете ознакомиться с рекомендациями Debian и с данной инструкцией, чтобы определить, нужно ли это вам. Касательно клиентских устройств скажу, что с партиционированием играться опасно. Велик шанс ошибиться с объемом выделенного пространства для какого-нибудь /tmp раздела, после чего некоторый софт не сможет распаковать файлы при установке. Если перед вами не стоит специфичных задач и нет конкретного понимания для чего выделять раздел - делать этого не нужно. В моем случае объем твердотельного накопителя составляет 500 GB. Я выделил следующие партиции:
1.0 MB FREE SPACE
536.9 MB ESP
150.0 GB ext4 /
11.6 GB swap swap
350.0 GB ext4 /home
354.4 kB FREE SPACE
При установке выбираем ТОЛЬКО СТАНДАРТНЫЕ СИСТЕМНЫЕ УТИЛИТЫ, так как нагромождать систему лишним функционалом, предоставляемым графической оболочкой, не хочется. В конце мы установим графическую оболочку и все необходимые для работы инструменты сами. Внимательно проверьте, что вы отметили единственной галочкой пункт «Стандартные системные утилиты».
Завершив установку, заходим в систему под своим пользователем и повышаем права до root.
su - root
Приводим содержимое файла /etc/source.list к следующему виду:
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
Для экономии времени используем выделение (Shift + стрелки), копирование (Alt + 6) и вставку (Ctrl + U). Сохраняем файл (Ctrl + S) и выходим (Ctrl + X).
Обновляем информацию о пакетах в системе:
apt update
В какой-то момент менеджер зависимостей предлагает нам ознакомиться со списком изменений. Пролистываем changelog и нажимаем «q».
Обновляем установленные пакеты до последних версий:
apt upgrade -y
Далее система предложит автоматический перезапуск служб, если это необходимо для корректной установки пакета. Выбираем «YES» и двигаемся дальше.
Также проверяем, нужно ли удалить какие-либо пакеты для полного обновления:
apt full-upgrade -y
Перезагружаем устройство:
reboot
В моем случае после перезагрузки заработала клавиатура ноутбука. Если у вас тоже ноутбук с разрешением 3200x2000, то вы поймете, какое это счастье.
Конфигурация и компиляция ядра Linux
Снова логинимся под root и устанавливаем список пакетов, необходимых для компиляции ядра Linux:
apt install wget build-essential dwarves python3 libncurses-dev flex bison libssl-dev bc libelf-dev
Переходим в директорию /usr/src и скачиваем архив с последней стабильной версией ядра с официального сайта:
cd /usr/src && wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.3.2.tar.xz
Распаковываем архив в текущую директорию:
tar xvf linux-6.3.2.tar.xz
Переходим в директорию с исходниками ядра:
cd linux-6.3.2
Теперь копируем текущую конфигурацию ядра в конфигурационный файл:
cp -v /boot/config-$(uname -r) .config && ls -lah
Адаптируем текущую конфигурацию к новому ядру, выполнив следующую команду:
yes "" | make oldconfig
Команда «yes ""» необходима для принятия новых опций, поставляемых свежим ядром, по умолчанию.
Далее запускаем инструмент для конфигурации параметров ядра:
make menuconfig
Драйвер для контроллера беспроводной сети, установленного в моем ноутбуке (Realtek Semiconductor RTL8852BE PCIe 802.11ax), был добавлен в версию ядра 6.2. Нужно включить его в сборку, перейдя по следующему пути: Device Drivers - Network Device Support - Wireless LAN - Realtek Devices - Realtek 802.11ax. Помимо включения в сборку данного драйвера, никаких изменений я не вносил. В случае, если вам необходимы какие-либо драйверы для вашего оборудования - изучите содержимое инструмента и внесите соответствующие изменения. После этого сохраняем конфигурацию и выходим.
На всякий случай очищаем директорию от всех файлов, полученных в результате компиляции следующей командой:
make clean
Вывод будет пустой, если ничего лишнего мы не тыкали. В случае, если возникнут ошибки при компиляции ядра или его модулей, данной командой можно очистить директорию и откатить изменения.
Далее узнаём, сколько у нас в распоряжении потоков процессора:
nproc
В моем случае их 16. Для распараллеливания компиляции ядра и его модулей я выделю 12, что достаточно ускорит процесс.
Запустим следующую команду, чтобы скомпилировать ядро:
make bzImage -j 12
По завершении компиляции ядра, скомпилируем его модули:
make modules -j 12
Данный процесс занимает много времени в зависимости от мощности процессора и количества выделенных для компиляции потоков. У меня компиляция модулей заняла в районе 20 минут.
По завершении предыдущего шага, установим скомпилированные модули:
make modules_install -j 12
И, наконец, установим скомпилированное ядро:
make install
Ура, мы на полпути. Добавим в конфигурацию загрузчика GRUB (/etc/default/grub) строки, для сохранения выбранного нами ядра операционной системы:
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
Обновим конфигурацию загрузчика и перезапустим систему:
update-grub && reboot
Установка прошивок
Установим от root пакет sudo, создадим файлик в директории /etc/sudoers.d и предоставим нашему основному пользователю возможность получения привилегированных прав на выполнение команд.
su - root
apt install sudo
echo "user ALL=(ALL:ALL) ALL" > /etc/sudoers.d/myconf
exit
Далее установим пакеты со всеми возможными прошивками:
sudo apt install firmware-linux firmware-linux-free firmware-linux-nonfree firmware-misc-nonfre
Также установим прошивку микропрограммного процессора и прошивку для встроенной графики:
sudo apt install amd64-microcode firmware-amd-graphics
В случае с внутрянкой от Intel:
sudo apt install intel-microcode
Установка графического интерфейса
Выполним следующую команду для установки графического интерфейса и некоторых мастхэв пакетов:
sudo apt install kde-plasma-desktop xdg-desktop-portal-kde kde-spectacle kate ark gparted gwenview elisa print-manager kcalc ksystemlog
После этого перезагружаем операционную систему, становимся довольными линуксятами и идем пользоваться самым лучшим дистрибутивом с самой красивой графической оболочкой.
Дополнительные необязательные действия
Вы можете установить следующие полезные для работы пакеты:
sudo apt install vlc qbittorrent remmina thunderbird filezilla htop krita inxi imagemagick
Почитать про каждый из них можно здесь.
Также можете изменить конфигурацию в файле /etc/network/interfaces, чтобы передать управление интерфейсами Network Manager. Для этого необходимо привести его к следующему виду:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
После этого сохранить изменения, и перезапустить службы:
sudo service networking restart
sudo service NetworkManager restart
Заключение
Покупая ноутбук или персональный компьютер на железе последнего поколения, вы точно столкнётесь с багами и отсутствием драйверов. Велик шанс разочароваться в Linux уже на этапе развертывания дистрибутива. При описанном методе установки Debian, за двое суток активной работы не было ни одного непредвиденного выключения или отвала Wi-Fi модуля. Некритичные баги графического интерфейса, которые я связываю с тестовой версией дистрибутива, на непрерывность работы и производительность системы не влияют. ACPI-ошибки, появляющиеся в dmesg после подключения и отключения кабеля питания в физический интерфейс, на работу также не влияют.
Автор:
feld1meow