Sudo в терминале

Несколько человек ответили на части вашего вопроса, касающиеся ядра и размещения изображений (а не текста) в фреймбуфере, но пока что остальное остается без ответа. Да, вы можете использовать подсистему виртуальных терминалов ядра для создания так называемой консоли framebuffer. Но есть несколько инструментов, которые позволяют использовать устройство framebuffer для создания виртуальных терминалов пользовательского пространства. К ним относятся:

  • zhcon (Debian) - виртуальный терминал пользовательского пространства, ориентированный на обработку ввода-вывода CJK гораздо лучше, чем подсистема ядра. Его особая сила - в работе с кодировками ISO 2022, не относящимися к UTF; его особая слабость - кодировки UTF.
  • fbterm (Debian) - виртуальный терминал пользовательского пространства, породивший несколько форков, включая jfbterm. Он имеет множество подключаемых модулей для ввода CJK.
  • bogl-bterm (Debian) - виртуальный терминал пользовательского пространства, породивший такие форки, как niterm.
  • Ali Gholami Rudi's fbpad - минималистский виртуальный терминал, не зависящий от библиотек X.
  • Инструменты console-terminal-emulator и console-fb-realizer в nosh - виртуальный терминал пользовательского пространства, нацеленный на копирование виртуальных терминалов ядра Linux и FreeBSD/PC-BSD. Он также не имеет зависимостей от библиотек X.
  • kmscon - виртуальный терминал пользовательского пространства, тесно связанный с logind сервером в systemd и его понятиями "места".

Али Голами Руди, в частности, создал не просто эмулятор терминала для работы с фреймбуфером. Он также написал PDF-просмотрщик, VNC-просмотрщик, медиаплеер и программу для чтения Корана.

Полное сравнение бок о бок выходит за рамки данного ответа; но вот некоторые моменты, которые имеют отношение к вопросу:

  • Как отмечалось, несколько программ виртуального терминала в пространстве пользователя используют библиотеки X для обработки шрифтов, отображения клавиатуры, методов ввода CJK и так далее. Они не являются клиентами X, но у них есть зависимости от библиотек X. fbpad и инструменты nosh по своей конструкции не используют никаких библиотек X.
  • Программы, использующие библиотеки X для работы со шрифтами, конечно же, используют шрифты X. Остальные используют другие средства.
    • bogl-bterm и fbpad имеют свои собственные идиосинкразические форматы шрифтов. Один конвертирует шрифты BDF в шрифты BOGL с помощью инструмента bdftobogl; а другой конвертирует TTF в шрифты "tinyfont", которые используются fbpad, с помощью инструмента ft2tf (Arch).
    • Инструмент nosh console-fb-realizer использует те же шрифты "vt", что и новая подсистема виртуальных терминалов ядра FreeBSD 10.1, и поэтому использует инструмент манипулирования шрифтами FreeBSD vtfontcvt для преобразования шрифтов BDF.
  • Программы, использующие библиотеки X, используют отображение клавиатуры X. Что касается остальных:
    • Инструменты nosh имеют свой собственный идиосинкратический формат карты клавиатуры, предназначенный для обеспечения полной клавиатуры, поддерживающей ISO 9995-3, с "общей" группой 2 ISO. Можно преобразовать файлы BSD kbdmap в этот формат с помощью инструмента console-convert-kbdmap. Опять же, эти файлы kbdmap - те, что используются в подсистеме vt FreeBSD/PC-BSD.
    • fbpad вообще не делает собственного отображения клавиатуры, а полагается на наличие подсистемы виртуального терминала ядра и ее механизма отображения клавиатуры.
  • Есть некоторые различия в вызове и требуемых привилегиях:
    • zhcon, fbterm, bogl-bterm, fbpad и kmscon работают на основе того, что эмулятор терминала порождает программу оболочки/логина на терминале, непосредственно, как дочерний процесс. Для порождения login им нужны привилегии суперпользователя.
    • Инструменты nosh были разработаны для интеграции с существующей /etc/ttys (BSD), /etc/inittab (Linux system 5 init) или другой системой, которой они оставляют работу по порождению getty/login/shell. console-fb-realizer нуждается только в привилегиях, достаточных для открытия фреймбуфера и устройств событий ввода, что не требует привилегий суперпользователя, и для доступа к FIFO и обычным файлам, обслуживаемым console-terminal-emulator, который, в свою очередь, вообще не нуждается в специальных привилегиях.

Все это, конечно, эмуляторы терминалов. Если вы хотите убрать эмуляцию терминала и вывести текст на фреймбуфер более непосредственно, у вас есть несколько вариантов:

  • bogl-bterm, конечно, основан на библиотеке Бена Пфаффа Ben's Own Graphics Library - библиотеке ввода/вывода фреймбуфера, разработанной для использования в средах настройки/спасания системы (и "для графических интерфейсов в КПК"). Вы, конечно, можете писать программы, использующие ее напрямую.
  • В качестве промежуточного варианта между написанием программы, использующей библиотеку фреймбуфера для собственного рендеринга, и программы, которая выдает управляющие последовательности тому, что она считает терминалом: Виртуальный терминал пользовательского пространства nosh является модульным и разделяется на составные части. Можно просто не использовать console-terminal-emulator.

    console-fb-realizer использует дисплейный файл с массивом символьных ячеек, как /dev/vcsa*, но обычный файл (не файл специального устройства символов) и с кодовыми точками Unicode, атрибутами ECMA-48 и 24-битным цветом RGB. Так что можно запустить его и просто записать символ+атрибут+цвет прямо в файл массива ячеек символов, позволив console-fb-realizer выполнить рендеринг шрифта в фреймбуфер.

    В качестве дополнения: Обратите внимание, что это противоположно интеграции с BRLTTY, которая использует console-terminal-emulator, но не запускает console-fb-realizer.

-4
09.02.2018, 20:01
0 ответов

Теги

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