Статья предназначена для линуксят, столкнувшихся с проблемами при установке дистрибутива 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-nonfree
Также установим прошивку микропрограммного процессора и прошивку для встроенной графики:
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 после подключения и отключения кабеля питания в физический интерфейс, на работу также не влияют.
Комментарии (29)
Cheater
20.05.2023 22:26+24Неканонично собираете ядро, голый "make install" чего бы то ни было в дистрибутивах с пакетным менеджером строго запрещён, тк установленные файлы не будут им контролироваться. В сборочных скриптах, поставляемых с исходниками ядра Linux, есть специальный makefile для сборки ядра и сопутствующих компонентов в виде deb пакетов, make deb-pkg. Подробнее https://debian-handbook.info/browse/stable/sect.kernel-compilation.html
kai3341
20.05.2023 22:26+9Вспоминается цитата с сайта-которого-больше-нет (почему-то):
#: Всего пара `make install`, и ваша бубунта превращается
#: превращается
#: в сраку!
:# *слаку
Давайте не будем превращать системы в пакетным менеджером в слаку или что похуже :)
garwall
20.05.2023 22:26+3Скажу как слаковод с большим стажем - тут тоже никто не делает make install.
kai3341
20.05.2023 22:26На одной моей железяке дикие проблемы с wifi модулем (mediatek), который на старых ядрах работает примерно никак (соответственно, никакой установки невозможно провести). Поэтому пытаюсь bookwork ставить. RC2 был полной тыквой, RC3 загрузил только вчера и ещё не тестировал
quarus
20.05.2023 22:26Я обычно ищу модули ядра разработчиков-энтузиастов на GitHub-е. До сих пор обновляю модуль для мощного WiFi свистка от Asus на Realtek 8812au.
Porfel
20.05.2023 22:26-11Камон!!! Вот я, как аккаунт из прошлого - расскажу, как это сейчас. Никому не нужно ставить дебиан, вообще никому! Облака же есть, ИааС! Нужны мартышки, которые вместо всех этих изысканий, вместо того, чтоб дать 10-20 комманд в консоль - напишут YAML. Такой ямол, в котором,чтоб 5 переменных скрыть - будет примерно 300 строк фильтров и арогсиди в придачу. Потому что за 5 строк в консоли - денег не заплатят, а за DEVOPS (нет, на самом-то деле, извратили) - да, заплатят.
vikarti
20.05.2023 22:26+3Я же правильно понимаю что, раз разговоры про облака в контексте пользовательской машины а не сервера, то речь про запуск в облаке пользовательской машины а на клиенте только терминал?
А можно уточнить — как, в случае того ноутбука что у автора подключится к облаку? либо хотя бы что брать то как терминал?
И собственно где у нас дешевые облачные виртуалки с реально низким пингом берутся? И по какому протоколу подключатся чтобы он работал всегда на любом канале связи и не жрал много трафика?
gumanzoy
20.05.2023 22:26+4Можно установить ядро 6.3.2-1~exp1 из репозитория experimental. CONFIG_RTW89_8852BE=m включен
А можно собрать драйвер lwfinger / rtw89 с GitHub и для более старых версий ядра.
NikaLapka
20.05.2023 22:26+14Подождите, т.е. Вы устанавливаете Debian stable на новое железо и оно не работает? Не Fedora, не Ubuntu, а Debian..
LuchS-lynx
20.05.2023 22:26У меня, кстати, обратная ситуация. На свежих дистрах линукс со свежим ПО, т.е. версиями видеодрайвера Nvidia, не работает проброшенная ноутбучная видеокарта gtx1660ti, за исключением, почему-то, Альт Линукс. Ветка Дебиана (он и его потомки) работает на старых драйверах 418-450включительно, все что старше отказывается запускаться. Хост работает на ProxMox'е, при этом в госте с Виндой проблем нет.
при загрузке выдает ошибку на pci_hp_register failed with error 16 для PCI bridge: QEMU PCI-PCI bridge 05:01.0-05:04.0, но на старых драйверах в Дебиан это не было проблемой. Повторюсь, в Альте, почему-то, этой ошибки в логах нет, в Федоре, Дебиане, Убунте, РедОС, Астре, Дипине, Манжаро, Гаруде - есть. Через пень колоду древняя Астра СЕ 2.12 работает на 470й версии драйвера, но при этом не может определить оборудование по имени и выдает ID во всех отображениях.
quarus
20.05.2023 22:26+2Можно было сразу установить testing (сейчас это bookworm), без лишних манипуляций. У меня на БУК- е всегда testing (текущий Acer Swift 3, Rizen 7).
В репах везде заменить bookworm на testing и будет роллинг-релиз любимого дистрибутива со свежими пакетами. Testing иногда (редко) может крашиться, но некритично и это не даёт расслабляться. Не советую в продакшн, т.к. там некогда заниматься ремонтом и ПО не всегда выпускают для testing. С приходом опыта, эти неприятности стремятся к 0. Свой bookworm я не разу не ремонтировал, а скоро он станет стабильным...
sub31
20.05.2023 22:26+1Способ конечно сложный и не совсем тривиальный, но относительно правильный. Как альтернатива - втыкаем простую сетевую карту USB с поддержкой в любом ядре и ставим тот же Дебиан в удобном для вас формате. А после установки прикручиваем https://packages.debian.org/experimental/linux-image-amd64
Ну и приходим приблизительной к той же ситуации. Есть конечно варианты с проблемами в дровах для видимокарты, но и они обычно решаемы. При этом средств для разработки требуется минимум.
Ну и ставить так можно любой любимый дистрибутив, лишь бы было, что-то уже собранное из нужной ветки ядра.
Любителям стабильных веток EL дистрибутивов может быть полезен проект http://elrepo.org/tiki/kernel-lt
Важно не унестись в перебирательство дистрибутивов, а выбрать, что-то одно. Разобраться в нем досконально и использовать компилятор только тогда, когда уже нет других вариантов. Есть множество проектов, которые уже проходили подобным путем и подготовили пакеты в бинарном виде. Важно понимать для чего эти пакеты и как их использовать.
Если есть желание поковыряться в Linux по серьезному, то есть интересная книжка https://www.linuxfromscratch.org/
VADemon
20.05.2023 22:26Как альтернатива - втыкаем простую сетевую карту USB с поддержкой в любом ядре
Как альтернатива - мобильный с включенной раздачей интернета по USB (tethering). Ещё через ИК-порт работало.
rootdefault
20.05.2023 22:26+3Зачем брать дистрибутив, заточенный многими умными головами под проверенную стабильность (это касается и железа - проверенного временем) и прикручивать потом к нему не стабильное ядро? Проще тогда уж Арч взять ;)
feld1meow Автор
20.05.2023 22:26Переходим в директорию /usr/src и скачиваем архив с последней стабильной версией ядра с официального сайта:
Эмммм, где вы видите нестабильное ядро? У релизов Debian идет лаг в две версии с ядром, вот и прикручиваем.
skepticalpatient
20.05.2023 22:26По картинке подумал, что будет описываться установка RC 12-ого Дебиана.
Debian 12 выйдет, кстати, совсем скоро, 10 июня.
https://www.opennet.ru/opennews/art.shtml?num=59050
r1nk7
20.05.2023 22:26Даже при условии, что Ubuntu является нечто следующей версией Debian, будучи основанной на нём, я бы крайне рекомендовал первое, как наиболее стабильное решение для большего спектра многообразия железа и софта - Ubuntu имеет большую доступность ПО, имеет большую стабильность в купе с более частыми важными обновлениями безопасности и ПО в целом, а также имеет больше совместимости с платформами, а соответственно больше и ПО, и всеми любимых игр. И ко коммьюнити, наверное, Ubuntu будет отличаться в лучшую сторону. А может и нет :)
feld1meow Автор
20.05.2023 22:26А может и нет :)
Это необходимо учитывать, начиная с самого начала комментария?
я бы крайне рекомендовал первое, как наиболее стабильное решение
Забавно))) Вы, видимо, кроме браузера ничем и не пользуетесь.
Johan_Palych
20.05.2023 22:26+6Ставим свежее ядро. Прочитать!
sudo cat <<EOF | sudo tee /etc/apt/sources.list.d/experimental.list deb https://deb.debian.org/debian experimental main contrib non-free non-free-firmware deb-src https://deb.debian.org/debian experimental main contrib non-free non-free-firmware EOF --- sudo /bin/sh -c "apt-get clean && sudo rm -rf /var/lib/apt/lists/* && apt-get update && apt-get dist-upgrade && apt-get autoremove && apt-get autoclean" apt list *linux-image* sudo apt install -t experimental linux-image-6.3.0-0-amd64 Для дальнейшего обновления пакетов из experimental sudo apt-get install apt-show-versions sudo apt-get install `apt-show-versions -u -b | grep experimental`
AlexGluck
А если поставить последний релиз федора, у вас всё заработает из коробки. Но это мелочи)
lealxe
Это да, я бы для такого железа тоже советовал свежак вроде последней Федоры.
Хотя OpenMandriva ROME тоже может подойти, она чуть менее красношляпная (кроме того, что вообще rpm-дистр), но вполне ня. Или Mageia.
Или, блин, все что угодно последнее и не заброшенное, кроме стабильного Дебиана ...
AVX
О, ееее... Хоть кто-то кроме меня упомянул Mageia Linux.
До сих пор на 7й версии сижу. Вроде 9я уже должна выйти, как оно там? Есть отзывы по ней?
lealxe
Про 9 не могу сказать, 8 какое-то время назад пробовал.
Душой я между Mageia и Funtoo, но телом, увы, на Void.
filippov70
Я 2 раза так делал. Фёдора выручает.
Praksitel
У меня всегда на странном железе из коробки работала опенсуся.
nihi1ist
Не заработает. Недавно только пытался накатить на новенький HP с Ryzen 7-го поколения. Оболочка запустилась. Но с Wi-Fi были танцы. А в логах была ругань на драйвера Wi-Fi, Bluetooth и пр.
AlexGluck
Да, это было ожидаемо) Но я не стал портить впечатление от такого яркого заявления что на линуксе всё из коробки работает)