LINUX.ORG.RU

Xen не дружит с прошивкой firmware-amd-graphics на Debian 10

 , , , ,


0

1

Доброго времени суток, лорчане и лорчанки.

Недавно я поставил Xen на свой ноут с Debian 10 Buster и решил поиграть в сеньор-дева решений виртуализации enterprise-класса. Я понял, что проиграл, когда после запуска системы в качестве dom0 внутри Xen обнаружил, что у меня отвалился X-сервер. И startx, и xinit, и init 5, и много других способов стартовать Иксы заканчивались ничем. startx, например, просто возвращал информацию о том, что надо немного подождать, пока X-сервер не начнёт принимать соединения, а по истечению некоторого времени просто оставлял все попытки родить оболочку с ошибкой Connection refused.

К счастью, клавиатура не отвалилась и я смог собрать немного инфы о своей проблеме через утилиты типа lspci и lsusb. Вот какие странности я обнаружил сразу после этого:

  • Сеть в dom0 отсутствует - dmesg даже ругается, что link not ready для ipv6;
  • lspci вешает dom0. Намертво. Не помогает даже отправка SIGINT в терминал. При загрузке ванильного Дебиана без гипервизора такого не возникает;
  • lsusb возвращает идентичный вывод как внутри гипервизора, так и вне его;
  • upower –dump вешает dom0 на некоторое время, возвращая затем ошибку о том, что какая-то из служб systemd не работает. Как вы уже могли догадаться, без гипервизора всё работает замечательно;
  • reboot, halt, shutdown и poweroff просто вешают систему после ввода этих команд, так что вырубить ноут можно только силой, нажав на кнопку питания.

Но самое вкусное - lsmod внутри Xen dom0 показывает на пару десятков меньше загруженных драйверов, чем вне его. Если вы ещё не поняли масштаб трагедии - в Qubes OS, стоящей на соседней машинке, при загрузке в окружение с Зеном выключаются разве что драйвера от другого гипервизора - KVM, но в моём Дебиане в астрал уходит, похоже, вообще всё, что может туда уйти. После такого неудивительно, что система адски лагает - драйвера-то не работают.

В попытках решить эту проблему я перечитал гору документации к Xen и кучу логов dmesg, даже написал в рассылку xen-users, но и там никто не подсказал мне, как решить эту проблему. Я нашёл несколько юзеров с похожими проблемами с X-сервером на сайтах типа Stackoverflow и на форуме Gentoo, но их решения либо не сработали на моей системе, либо решали немного другой косяк, где логи dmesg и xorg явно указывали на проблему. В данном случае чтение логов мне не помогло.

Плюнув, я решил просто на всякий случай переустановить Xen, добавив в sources.list пакеты contrib и non-free… и оно заработало! Я смог получить доступ к сети изнутри dom0, а lspci корректно вывел информацию о девайсах на шине!

Правда, Иксы так и не завелись.

К счастью, в этот раз они выдали другую ошибку - no screens found. Пару дней назад у меня была аналогичная проблема, и я исправил её, скачав пакет firmware-amd-graphics и сгенерировав новый xorg.conf, где заменил все упоминания amdgpu на radeon. Пакет firmware-amd-graphics я потом удалил, потому что всё работало и без него. Я вошёл в обычный Дебиан без Xen и сделал всё то же самое, убедился, что иксы успешно стартуют и, счастливый, перезагрузился в зеновский dom0, уже предвкушая, как буду ставить Винду в HVM, чтобы играть в GTA 5 без костыля в виде Вайна…

Угадайте, что я обнаружил после того, как загрузился в Xen. Мою отвисающую челюсть было очень непросто удержать от падения на пол.

После установки прошивки, в dom0 вновь отвалились Иксы и куча драйверов. Команда upower опять не работала так, как надо, а lspci вновь стал намертво вешать систему.

Между тем, в окружении без Xen, в ванильном Дебиане всё работает как часы.

Я грешил на то, что как-то неправильно поставил гипервизор, думал, что он почему-то не даёт некоторым драйверам загрузиться и поэтому не всё работает так, как надо, думал, что надо будет пересобрать проблемные драйвера и проблема решится сама собой. В какой-то момент я даже подумал, что это, должно быть, редкий баг в Зене или Дебиане, или что Зен, возможно, просто не совместим с моим железом. Но всё оказалось куда проще: прошивка AMD порезала мой dom0. А после того, как я переустановил Зен, он уничтожил то, что от неё осталось после того, как я её удалил, и поэтому у меня второй раз за неделю упали Иксы на ванильном Дебиане.

Я банально не знаю, как решить эту проблему. Во время установки пакетов apt пишет, что отсутствует прошивка для amdgpu. Ранее он жаловался на отсутствие таковой для radeon, но, поскольку я уже понял, к чему приводит её установка, я, пожалуй, воздержусь от установки ещё одной, чтобы не сломать всё окончательно. Ещё я заметил, что и установка Зена, и установка прошивки создаёт новый initrd с помощью update-initramfs. Я подозреваю, что, возможно, новый рамдиск создаётся криво, и Зен не может загрузить все модули, рожая в ответ такие фокусы. Тем не менее, я всё ещё не до конца уверен в том, что происходит, и боюсь лишний раз повредить что-нибудь своими неумелыми действиями. В общем, что делать? С меня как обычно.

Linux Debillian-Dev 4.19.0-11-amd64 #1 SMP Debian 4.19.146-1 (2020-09-17) x86_64 GNU/Linux

Xen 4.11

Ответ на: комментарий от Artamudo

Да чёрт его знает. Тут уже был на форуме один парень с проблемами с initrd и прошивкой (Как починить update-initramfs который ломает загрузку фирмварей amdgpu), да и, в целом, говорят, на Дебилиане update-initramfs глючит адово. Я попробую поиграться ещё с дровами и вручную рамдиск попилить, если не поможет - свалю просто на Арч, мне не жалко. Жалко будет, если и на Арче ничерта не заведётся - хотелось в юникернелы поиграть(

imanesku ()
Ответ на: комментарий от anonymous

Я не очень хочу (на самом деле хочу) разводить тут холивары, так что скажу просто, что:

  1. Xen - самостоятельный гипервизор, имеющийся как на x86_64, так и на ряде других платформ. KVM привязан исключительно к Линуксу и поэтому такой фичей похвастаться не может;
  2. Xen на порядок производительнее KVM, вплоть до вынесения драйверов железа из dom0 в отдельные микро-виртуалки, driver domains, для ускорения вычислений;
  3. Xen на порядок безопаснее KVM:
    • Он не привязан к огромному раздутому пингвиньему ядру, от которого KVM наследует все возможные баги, уязвимости и прочие неприятности;
    • Xen изолирует QEMU в отдельных лёгких виртуальных машинах, stub domains, для усложнения побега из виртуалки при наличии уязвимости внутри QEMU. В 2020 году KVM для изоляции QEMU не умеет использовать ничего, кроме SELinux;
    • В виртуалках с поддержкой PVH эмуляция QEMU уже не используется, а скоро включат поддержку PVHv2, благодаря которой можно будет пробрасывать девайсы PCI без необходимости использовать кемувский I/O - ещё один плюс в пользу безопасности и производительности;
  4. У Xen шире экосистема. Его развивает множество людей, разрабатывающих как свободное, так и проприетарное ПО. Один из ярких примеров - создание разрабами Qubes OS vchan, библиотеки для взаимодействия между виртуальными машинами, которая потом была позаимствована и доведена до ума разработчиками гипервизора, и графического драйвера, позволяющего без использования RDP/VNC/форвардинга X11 и проброса видеокарты в не-PV виртуалку иметь доступ к её GUI и окнам приложений, которые она рисует. KVM, тем временем, не обновлялся с 2012 года.

Поэтому мне очень срочно необходимо решить проблем с ломанием Зена иксами и наоборот.

imanesku ()
Ответ на: комментарий от imanesku

Xen - самостоятельный гипервизор, имеющийся как на x86_64, так и на ряде других платформ

Как и KVM

Xen на порядок производительнее KVM

Ложь.

Xen на порядок безопаснее KVM

Ложь

Он не привязан к огромному раздутому пингвиньему ядру, от которого KVM наследует все возможные баги

Что? KVM - гипервизор первого типа, как и XEN. Что он там наследует от ядра? Пример такого бага.

У Xen шире экосистема.

У тебя в dom0 иксы не работают. Потому что это надо тебе и ещё 1.5 человекам. Какая там экосистема? Это как раз KVM используется во многих enterprise-решениях.

Black_Shadow ★★★★★ ()
Ответ на: комментарий от imanesku

1. KVM есть и в SmartOS, правда щас там усиленно портируют bhyve, т.к. он более путёвый для них оказался.
2. ну это ты загнул.. на порядок.. по производительности у них +- паритет.
3. опять на порядок загнул =), багов и там и там полно.
4. ну у кого шире я не мерил, а то что KVM используется шире это факт..

Minona ()

Причина проблемы найдена

Да, я был прав по поводу рамдиска.

Установка firmware-amd-graphics переписывает рамдиск, что портит его состояние, и тогда Зен падает намёртво. Однако при установке Зена без запущенного radeon, dom0 спокойно загружает все модули ядра, которые загружает также обычный Дебиллиан в привычном ему окружении без гипервизора. [user]Thero[/user], как видишь, Зен спокойно дружит с моим железом и поддерживает все дрова, просто что-то ломает рамдиск и не даёт спокойно использовать систему. Пойду дальше маны курить, короче. Не поможет правка рамдиска - снесу Дебиан, попытаю счастья на Арче)

imanesku ()
Ответ на: комментарий от anonymous

Второго

https://en.wikipedia.org/wiki/Hypervisor

The distinction between these two types is not always clear. For instance, Linux's Kernel-based Virtual Machine (KVM) and FreeBSD's bhyve are kernel modules[7] that effectively convert the host operating system to a type-1 hypervisor.[8] At the same time, since Linux distributions and FreeBSD are still general-purpose operating systems, with applications competing with each other for VM resources, KVM and bhyve can also be categorized as type-2 hypervisors.

Black_Shadow ★★★★★ ()
Ответ на: комментарий от imanesku

А еще на линуксе чисто линуксовые драйвера виндузятник. Запусти вейланд сессию и прекрати копошить мозг людям. Всем насрать что там в дебиане сломано. Об этом надо сообщать разработчикам дистрибутива.

anonymous ()
Ответ на: комментарий от imanesku

втирает про безопасность

библиотеки для взаимодействия между виртуальными машинами

остальной бред поскипал. статистика корреляции дурачков с анимешными аватарами пополняется с неимоверной скоростью

У Xen шире экосистема. Его развивает множество людей, разрабатывающих как свободное, так и проприетарное ПО

Не поможет правка рамдиска - снесу Дебиан, попытаю счастья на Арче

вот она - вся мощь развитой экосистемы. от xen даже оракл отказался, хотя они с самого начала топили за него и oracle vm для х86 был на ксене до недавних пор, как и citrix в своих продуктах давно продвигает kvm, а не xen

anonymous ()
Ответ на: комментарий от anonymous

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

imanesku ()

Solved

Мда.

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

Вот тут-то я и заметил, что при загрузке в Зен ядро в какой-то момент вываливает содержимое регистров и следующий за ними стектрейс! Я написал об этом одному из своих друзей-никсоводов, мол, что за дела, и я даже не поверил ему сначала, когда он сказал, что у меня случился kernel oops. У меня в голове не укладывалось - да ну, какие упсы, Дебиан же, стабильность, ядро вообще LTS, что в принципе может пойти не так?.. И первая же dmesg | grep oops напомнила мне, сколько нам открытий чудных готовит просвещенья дух!

Я загуглил эту ошибку. Оказалось, что она давно решена, и в ядре 4.20 этот баг уже отсутствует. Угадайте, какое ядро у меня? 4.19. Почему? Потому что Дебиан, ёпта, стабильность!

В целом, я не сильно был удивлён тому, что произошло, потому что до этого читал Совершенный код МакКоннелла (замечательная книга, кстати, понравится даже людям, которые не занимаются программированием), и одна из частей главы про отладку была посвящена её психологическим аспектам - «вы видите только то, что ожидаете увидеть». Я уже несколько раз замечал, как содержимое регистров вываливается в dmesg. Я видел подобное поведение и на другой, более привычной мне, машине с Xen. Она, тем не менее, работала без сбоев, поэтому я подумал, что это нормально, и просто игнорировал эту оплошность до последнего. И только сегодня я подумал, что что-то может быть не так, залез в логи, обнаружил то, чего совсем не ожидал там увидеть, и понял, что проблема, докучавшая меня последние несколько дней, уже давно решена, а я потратил трое или четверо суток на борьбу с ветряными мельницами. Мне не стыдно за то, что я чего-то не знал о Линуксе или Зене, потому что я и так каждый день узнаю что-то новое; мне стыдно за то, что я повёлся на такую банальнейшую ловушку восприятия, потому что был в курсе об её существовании.

В общем, пойду себе Арчик накатывать, там-то 5.9 уже. Построю свой дистрибутив с блэкджеком и шлюхами, и чтоб Xen нормально работал. KVM, кстати, от отсутствия в Debian Stable свежего ядра не перестаёт быть шлаком, но это уже совсем другая история :^)

imanesku ()