Как установить разрешение в текстовых консолях (устранение неисправностей, когда любой vga=... не работает)

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

Это распространенный способ установки разрешения текстовых консолей (которые обычно доступны с помощью Ctrl-Alt-F1 через Ctrl-Alt-F6), используя параметр ядра vga=.... Я использую Ubuntu 10.04 Lucid, вывод uname -a следующий:

Linux  2.6.32-33-generic #70-Ubuntu SMP Thu Jul 7 21:13:52 UTC 2011 x86_64 GNU/Linux

Для определения доступных режимов я использую sudo hwinfo --framebuffer, который сообщает:

02: None 00.0: 11001 VESA Framebuffer                            
  [Created at bios.464]  
  Unique ID: rdCR.R1b4duaxSqA  
  Hardware Class: framebuffer  
  Model: "NVIDIA G73 Board - p456h1  "  
  Vendor: "NVIDIA Corporation"  
  Device: "G73 Board - p456h1  "  
  SubVendor: "NVIDIA"  
  SubDevice:   
  Revision: "Chip Rev"  
  Memory Size: 256 MB  
  Memory Range: 0xc0000000-0xcfffffff (rw)  
  Mode 0x0300: 640x400 (+640), 8 bits  
  Mode 0x0301: 640x480 (+640), 8 bits  
  Mode 0x0303: 800x600 (+800), 8 bits  
  Mode 0x0305: 1024x768 (+1024), 8 bits  
  Mode 0x0307: 1280x1024 (+1280), 8 bits  
  Mode 0x030e: 320x200 (+640), 16 bits  
  Mode 0x030f: 320x200 (+1280), 24 bits  
  Mode 0x0311: 640x480 (+1280), 16 bits  
  Mode 0x0312: 640x480 (+2560), 24 bits  
  Mode 0x0314: 800x600 (+1600), 16 bits  
  Mode 0x0315: 800x600 (+3200), 24 bits  
  Mode 0x0317: 1024x768 (+2048), 16 bits  
  Mode 0x0318: 1024x768 (+4096), 24 bits  
  Mode 0x031a: 1280x1024 (+2560), 16 bits  
  Mode 0x031b: 1280x1024 (+5120), 24 bits  
  Mode 0x0330: 320x200 (+320), 8 bits  
  Mode 0x0331: 320x400 (+320), 8 bits  
  Mode 0x0332: 320x400 (+640), 16 bits  
  Mode 0x0333: 320x400 (+1280), 24 bits  
  Mode 0x0334: 320x240 (+320), 8 bits  
  Mode 0x0335: 320x240 (+640), 16 bits  
  Mode 0x0336: 320x240 (+1280), 24 bits  
  Mode 0x033d: 640x400 (+1280), 16 bits  
  Mode 0x033e: 640x400 (+2560), 24 bits  
  Config Status: cfg=new, avail=yes, need=no, active=unknown  

Похоже, доступно много высокоразрешающих режимов, таких как 0x305, 0x307, 0x317, 0x318, 0x31a, 0x31b (кстати, что означает число после плюса в списке режимов?). Однако установка любого из этих режимов в строке опций ядра, например, vga=0x305, приводит либо к полностью черной текстовой консоли, либо к экрану, заполненному мигающими цветными/черно-белыми точками.

Каков ‘современный’, ‘надежный’ способ установить высокое разрешение в текстовых консолях?

Новые ядра по умолчанию используют KMS, так что вам следует отказаться от добавления vga= в строку grub, так как это будет конфликтовать с родным разрешением KMS. Однако это зависит от используемого вами видеодрайвера: проприетарный драйвер Nvidia не поддерживает KMS, но можно найти обходной путь.

Вы должны иметь возможность получить полное разрешение в framebuffer, редактируя ваш /etc/default/grub и убедившись, что GFXMODE установлен правильно, а затем добавив запись GFXPAYLOAD следующего вида:

GRUB_GFXMODE=1680x1050x24

# Хак для принуждения более высокого разрешения framebuffer
GRUB_GFXPAYLOAD_LINUX=1680x1050

Не забудьте после этого выполнить sudo update-grub.

Для более новых дистрибутивов Debian & Ubuntu с использованием Nvidia, мне пришлось сделать следующее:

Во-первых, отредактируйте /etc/default/grub. Измените следующую строку:

#GRUB_GFXMODE=640x480 

на это:

GRUB_GFXMODE=1280x800 
GRUB_GFXPAYLOAD_LINUX=keep

замените 1280×800 на нужное разрешение.

Затем:

echo "echo FRAMEBUFFER=y" | sudo tee /etc/initramfs-tools/conf.d/splash
sudo update-initramfs -u
sudo update-grub

Чтобы просто изменить размер шрифта, вы можете это сделать, используя следующую команду:

sudo dpkg-reconfigure console-setup

Используйте sudo hwinfo --framebuffer, как описано, выберите видеорежим, который вы бы хотели видеть во время загрузки в консоли, затем добавьте опцию vga=nnn в параметры загрузки ядра.

Единственный трюк заключается в том, что nnn — это видеорежим, который вы выбрали из списка, произведенного hwinfo, ПРЕОБРАЗОВАННЫЙ В ДЕСЯТИЧНЫЙ ФОРМАТ.

Если вы попытаетесь vga=0xwhatever, это не сработает.

Например, я выбрал видеорежим 0x307 (1280×1024 (+1280), 8 бит), я преобразовал 0x307 в десятичное значение, что составляет 775, и затем я использовал vga=775 в параметрах загрузки isolinux/extlinux.

Вы можете использовать printf для перевода из шестнадцатеричного в десятичное:

$ printf "%d\n" 0x307
775

И я получил красивый мелкий текст на всех консолях с самого начала.

Успех!

Обновление:
(возможное решение для некоторых из нас, кто внес изменения в файлы конфигурации и не смог достичь успеха):

Я пытался достичь этого около шести месяцев и не добился успеха. Все методы, которые я находил с тех пор, совсем не работали с моей системой.
Затем я каким-то образом узнал, что нужно…
отключить CSM (Compatibility Support Module) в разделе загрузки системного BIOS, чтобы методы, показанные в приведенных выше ответах, действительно работали.

Когда у вас включен CSM в разделе загрузки BIOS, “EFI GOP Drive” будет показывать только до 1280×1024 или что-то вроде (videoinfo / vbeinfo или что бы вы ни сказали в командной строке GRUB), и, как только вы отключите CSM, вы получите полное разрешение дисплея, поддерживаемое вашим монитором. И тогда вам нужно писать всю конфигурацию, как показано в приведенных выше ответах.

Опять же повторяю, вы не получите поддержки полного разрешения, если не отключите CSM в BIOS.


Оригинал (фрустрированное состояние разума):
Прошу прощения. Это нестандартный ответ. Я здесь только для того, чтобы сказать, что ни один из вышеприведенных ответов не работает для Debian 10.6 (Bullseye), Kernel 5.10.13.
UEFI BIOS с EFI загрузкой, HDMI-0 через Nvidia GTX 1060 с проприетарным драйвером, i7-5775C на материнской плате Z97.

.

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

Настройка разрешения текстовой консоли на операционных системах, таких как Ubuntu 10.04 Lucid, может вызвать некоторые затруднения, особенно если традиционные методы, такие как использование параметра vga=..., не дают желаемых результатов. Давайте разберем, как можно решить эту проблему на примере вашей ситуации.

Теория

Ранее для настройки разрешения текстовых консолей использовали параметр vga=... в конфигурации загрузчика, который передавал нужное разрешение ядру Linux. Однако, с появлением более новых версий ядра и технологий, таких как управление режимами ядра (KMS), подход изменился. KMS позволяет ядру Linux самостоятельно управлять видеорежимами, что улучшает поддержку графики и её совместимость. Поэтому использование старого подхода vga=... может привести к конфликтам и неправильной работе, как в вашем случае — это проявляется в черном экране или мерцающих точках.

Пример

Рассмотрим, какие шаги нужно предпринять для использования современных методов настройки разрешения. В вашем случае, для системы с ядром версии 2.6.32-33 и графической картой NVIDIA, нужно учитывать отсутствие поддержки KMS в проприетарных драйверах NVIDIA. Это требует индивидуального подхода:

  1. Настройка GRUB:

    • Откройте файл конфигурации /etc/default/grub для редактирования.
    • Убедитесь, что строка GRUB_GFXMODE задана с нужным разрешением, например:
      GRUB_GFXMODE=1280x1024x24
    • Добавьте следующее, чтобы сохранить это разрешение в Linux framebuffer:
      GRUB_GFXPAYLOAD_LINUX=keep
    • Сохраните изменения и выполните команду sudo update-grub для обновления настроек загрузчика.
  2. Настройка Initramfs:

    • Для применения изменения, возможно, потребуется обновить initramfs. Для этого выполните:
      echo "FRAMEBUFFER=y" | sudo tee /etc/initramfs-tools/conf.d/splash
      sudo update-initramfs -u
  3. Конвертация и использование VESA Mode:

    • Если захочется испробовать метод через vga=..., то необходимо конвертировать VESA код в десятичный формат. Например, для 0x307 (1280×1024), нужно выполнить:
      printf "%d\n" 0x307

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

  4. Проверка BIOS:

    • Убедитесь, что в BIOS отключен CSM (Compatibility Support Module). Включенный CSM может ограничивать разрешение, доступное в режимах EFI, влияя на разрешения, доступные ядру и GRUB.

Применение

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

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

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

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