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

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

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

Комментарии (29)


  1. AlexGluck
    20.05.2023 22:26
    +12

    А если поставить последний релиз федора, у вас всё заработает из коробки. Но это мелочи)


    1. lealxe
      20.05.2023 22:26
      +4

      Это да, я бы для такого железа тоже советовал свежак вроде последней Федоры.

      Хотя OpenMandriva ROME тоже может подойти, она чуть менее красношляпная (кроме того, что вообще rpm-дистр), но вполне ня. Или Mageia.

      Или, блин, все что угодно последнее и не заброшенное, кроме стабильного Дебиана ...


      1. AVX
        20.05.2023 22:26

        О, ееее... Хоть кто-то кроме меня упомянул Mageia Linux.

        До сих пор на 7й версии сижу. Вроде 9я уже должна выйти, как оно там? Есть отзывы по ней?


        1. lealxe
          20.05.2023 22:26

          Про 9 не могу сказать, 8 какое-то время назад пробовал.

          Душой я между Mageia и Funtoo, но телом, увы, на Void.


    1. filippov70
      20.05.2023 22:26

      Я 2 раза так делал. Фёдора выручает.


    1. Praksitel
      20.05.2023 22:26

      У меня всегда на странном железе из коробки работала опенсуся.


    1. nihi1ist
      20.05.2023 22:26

      Не заработает. Недавно только пытался накатить на новенький HP с Ryzen 7-го поколения. Оболочка запустилась. Но с Wi-Fi были танцы. А в логах была ругань на драйвера Wi-Fi, Bluetooth и пр.


      1. AlexGluck
        20.05.2023 22:26

        Да, это было ожидаемо) Но я не стал портить впечатление от такого яркого заявления что на линуксе всё из коробки работает)


  1. 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


    1. kai3341
      20.05.2023 22:26
      +9

      Вспоминается цитата с сайта-которого-больше-нет (почему-то):

      #: Всего пара `make install`, и ваша бубунта превращается

      #: превращается

      #: в сраку!

      :# *слаку

      Давайте не будем превращать системы в пакетным менеджером в слаку или что похуже :)


      1. garwall
        20.05.2023 22:26
        +3

        Скажу как слаковод с большим стажем - тут тоже никто не делает make install.


    1. zkutch
      20.05.2023 22:26
      +3

      или как минимум CheckInstall ..


  1. kai3341
    20.05.2023 22:26

    На одной моей железяке дикие проблемы с wifi модулем (mediatek), который на старых ядрах работает примерно никак (соответственно, никакой установки невозможно провести). Поэтому пытаюсь bookwork ставить. RC2 был полной тыквой, RC3 загрузил только вчера и ещё не тестировал


    1. quarus
      20.05.2023 22:26

      Я обычно ищу модули ядра разработчиков-энтузиастов на GitHub-е. До сих пор обновляю модуль для мощного WiFi свистка от Asus на Realtek 8812au.


  1. Porfel
    20.05.2023 22:26
    -11

    Камон!!! Вот я, как аккаунт из прошлого - расскажу, как это сейчас. Никому не нужно ставить дебиан, вообще никому! Облака же есть, ИааС! Нужны мартышки, которые вместо всех этих изысканий, вместо того, чтоб дать 10-20 комманд в консоль - напишут YAML. Такой ямол, в котором,чтоб 5 переменных скрыть - будет примерно 300 строк фильтров и арогсиди в придачу. Потому что за 5 строк в консоли - денег не заплатят, а за DEVOPS (нет, на самом-то деле, извратили) - да, заплатят.


    1. vikarti
      20.05.2023 22:26
      +3

      Я же правильно понимаю что, раз разговоры про облака в контексте пользовательской машины а не сервера, то речь про запуск в облаке пользовательской машины а на клиенте только терминал?
      А можно уточнить — как, в случае того ноутбука что у автора подключится к облаку? либо хотя бы что брать то как терминал?
      И собственно где у нас дешевые облачные виртуалки с реально низким пингом берутся? И по какому протоколу подключатся чтобы он работал всегда на любом канале связи и не жрал много трафика?


      1. aGGre55or
        20.05.2023 22:26
        +6

        Насколько я понял камрада, это был сарказм.


  1. gumanzoy
    20.05.2023 22:26
    +4

    Можно установить ядро 6.3.2-1~exp1 из репозитория experimental. CONFIG_RTW89_8852BE=m включен

    А можно собрать драйвер lwfinger / rtw89 с GitHub и для более старых версий ядра.


  1. NikaLapka
    20.05.2023 22:26
    +14

    Подождите, т.е. Вы устанавливаете Debian stable на новое железо и оно не работает? Не Fedora, не Ubuntu, а Debian..


    1. 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 во всех отображениях.


  1. quarus
    20.05.2023 22:26
    +2

    Можно было сразу установить testing (сейчас это bookworm), без лишних манипуляций. У меня на БУК- е всегда testing (текущий Acer Swift 3, Rizen 7).

    В репах везде заменить bookworm на testing и будет роллинг-релиз любимого дистрибутива со свежими пакетами. Testing иногда (редко) может крашиться, но некритично и это не даёт расслабляться. Не советую в продакшн, т.к. там некогда заниматься ремонтом и ПО не всегда выпускают для testing. С приходом опыта, эти неприятности стремятся к 0. Свой bookworm я не разу не ремонтировал, а скоро он станет стабильным...


  1. 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/


    1. VADemon
      20.05.2023 22:26

      Как альтернатива - втыкаем простую сетевую карту USB с поддержкой в любом ядре

      Как альтернатива - мобильный с включенной раздачей интернета по USB (tethering). Ещё через ИК-порт работало.


  1. rootdefault
    20.05.2023 22:26
    +3

    Зачем брать дистрибутив, заточенный многими умными головами под проверенную стабильность (это касается и железа - проверенного временем) и прикручивать потом к нему не стабильное ядро? Проще тогда уж Арч взять ;)


    1. feld1meow Автор
      20.05.2023 22:26

      Переходим в директорию /usr/src и скачиваем архив с последней стабильной версией ядра с официального сайта:

      Эмммм, где вы видите нестабильное ядро? У релизов Debian идет лаг в две версии с ядром, вот и прикручиваем.


  1. skepticalpatient
    20.05.2023 22:26

    По картинке подумал, что будет описываться установка RC 12-ого Дебиана.

    Debian 12 выйдет, кстати, совсем скоро, 10 июня.

    https://www.opennet.ru/opennews/art.shtml?num=59050


  1. r1nk7
    20.05.2023 22:26

    Даже при условии, что Ubuntu является нечто следующей версией Debian, будучи основанной на нём, я бы крайне рекомендовал первое, как наиболее стабильное решение для большего спектра многообразия железа и софта - Ubuntu имеет большую доступность ПО, имеет большую стабильность в купе с более частыми важными обновлениями безопасности и ПО в целом, а также имеет больше совместимости с платформами, а соответственно больше и ПО, и всеми любимых игр. И ко коммьюнити, наверное, Ubuntu будет отличаться в лучшую сторону. А может и нет :)


    1. feld1meow Автор
      20.05.2023 22:26

      А может и нет :)

      Это необходимо учитывать, начиная с самого начала комментария?

      я бы крайне рекомендовал первое, как наиболее стабильное решение

      Забавно))) Вы, видимо, кроме браузера ничем и не пользуетесь.


  1. 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`