✓ Решено проблема с разрешением консоли

Программы для конфигурации и управления операционной системой
Правила форума
Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа.
burnside
Сообщения: 10
Зарегистрирован: 23 сен 2016, 00:07
Благодарил (а): 6 раз
Поблагодарили: 1 раз
Контактная информация:

проблема с разрешением консоли

Сообщение #1 burnside » 23 сен 2016, 00:11

Здравствуйте, форумчане!
У меня ноутбук, экран около 16 дюймов, помимо встроенной видеокарты intel установлена nvidia GeForce GTX 970M. Разрешение по умолчанию 3840х2160. Поскольку монитор небольшой, установил более низкое разрешение 1360x768 в Х. Чтобы экран входа в систему имел такое разрешение, прописал его явно в xorg.conf (помогло). Однако шрифт консоли (Alt+Ctrl+Fx) очень-очень мелкий (наверное, разрешение по умолчанию). Чтобы хоть что-нибудь можно было прочитать установил самый крупный шрифт через console-setup: 16x32 (только фрейм-буфер). Теперь по крайней мере можно разобрать текст. Пытался через /etc/default/grub изменить разрешение консоли. Безуспешно... Прошу всех неравнодушных откликнуться! :'(
ОС - Линукс Минт 18 (Синамон).

Решение nimms » 23 сен 2016, 18:24
Итак, дело сделано.

Для начала нужно создать скрипт /etc/initramfs-tools/hooks/edid:

Код: Выделить всё

#!/bin/sh
. /usr/share/initramfs-tools/hook-functions
mkdir -p ${DESTDIR}/lib/firmware/edid
cp /lib/firmware/edid/1360x768.bin ${DESTDIR}/lib/firmware/edid

И сделать его исполняемым:

Код: Выделить всё

sudo chmod +x /etc/initramfs-tools/hooks/edid

Затем надо перегенерировать образ initramfs, для этого есть команда:

Код: Выделить всё

sudo update-initramfs -u

После этого прописать параметр загрузки в /etc/default/grub:

Код: Выделить всё

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash drm_kms_helper.edid_firmware=edid/1360x768.bin"

Переконфигурировать GRUB:

Код: Выделить всё

sudo update-grub

И перезагрузиться. Если всё сработает, то те же настройки применятся не только к консоли, но и к Иксам.

Ну и под конец можно убрать параметр загрузки в конфиге GRUB, чтобы не мешался (туда прописывали для теста), и передавать параметр модулю напрямую, прописав в /etc/modprobe.d/drm-kms-helper.conf:

Код: Выделить всё

options drm_kms_helper edid_firmware=edid/1360x768.bin

Перейти к ответу ➙

Аватара пользователя
Chocobo
Сообщения: 3465
Зарегистрирован: 27 авг 2016, 22:57
Решено: 80
Откуда: НН
Благодарил (а): 317 раз
Поблагодарили: 913 раз
Контактная информация:

Re: проблема с разрешением консоли

Сообщение #2 Chocobo » 23 сен 2016, 01:18

burnside,
Если я верно понял вопрос - то привести tty и иксы к нужному разрешению можно следующим образом:

Для начала, на этапе отображения меню grub жмем клавишу с чтоб попасть в его консоль, там набираем vbeinfo и видим все доступные разрешения экрана. Запоминаем нужное и бутимся в систему

По факту загрузки - добавляем эти строчки в /etc/default/grub, в моём примере 1280х960:

Код: Выделить всё

GRUB_GFXMODE=1280x960
GRUB_GFXPAYLOAD_LINUX=keep

Также стоит поменять

Код: Выделить всё

GRUB_CMDLINE_LINUX_DEFAULT="quiet spalsh"

На

Код: Выделить всё

GRUB_CMDLINE_LINUX_DEFAULT="quiet spalsh nomodeset"

Именно nomodeset не даст сползти разрешению в дальнейшем

Затем даём sudo update-grub и перезагружаемся.
Изображение

burnside
Сообщения: 10
Зарегистрирован: 23 сен 2016, 00:07
Благодарил (а): 6 раз
Поблагодарили: 1 раз
Контактная информация:

Re: проблема с разрешением консоли

Сообщение #3 burnside » 23 сен 2016, 07:11

Chocobo, спасибо за развернутый ответ! Такие манипуляции я уже проделывал ранее. Из всех доступных разрешений формата 16x9 vbeinfo выдает только 3840х2160. Если поставить любое другое разрешение из vbeinfo (например, 1024x768), то после этого графическая оболочка загружается только в безопасном режиме. Приходится возвращать настройки grub в исходное состояние. Напомню, что мое рабочее разрешение (в виду небольшого размера монитора ноутбука) 1360x768 (можно и 1920x1080, но уже менее комфортно). Эх, требуется какой-то иной подход... :dash2:

Аватара пользователя
nimms
Сообщения: 22
Зарегистрирован: 23 сен 2016, 07:02
Решено: 3
Благодарил (а): 4 раза
Поблагодарили: 29 раз
Контактная информация:

Re: проблема с разрешением консоли

Сообщение #4 nimms » 23 сен 2016, 08:24

Если мыслить "правильно", то надо не разрешение экрана менять, а использовать DE и приложения, поддерживающие HiDPI. Например, GNOME 3, KDE 5, Cinnamon, MATE (но в нём пока не полная поддержка) и просто приложения, использующие GTK 3 и Qt 5. Суть в том, что элементы управления и шрифты будут увеличены в несколько раз (обычно ровно в два раза).

Менять разрешение в консоли уж точно не стоит. Нужно просто сменить шрифт, вот и всё. Сделать это можно командой:

Код: Выделить всё

sudo dpkg-reconfigure console-setup

Как шрифт выбрать, например, Terminus, а размер установить в максимум. Остальные параметры лучше не трогать. После этого, возможно, потребуется перезагрузиться, чтобы увидеть результат.

UPD: прошу прощения, не заметил, что про console-setup говорилось в первом посте.

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

Аватара пользователя
Chocobo
Сообщения: 3465
Зарегистрирован: 27 авг 2016, 22:57
Решено: 80
Откуда: НН
Благодарил (а): 317 раз
Поблагодарили: 913 раз
Контактная информация:

Re: проблема с разрешением консоли

Сообщение #5 Chocobo » 23 сен 2016, 08:53

burnside писал(а):Источник цитаты Если поставить любое другое разрешение из vbeinfo (например, 1024x768), то после этого графическая оболочка загружается только в безопасном режиме.

Хм, корица опять капризничает :smile: попробую воспроизвести и на ней, может удастся победить. :smile:

Еще вопрос, покажите сюда inxi -G, от задействованного видеоадаптера тоже могут быть разлчия в подходах
Изображение

burnside
Сообщения: 10
Зарегистрирован: 23 сен 2016, 00:07
Благодарил (а): 6 раз
Поблагодарили: 1 раз
Контактная информация:

Re: проблема с разрешением консоли

Сообщение #6 burnside » 23 сен 2016, 09:15

Chocobo писал(а):Источник цитаты Еще вопрос, покажите сюда inxi -G, от задействованного видеоадаптера тоже могут быть различия в подходах

Вот вывод команды inxi -G :

Graphics: Card-1: Intel 4th Gen Core Processor Integrated Graphics Controller
Card-2: NVIDIA GM204M [GeForce GTX 970M]
Display Server: X.Org 1.18.3 driver: nvidia
Resolution: 1360x768@59.80hz
GLX Renderer: GeForce GTX 970M/PCIe/SSE2
GLX Version: 4.5.0 NVIDIA 361.42

burnside
Сообщения: 10
Зарегистрирован: 23 сен 2016, 00:07
Благодарил (а): 6 раз
Поблагодарили: 1 раз
Контактная информация:

Re: проблема с разрешением консоли

Сообщение #7 burnside » 23 сен 2016, 11:48

nimms, благодарю за наводку. Читаю, пытаюсь разобраться. Пока непонятно как создать EDID файл для моего разрешения 1360x768.

Аватара пользователя
nimms
Сообщения: 22
Зарегистрирован: 23 сен 2016, 07:02
Решено: 3
Благодарил (а): 4 раза
Поблагодарили: 29 раз
Контактная информация:

Re: проблема с разрешением консоли

Сообщение #8 nimms » 23 сен 2016, 12:05

burnside, насколько я понимаю, надо скачать исходники ядра, перейти там в директорию Documentation/EDID, скопировать одно из имеющихся определений (например, 1024x768.S в 1360x768.S), изменить в нём параметры как нужно, после чего запустить make. Создастся соответствующий бинарник (1360x768.bin), его надо будет скопировать в директорию, указанную по данной мной ссылке, и следовать далее по тексту.

Когда буду дома, попробую провернуть у себя. Раньше никогда этого не делал.

burnside
Сообщения: 10
Зарегистрирован: 23 сен 2016, 00:07
Благодарил (а): 6 раз
Поблагодарили: 1 раз
Контактная информация:

Re: проблема с разрешением консоли

Сообщение #9 burnside » 23 сен 2016, 15:03

nimms, создать файл 1360x768.S и 1360x768.bin оказалось очень удобно при помощи утилиты modeline2edid (https://github.com/akatrevorjay/edid-generator):
cvt 1360 768 60 > file
./modeline2edid ./file
make

Двигаюсь дальше...

burnside
Сообщения: 10
Зарегистрирован: 23 сен 2016, 00:07
Благодарил (а): 6 раз
Поблагодарили: 1 раз
Контактная информация:

Re: проблема с разрешением консоли

Сообщение #10 burnside » 23 сен 2016, 17:03

nimms писал(а):Источник цитаты его надо будет скопировать в директорию, указанную по данной мной ссылке, и следовать далее по тексту.

Здесь не все так просто. В Linux Mint не существует mkinitcpio.conf, который есть в ArchLinux...

Аватара пользователя
nimms
Сообщения: 22
Зарегистрирован: 23 сен 2016, 07:02
Решено: 3
Благодарил (а): 4 раза
Поблагодарили: 29 раз
Контактная информация:

Re: проблема с разрешением консоли

Сообщение #11 nimms » 23 сен 2016, 18:24

Итак, дело сделано.

Для начала нужно создать скрипт /etc/initramfs-tools/hooks/edid:

Код: Выделить всё

#!/bin/sh
. /usr/share/initramfs-tools/hook-functions
mkdir -p ${DESTDIR}/lib/firmware/edid
cp /lib/firmware/edid/1360x768.bin ${DESTDIR}/lib/firmware/edid

И сделать его исполняемым:

Код: Выделить всё

sudo chmod +x /etc/initramfs-tools/hooks/edid

Затем надо перегенерировать образ initramfs, для этого есть команда:

Код: Выделить всё

sudo update-initramfs -u

После этого прописать параметр загрузки в /etc/default/grub:

Код: Выделить всё

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash drm_kms_helper.edid_firmware=edid/1360x768.bin"

Переконфигурировать GRUB:

Код: Выделить всё

sudo update-grub

И перезагрузиться. Если всё сработает, то те же настройки применятся не только к консоли, но и к Иксам.

Ну и под конец можно убрать параметр загрузки в конфиге GRUB, чтобы не мешался (туда прописывали для теста), и передавать параметр модулю напрямую, прописав в /etc/modprobe.d/drm-kms-helper.conf:

Код: Выделить всё

options drm_kms_helper edid_firmware=edid/1360x768.bin

burnside
Сообщения: 10
Зарегистрирован: 23 сен 2016, 00:07
Благодарил (а): 6 раз
Поблагодарили: 1 раз
Контактная информация:

Re: проблема с разрешением консоли

Сообщение #12 burnside » 23 сен 2016, 21:26

nimms, работает!!!! :thumbs: Огромное Вам спасибо! :bravo:

burnside
Сообщения: 10
Зарегистрирован: 23 сен 2016, 00:07
Благодарил (а): 6 раз
Поблагодарили: 1 раз
Контактная информация:

Re: проблема с разрешением консоли

Сообщение #13 burnside » 23 сен 2016, 22:34

nimms, одна проблема разрешилась, но появилась другая. Теперь текст в консоли выходит за границы экрана. К примеру, если запустить mc, то будет видна только левая панель. :sad:

Аватара пользователя
Chocobo
Сообщения: 3465
Зарегистрирован: 27 авг 2016, 22:57
Решено: 80
Откуда: НН
Благодарил (а): 317 раз
Поблагодарили: 913 раз
Контактная информация:

Re: проблема с разрешением консоли

Сообщение #14 Chocobo » 23 сен 2016, 22:44

тут думаю может помочьfbset

Попробуй дать там по месту sudo fbset -g 1360 768 1360 768 32

Если прокатит - можно вкрутить в ~/.bashrc c условием что это tty, а не эмулятор терминала
Изображение

burnside
Сообщения: 10
Зарегистрирован: 23 сен 2016, 00:07
Благодарил (а): 6 раз
Поблагодарили: 1 раз
Контактная информация:

Re: проблема с разрешением консоли

Сообщение #15 burnside » 23 сен 2016, 23:05

Chocobo писал(а):Источник цитаты Если прокатит - можно вкрутить в ~/.bashrc условием что это tty, а не эмулятор терминала

Chocobo, большое спасибо! :thumbs: Теперь все норме. А в ~/.bashrc что нужно прописать?

Аватара пользователя
Chocobo
Сообщения: 3465
Зарегистрирован: 27 авг 2016, 22:57
Решено: 80
Откуда: НН
Благодарил (а): 317 раз
Поблагодарили: 913 раз
Контактная информация:

Re: проблема с разрешением консоли

Сообщение #16 Chocobo » 23 сен 2016, 23:26

в ~/.bashrc можно добавить следующие строки

Код: Выделить всё

case $(tty) in /dev/tty[0-9]*)
   sudo fbset -g 1360 768 1360 768 32 ;;
esac

Но он начнет дважды запршивать пароль при входе в tty, т.к. у нас тут sudo :smile:

От этого запроса отучаем так:

Код: Выделить всё

sudo visudo

В конец дописываем

Код: Выделить всё

username ALL = NOPASSWD: /bin/fbset

username разумеется свой :smile:

Теперь при каждом входе в командную строку, будет проверка не tty ли это случаем, и если он - выполнять необходимый fbset
Изображение

Аватара пользователя
nimms
Сообщения: 22
Зарегистрирован: 23 сен 2016, 07:02
Решено: 3
Благодарил (а): 4 раза
Поблагодарили: 29 раз
Контактная информация:

Re: проблема с разрешением консоли

Сообщение #17 nimms » 24 сен 2016, 11:19

Чтобы система не выполняла лишнюю работу, а также для того, чтобы видеть логи (или лого) при загрузке, можно эту команду не в ~/.bashrc прописать, а оформить как скрипт для initramfs, прописав в /etc/initramfs-tools/scripts/init-premount/fbset:

Код: Выделить всё

#!/bin/sh
fbset -a -g 1360 768 1360 768 32

Прошу обратить внимание на ключ -a, который применяет указанные настройки ко всем TTY, присвоенным framebuffer-устройству, а не только к текущему.

После этого, опять же, надо сделать скрипт исполняемым и перегенерировать образ:

Код: Выделить всё

sudo chmod +x /etc/initramfs-tools/scripts/init-premount/fbset
sudo update-initramfs -u

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

LeTruk
Сообщения: 27
Зарегистрирован: 30 янв 2017, 13:56
Поблагодарили: 1 раз

проблема с разрешением консоли

Сообщение #18 LeTruk » 30 янв 2017, 19:50

Столько команд... Что вводить то?

LeTruk
Сообщения: 27
Зарегистрирован: 30 янв 2017, 13:56
Поблагодарили: 1 раз

Попасть в консоль?

Сообщение #19 LeTruk » 30 янв 2017, 19:53

проблема с разрешением консоли Какую команду вводить?

Аватара пользователя
Chocobo
Сообщения: 3465
Зарегистрирован: 27 авг 2016, 22:57
Решено: 80
Откуда: НН
Благодарил (а): 317 раз
Поблагодарили: 913 раз
Контактная информация:

Попасть в консоль?

Сообщение #20 Chocobo » 30 янв 2017, 21:16

Изображение


Вернуться в «Системные утилиты»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей