Вопрос или проблема
Я собрал индивидуальный сервер, используя Ubuntu 22.04 с материнской платой B650D4U, которая поддерживает процессоры Ryzen, и он работал идеально. Затем я обновился до Ubuntu 24.04, и вывод видеосигнала (который осуществляется через порт VGA) перестал работать при использовании поставляемого ядра (6.8.0). Загрузка установки Ubuntu 24.04 со старым ядром (5.15.0) позволяет системе загрузиться.
При загрузке с новым ядром GRUB работает, и затем экран становится пустым. Никакие манипуляции с параметрами grub не решают проблему (я попробовал множество различных опций, таких как nomodeset, text, различные vga=).
(Поскольку у меня есть работающий сервер, я могу загрузить новое ядро и получить доступ к системе через ssh)
Сравнивая наборы модулей, загруженных между ядрами, я заметил, что старое ядро не загружало модуль amdgpu, тогда как новое ядро загружало модуль amdgpu и его зависимости — однако внесение amdgpu и его зависимостей в черный список не решило проблему.
(В обоих ядрах), lspci | grep “VGA” выводит –
07:00.0 VGA совместимый контроллер: ASPEED Technology, Inc. ASPEED Graphics Family (rev 52)
0d:00.0 VGA совместимый контроллер: Advanced Micro Devices, Inc. [AMD/ATI] Raphael (rev c4)
Вывод команды “grep ast ” для dmesg из нового ядра:
[ 3.400553] ast 0000:07:00.0: vgaarb: отключить консоль vga
[ 3.400648] ast 0000:07:00.0: Используется конфигурация по умолчанию
[ 3.400650] ast 0000:07:00.0: Обнаружен AST 2600
[ 3.400680] ast 0000:07:00.0: [drm] Используется передатчик ASPEED DisplayPort
[ 3.400681] ast 0000:07:00.0: [drm] dram MCLK=396 МГц type=1 bus_width=16
[ 3.400815] [drm] Инициализирован ast 0.1.0 20120228 для 0000:07:00.0 на минорном 0
[ 3.401642] ast 0000:07:00.0: [drm] fb0: astdrmfb устройство кадрового буфера
Сравнивая с выводом старого рабочего ядра:
[ 5.675314] ast 0000:07:00.0: [drm] P2A мост отключен, используется конфигурация по умолчанию
[ 5.675316] ast 0000:07:00.0: [drm] Обнаружен AST 2600
[ 5.675320] ast 0000:07:00.0: [drm] Только аналоговый VGA
[ 5.675321] ast 0000:07:00.0: [drm] dram MCLK=396 МГц type=1 bus_width=16
[ 5.675531] [drm] Инициализирован ast 0.1.0 20120228 для 0000:07:00.0 на минорном 0
[ 5.753840] fbcon: astdrmfb (fb0) — основное устройство
[ 5.753900] ast 0000:07:00.0: [drm] fb0: astdrmfb устройство кадрового буфера
Команда “dmesg | grep “vgaarb” на обоих ядрах вывела следующее (с важным исключением последней строки, о чем говорится ниже) –
[ 0.532715] pci 0000:07:00.0: vgaarb: установка в качестве устройства VGA при загрузке
[ 0.532715] pci 0000:07:00.0: vgaarb: управление мостом возможно
[ 0.532715] pci 0000:07:00.0: vgaarb: устройство VGA добавлено: decodes=io+mem, owns=io+mem, locks=none
[ 0.532715] pci 0000:0d:00.0: vgaarb: управление мостом возможно
[ 0.532715] pci 0000:0d:00.0: vgaarb: устройство VGA добавлено: decodes=io+mem, owns=none, locks=none
[ 0.532715] vgaarb: загружен
[ 5.741803] ast 0000:07:00.0: vgaarb: отключить консоль vga
Я предполагаю, что проблема связана с первой строкой нового ядра, и исправление этого исправит проблему –
[ 3.400553] ast 0000:07:00.0: vgaarb: отключить консоль vga
Поскольку эта система является сервером в дата-центре, и поскольку большинство серверов используют VGA для вывода, мне действительно нужен вывод по VGA, чтобы, если что-то пойдет не так, я не столкнулся с дальнейшими проблемами из-за невозможности увидеть вывод консоли. (Кроме того, кажется, что консоль KVM передает свои данные через устройство ASPEED VGA — что неудивительно, так как устройство ASPEED VGA, как я понимаю, является частью BMC)
Может ли кто-нибудь помочь мне с этим? (Я полагаю, я спрашиваю, как я могу предотвратить отключение консоли vgaarb для устройства ast?)
Ответ или решение
Проблема загрузки новых ядер Linux с несколькими VGA-адаптерами (ASPEED и AMD)
Введение
Проблема, с которой вы столкнулись, связана с загрузкой новых ядер Linux в среде с несколькими VGA-адаптерами, что может быть сложно на уровне конфигурации. Как IT-специалист, важно проанализировать различные аспекты, которые могут привести к проблеме с выводом видео на сервере, использующем материнскую плату B650D4U и видеокарты ASPEED и AMD.
Описание проблемы
Вы сообщили, что после обновления до Ubuntu 24.04 и использования ядра 6.8.0, вывод видео через VGA порт перестал работать. Система загружается без проблем с ядром 5.15.0, что указывает на наличие проблемы, вероятно, связанной с управлением видеовыходом в более новом ядре.
При загрузке с новым ядром GRUB загружается, но затем экран становится черным. Попытки изменения параметров GRUB, таких как nomodeset
и различные опции vga=
, не дали результатов. Это говорит о том, что проблема может быть глубже, чем просто конфигурация запуска.
Анализ загружаемых модулей
Сравнение загружаемых модулей между работоспособным старым ядром и новым показало, что новейшее ядро загружает модуль amdgpu
и его зависимости. Чёрным списком исключение модуля amdgpu
не решило проблему, что указывает на то, что новейшая версия ядра не корректно управляет взаимодействием между двумя видеоконтроллерами.
Вывод команды lspci
Вывод команды lspci | grep "VGA"
:
07:00.0 VGA совместимый контроллер: ASPEED Technology, Inc. ASPEED Graphics Family (rev 52)
0d:00.0 VGA совместимый контроллер: Advanced Micro Devices, Inc. [AMD/ATI] Raphael (rev c4)
Вывод dmesg
В выводе команды dmesg | grep "vgaarb"
показано:
[ 0.532715] pci 0000:07:00.0: vgaarb: настройка vga устройства на загрузку
[ 0.532715] pci 0000:07:00.0: vgaarb: добавлен vga устройство: декодирует=io+mem, владеет=io+mem, блокировки=none
[ 0.532715] pci 0000:0d:00.0: vgaarb: добавлен vga устройство: декодирует=io+mem, владеет=none, блокировки=none
[ 3.400553] ast 0000:07:00.0: vgaarb: отключение vga консоли
Здесь вывод последних строк указывает на деактивацию консоли для ASPEED, что может быть причиной проблемы, так как это непосредственное вмешательство в работу вывода.
Решение проблемы
Существует несколько подходов к возможному решению данной проблемы:
-
Температура запрета модуля
amdgpu
: Если постоянное исключение модуля не дало результатов, попробуйте полностью удалить его, если это допустимо в вашем рабочем процессе. -
Конфигурация vgaarb: Изучите документацию по vgaarb для детального понимания управления видеовыходами. Необходимо убедиться, что приоритет назначения VGA не конфликтует с вашим устройством ASPEED.
-
Обновление или изменение параметров ядра: Попробуйте обновить ядро до более поздней версии, если такая имеется. Также проверьте наличие патчей, касающихся управления видеовыводами. Возможно, вам также стоит создать кастомную сборку ядра с отключенными модулями, создающими проблему.
-
BIOS/UEFI: Проверьте настройки BIOS/UEFI относительно приоритета VGA и отключения ненужных адаптеров, настроив продавца вашего серверного оборудования дополнительно.
-
Документация: Ознакомьтесь с официальной документацией и форумами сообщества Ubuntu. Это часто является сокровищницей знаний, где другие пользователи могут делиться опытом решения подобных проблем.
Заключение
Загрузка нового ядра Linux в системе с несколькими VGA адаптерами может быть непростой задачей. Важно следовать системному подходу к диагностике, начиная с анализа загружаемых модулей и заканчивая более глубокими конфигурациями BIOS и ядра. Учитывая, что ваша система в целом исправна, настоятельно рекомендую провести дополнительные исследования и тесты, чтобы добиться полноценной работы VGA вывода на вашем сервере.