Xen не дружит с прошивкой firmware-amd-graphics на Debian 10
Доброго времени суток, лорчане и лорчанки.
Недавно я поставил 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