Как изменить размер шириной консоли TTY?

Я нашел ответ здесь http://ubuntuforums.org/showthread.php?t=677277 благодаря @Rinzwind

Я выполнил команду

sudo apt-get install festlex-poslex

и это устранило ошибку.

1
06.10.2018, 09:04
1 ответ

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

Реальные терминалы

Консоль может быть честным -до -хорошим терминалом, подключенным к последовательному устройству. В этом случае указание терминалу изменить -размер его дисплея включает в себя отправку управляющей последовательности некоторого вида по кабелю к терминалу.Эта последовательность управления зависит от типа терминала. Более того, нет возможности termcap, которая бы это удобно предоставляла.

Обычно , но не всегда, в зависимости от того, какой терминал фактически находится на другом конце последовательной линии, терминалы будут подчиняться частным управляющим последовательностям DEC, которым подчиняются DEC VT340 и выше:DECSLPP/ DECSNLSи DECSCPP. Набор инструментов nosh 'sconsole-resize(a.k.a.a.resizecons)выдает эти:

$ resizecons 80x25

Обратите внимание, что большинство реальных терминалов ограничивают то, какие комбинации столбцов и строк будут фактически задействованы, довольно ограниченным, предварительно -определенным набором размеров терминала. Классически DEC VT поддерживает, например, только 80 или 132 столбца.

Реальные терминалы — это случай, когда представление линейной дисциплины о размере терминала должно быть явно обновлено после изменения размера дисплея терминала с помощью stty. Линейная дисциплина ничего не знает об управляющих последовательностях, а само терминальное устройство не имеет возможности влиять на линейную дисциплину и даже не знает, что общается с операционной системой, которая имеет такое понятие, как линия. дисциплина.

Виртуальные терминалы пространства пользователя -

Виртуальные терминалы -пространства пользователя набора инструментов nosh подчиняются тем же самым частным управляющим последовательностям DEC и могут быть аналогичным образом настроены с помощью команды console-resize. Как и настоящие терминалы, они всегда запускаются в одном и том же режиме, пока его не изменит управляющая последовательность. В отличие от реальных терминалов, но, как и виртуальные терминалы ядра, которые они призваны заменить, они запускаются в режиме 80×25, а не в режиме 80×24 многих реальных терминалов.

Точно так же, в отличие от реальных терминалов, но подобно виртуальным терминалам ядра, вам не нужно вызывать sttyдля обновления дисциплины линии после указания терминалу изменить свой размер, потому что операция изменения размера обновляет дисциплину линии сама.

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

Это подводит нас к виртуальным терминалам ядра.

Виртуальные терминалы ядра

Это те, которые предоставляет эмулятор терминала, встроенный в само ядро. Это то, что вы можете наивно считать «консолью», пока не прочитаете руководство и не поймете, что консоль (определена как место, куда направляются диагностика ядра и вывод трассировки, а также вывод в /dev/console. отправленный )может быть реальным терминалом через последовательное устройство (comconsole), виртуальным терминалом ядра(vidconsole)или вообще ничем(nullconsole).

Они не управляются управляющими последовательностями; скорее, такое терминальное устройство открывается и выполняются -специфичные для устройства запросы ioctl(). К счастью, существует инструмент, который упаковывает некоторые из наиболее распространенных ioctl()запросов, делая их доступными без необходимости написания собственной программы.

Из сеанса входа в систему на виртуальном терминале ядра, который будет изменен сам, или со стандартным вводом, перенаправленным с такого терминального устройства:

  1. Получить список доступных режимов:
    $ vidcontrol -i mode
  2. Определите режим с подходящими строками и столбцами. На одной из моих машин оказалась эта, которая со шрифтом 8×16 составляет 160 столбцов и 64 строки :
    283 (0x11b) 0x0000001f G 1280x1024x32 D  8x16  0xa0000 64k 64k 0xf1000000 5120k
  3. .
  4. Перейти в этот режим:
    $ vidcontrol MODE_283
  5. Сделайте это изменение размера постоянным, запустив предыдущую команду при загрузке:
    # sysrc allscreens_flags=MODE_283

Выбор размера зависит от того, используете ли вы старые syscons или новый эмулятор терминала ядра vt, а также от того, что он знает об адаптере дисплея, который поддерживает эмулируемый дисплей.

Дополнительная литература

7
27.01.2020, 23:23

Теги

Похожие вопросы