Не удается получить разрешение 1440×900 с GRUB2, хотя vbeinfo говорит, что оно доступно.

Вопрос или проблема

Я пытаюсь использовать GRUB2 в графическом режиме с разрешением 1440×900, но результат – это всегда искаженные символы: максимальное разрешение, которое я могу получить, это 1280×800.

Поиск в Google показал, что пока vbeinfo перечисляет разрешение, GRUB2 может его использовать. Это не кажется правдой: vbeinfo говорит, что 1440×900 доступно, но это не работает.

Проверка на командной строке GRUB2:

set gxfmode=1440x900
terminal_output gfxterm
# -> искаженные символы

# возврат к проверенному 640x480
terminal_output console

Графическая карта – Intel GM965.

После загрузки Linux буфер кадров переключается на 1440×900.

Добавлено после ответа epheminent и различных экспериментов

vbeinfo перечисляет два набора режимов.

Первый набор идет от 0x160 до 0x16b с разрешениями 768×480, 960×600, 1280×800 и 1440×900

Затем – после ряда только текстовых режимов – второй набор, содержащий разрешения 1024×768, 800×600 и 640×480

Первый набор режимов не изменяется с помощью 915resolution. Все они работают, кроме 1440×900.

Разрешение режимов во втором наборе можно изменить с помощью модуля / команды 915resolution, доступной в GRUB2 >= 1.99.

# в /boot/grub/grub.cfg

insmod 915resolution

# 30, 32, 34 все работают для меня: единственное, что меняется, это какие режимы изменяются
915resolution 30 1440 900

# установка невозможного разрешения меняет режим на "только текст"
# в моем случае 1280x1024 не поддерживается
915resolution 30 1280 1024

Очевидно, 1440×900 должен просто работать: добавление его с помощью 915resolution – это просто обходной путь.

Существует модуль 915resolution, который позволяет GRUB 2 включать нестандартные разрешения Intel. Он основан на пользовательском пространстве 915resolution, который добавляет записи VBE в реальном времени для этих разрешений; они недоступны из BIOS.

Ответ или решение

Если у вас не получается установить разрешение 1440×900 в GRUB2, хотя команда vbeinfo заявляет, что оно доступно, причиной может быть несколько факторов. Ваша проблема заключается в том, что интерфейс текстовой графики (gfxterm) GRUB не может стандартно отобразить это разрешение, в то время как система после загрузки ядра Linux успешно переключает framebuffer на 1440×900.

Теоретическое обоснование

GRUB2 предоставляет интерфейс для установки графических режимов через поддержку VESA BIOS Extensions (VBE). Это позволяет GRUB отображать различные разрешения, если они поддерживаются видеоадаптером BIOS. Команда vbeinfo, выполняемая из командной строки GRUB, показывает список всех графических режимов, поддерживаемых вашим оборудованием на уровне BIOS.

Однако наличие разрешения в этом списке не гарантирует его корректную работу в любой конкретной реализации, такой как ваш графический чипсет Intel GM965. Это может быть связано с различиями в драйверах, прошивках BIOS или даже особенностями работы самого GPU в режиме VBE. Более того, не все интегрированные графические процессоры одинаково поддерживают все предусмотренные разрешения.

Пример из практики

Ваш случай описывает, что vbeinfo возвращает несколько графических режимов, включая 1440×900. Однако при попытке настройки этого разрешения через GRUB2 вы получаете нечитабельное изображение. Другие упомянутые разрешения, такие как 1280×800, работают исправно. Возможно, это происходит из-за особенностей работы Intel GM965 в сочетании с BIOS вашей материнской платы.

Для решения, вы попытались использовать модуль 915resolution. Этот модуль позволяет изменять записи VBE в BIOS на несистематические разрешения, специфические для некоторых графических процессоров Intel, таких как ваш. Хотя это не является "чистым" решением, оно может помочь обойти некоторые ограничения системного BIOS, добавляя желаемое разрешение на уровне VBE.

Применение на практике

Решение с использованием 915resolution:

  1. Настройка GRUB2 с 915resolution: Вы уже добавили модуль 915resolution в /boot/grub/grub.cfg. Продолжайте использовать эту стратегию, параметризуя вызов модуля для изменения конкретных VBE режимов до требуемого разрешения 1440×900.

  2. Использование 915resolution:

    insmod 915resolution
    915resolution 30 1440 900

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

  3. Альтернативное решение: Если модуль 915resolution не достаточно стабилен или предъявляет недостатки, вы можете попробовать обновить BIOS до последней версии. Иногда обновления BIOS содержат улучшения совместимости видеорежимов.

  4. Настройки ядра Linux: Убедитесь, что в конфигурации загрузки ядра вашего Linux описаны параметры для framebuffer, которые учитывают требуемое разрешение. Например, используйте параметры ядра video=1440x900 для принудительной установки данного разрешения.

Итоговые рекомендации включают в себя использование модуля 915resolution в качестве временного обходного пути для решения проблемы, параллельно с исследованием обновления версии прошивки BIOS и тщательной конфигурации параметров загрузки ядра Linux. Эти шаги вместе помогут обеспечить работоспособность требуемого разрешения в условиях входных параметров вашего оборудования и системы.

Оцените материал
Добавить комментарий

Капча загружается...