Непопулярный метод установки Debian GNU/Linux или готовим свежий фарш

d8c84db627c4c5d16f802aae501bb759.jpg

Статья предназначена для линуксят, столкнувшихся с проблемами при установке дистрибутива 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

В моем случае после перезагрузки заработала клавиатура ноутбука. Если у вас тоже ноутбук с разрешением 3200×2000, то вы поймете, какое это счастье.

Конфигурация и компиляция ядра 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

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

Демонстрация графической оболочки KDE Plasma

Демонстрация графической оболочки KDE Plasma

Дополнительные необязательные действия

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

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 после подключения и отключения кабеля питания в физический интерфейс, на работу также не влияют.

© Habrahabr.ru