Вопрос или проблема
fbterm – это программа для Linux, которую обычно запускают из /dev/ttyN для отображения терминала на фреймбуфере. Когда fbterm запускается, он проверяет, что stdin связан с интерактивным tty /dev/ttyN, используя strstr(ttyname_r(...),"/dev/tty")
. Специальное устройство /dev/tty
также может пройти этот тест. Я не уверен, задумывалось ли это.
У меня есть машина с фреймбуфером в /dev/fb0, без устройств /dev/ttyN, созданных при запуске, с ssh-сервером и root-доступом. Ранее из SSH-сессии я как-то использовал fbterm, чтобы нарисовать сессию на удаленном фреймбуфере (или, возможно, это была дочерняя оболочка). Ввод и вывод были видны только на фреймбуфере, а не в моем SSH-клиенте. Я пробовал, но не смог воспроизвести это.
Может кто-нибудь объяснить, что происходило и как это воспроизвести надежно? У меня нет истории команд оболочки, чтобы помочь, но я мог запустить что-то вроде fbterm [косметические опции] < /dev/tty
и создать или настроить какие-то интерактивные tty.
Ответ или решение
Как нарисовать SSH-сессию на удаленном фреймбуфере с использованием fbterm
Введение
В данной статье мы подробно рассмотрим, как использовать программу fbterm для передачи SSH-сессии на удаленный фреймбуфер. Это будет полезно для администраторов и разработчиков, желающих использовать визуальные возможности фреймбуферов в линукс-системах. Наша цель — пояснить, как это работает, и предоставить пошаговую инструкцию для воспроизведения данного процесса.
Что такое fbterm?
fbterm — это терминальная программа, предназначенная для работы на фреймбуфере Linux. Она отображает интерфейс терминала непосредственно на графическом устройстве, предоставляя пользователю возможность работать с терминалом с высокой производительностью и улучшенной графикой.
Подготовка системы
Перед началом, убедитесь, что на вашем сервере или машине настроен SSH сервер и имеется доступ к фреймбуферу через /dev/fb0
. Также необходимо, чтобы ваша система имела возможность создания виртуальных терминалов и межпроцессного взаимодействия.
Проверка доступных устройств
Для начала, проверьте доступные устройства ввода-вывода:
ls /dev/tty*
ls /dev/fb*
Если устройства /dev/ttyN
не были созданы при загрузке, возможно, вам потребуется их инициализировать вручную:
sudo mkdir -p /dev/pts
sudo mount -t devpts devpts /dev/pts
Понимание работы fbterm
При запуске fbterm он проверяет, что стандартный ввод связан с интерактивным терминалом (tty) и ищет в выводе строку, содержащую "/dev/tty".
Если стандартный ввод связан с /dev/tty
, это позволяет fbterm работать, но для передачи SSH-сессии на фреймбуфер необходимо выполнить несколько шагов.
Как воспроизвести процесс
Следуйте нижеприведенному руководству для запуска fbterm и отображения SSH-сессии на фреймбуфере:
-
Подключитесь к вашему серверу, используя SSH:
Выполните вход на удаленный сервер с использованием SSH:
ssh user@remote-server
-
Запустите fbterm с перенаправлением ввода:
Запустите fbterm с указанием перенаправления стандартного ввода ядерного устройства:
fbterm < /dev/tty
В некоторых случаях может понадобится перенаправление через pseudo-terminal (pty):
fbterm < /dev/pts/X & # X - номер вашего виртуального терминала
-
Взаимодействие с fbterm:
Теперь вы можете взаимодействовать с терминалом, используя команды. Для SSH-сессии вы можете запустить другой терминал, используя команду:
ssh user@another-host
Устранение неполадок
Если вы не видите интерфейс fbterm на фреймбуфере, проверьте следующие моменты:
- Убедитесь, что драйвер фреймбуфера корректно настроен.
- Проверьте права доступа к устройству
/dev/fb0
. - Убедитесь, что ваш SSH-клиент не блокирует вывод, используя опцию
-t
для принудительного создания псевдотерминала.
Заключение
Использование fbterm для рисования SSH-сессии на фреймбуфере — это мощный метод для работы с терминалами в Linux. Выполняя описанные шаги, вы сможете успешно воспроизвести и оптимизировать свой рабочий процесс, получая визуальный доступ к командной строке через фреймбуфер вашего устройства.
Понимание того, как взаимодействуют различные компоненты системы, позволит вам более эффективно управлять сервером и использовать его возможности.