LINUX.ORG.RU

Чем отличаются понятия «виртуальная консоль» и «виртуальный терминал»?

 ,


0

5

Кто из этих двоих реализует обработку ANSI-последовательностей?
Если программа xterm реализует «виртуальный терминал», то кто тогда ей предоставляет консоль?

Что общего у консолей и udev ? Зачем создаются tty-устройства (это как-бы терминалы или всё-таки консоли?)

Как понять, используется ли у меня в системе http://en.wikipedia.org/wiki/Kmscon
(какой-нибудь lsmod + проверка в пакетном менеджере?)



Последнее исправление: ruoxid_agilobetov (всего исправлений: 1)

Есть гипотеза, что терминал - текстовый, а консоль может быть любая, например графическая:

«Usually in Linux (see Linux console), the first six virtual consoles provide a text terminal, The graphical X Window System starts in the seventh virtual console.»

в этом смысле мне не ясно, в чем заключается «особонеобходимое умение работать в консоли»

tetivastrel
()

Считай, что консоль - это терминал, реализуемый ядром. Правда, kmscon в это определение не вписывается, но его писали люди, не уважающие терминологию %)

tailgunner ★★★★★
()
Ответ на: комментарий от mandala

http://askubuntu.com/questions/506510/what-is-the-difference-between-terminal...

A console is generally a terminal in the physical sense that is by some definition the primary terminal directly connected to a machine. The console appears to the operating system as a (kernel-implemented) terminals. On some systems, such as Linux and FreeBSD, the console appears as several terminals (ttys) (special key combinations switch between these terminals);

Indaril_Shpritz
()
Ответ на: комментарий от DeadEye

вы меня все совсем запутали, хочу картинку-схему, что с чем и для чего соединяется

ruoxid_agilobetov
() автор топика

Кто из этих двоих реализует обработку ANSI-последовательностей?

Терминал. Виртуальная консоль лишь предоставляет эмулятору терминала I/O. Виртуальная консоль может быть как текстовая, так и во фреймбуфере. На работу терминала это не влияет.

это как-бы терминалы или всё-таки консоли?

Терминалы, которым соответствует инстанс консоли. Иксовые терминалы в /dev/pts (man 4 tty)

Unicode4all ★★★★★
()
Ответ на: комментарий от ruoxid_agilobetov

Нет, это графические эиуляторы терминала (xterm, rxvt, konsole,etc) за них отвечает подсистема псевдотерминалов (PTY).

Unicode4all ★★★★★
()

Во времена мейнфреймов были консоли. Это была такая железяка, которая совмещала в себе устройства ввода-вывода(читай монитор и клавиатуру) и подключалась к самому мейнфрейму. Этих консолей зачастую было много. Они могли быть текстовые или графические. Термнал - это программа, которая на консоли крутилась и общалась с мейнфреймом, а шелл - это программа, которая предоставляла командный интерфейс. В линуксах же есть виртуальные консоли т.к. написано по образу и подобию юникса. Они так-же могут быть графическими или текстовыми(для шелов и иксов соответственно). Иксовые терминалы - это приблуды для эмуляции текстовой консоли внутри графической. Ну а шеллы они и в африке шеллы. Как-то так... Вроде бы ничего не напутал.

gear ★★★
()
Ответ на: комментарий от tetivastrel

Есть гипотеза, что терминал - текстовый, а консоль может быть любая, например графическая

Консоль - это железяка(может быть текстовая или графикеская), а терминал - это программа для связи консоли с мейнфреймом. А вот шелл - он только текстовый т.к. предоставляет командный интерфейс и работает только в виртуальных терминалах.

gear ★★★
()
Ответ на: комментарий от gear

«Они (консоли) так-же могут быть графическими или текстовыми(для шелов и иксов соответственно).»

Команда chvt может переключить с текстовой консоли на графическую.
1) Как она это делает - через VT API или есть отдельный специальный API для консолей ?
2) как в /dev посмотреть сколько у меня графических консолей?

ruoxid_agilobetov
() автор топика
Ответ на: комментарий от ruoxid_agilobetov

консолей

Консоль, по идее, вообще одна — это /dev/console, и chvt просто дергает /dev/console, посылая ему сообщение VT_ACTIVATE с номером нужного терминала в качестве параметра.

Unicode4all ★★★★★
()
Ответ на: комментарий от Unicode4all

если я запущу два разных x-сервера, то они займут два разных терминала (и будут нужны две DISPLAY= строчки). Между ними можно будет переключиться по chvt (наверное), но как их увидеть в /dev ?

ruoxid_agilobetov
() автор топика
Ответ на: комментарий от ruoxid_agilobetov

chvt никогда не пользовал но, судя по ману, он просто переключает в консоли виртуальные терминалы - аналог нажатия Ctrl+Alt+F[0-9]

gear ★★★
()
Ответ на: комментарий от gear

«Они так-же могут быть графическими или текстовыми(для шелов и иксов соответственно)»

Как отличить, где какие? Где графические, а где текстовые?

# ls /dev/tty? | sort
/dev/tty0
/dev/tty1
/dev/tty2
/dev/tty3
/dev/tty4
/dev/tty5
/dev/tty6
/dev/tty7
/dev/tty8
/dev/tty9

ruoxid_agilobetov
() автор топика
Ответ на: комментарий от Unicode4all

начиная с tty7, на них висят иксы.

это неочевидно, бывает в федоре так, что для того, чтобы переключиться в графический режим, надо жать Alt-Ctrl-F1

ruoxid_agilobetov
() автор топика
Ответ на: комментарий от ruoxid_agilobetov

Ну, это зависит от дисплейного менеджера, седьмой терминал скоррее всего используют, потому что init вызывает getty только на tty1-6. X-сервер можно поставить на любой tty.

Unicode4all ★★★★★
()
Ответ на: комментарий от Unicode4all

Не оьязательно с 7. Зависит от того сколько текстовых терминалов у тебя в ините настроено. Если нужно точно узнать, то это вытягивается либо с иксового темпа, либо с ps aux.

gear ★★★
()
Ответ на: комментарий от ruoxid_agilobetov

Да, по идее, как сказал товарищ gear можно с помощью ps, только есть один непоняток. Не помню как в обычных инитах, ЕМНИП там agetty сразу вызывался на всех указанных терминалах и в ps/htop можно было посмотреть свободные терминалы по процессам agetty, но у меня systemd-logind, который вызывает этот agetty при переключении в терминал. Поэтому смотрю количество терминалов в конфиге logind.conf

Unicode4all ★★★★★
()
Ответ на: комментарий от Unicode4all

посмотреть свободные терминалы по процессам agetty

это плохое решение. Заменят где-нибудь на mingetty и перестанет работать

ruoxid_agilobetov
() автор топика
Ответ на: комментарий от ruoxid_agilobetov

VT_OPENQRY

Блин, хочу поиграться с ним, но не знаю, как добыть дескриптор консоли, откопал где-то функцию get_console_fd, но компилятор выдает undefined reference, а в какой либе этот get_console_fd я понятия не имею, гуглеж ни к чему не привел.

Unicode4all ★★★★★
()
Ответ на: комментарий от Unicode4all

Думаю да. Я когда-то оставлял себе 2 терминала текстовых: лишние гетти вызовы комментировал в ините и тогда переключение в иксы у меня было по Alt+F3.

gear ★★★
()
Ответ на: комментарий от ruoxid_agilobetov

Лумаю как и любой другой файл. lsof-ом.

gear ★★★
()
Ответ на: комментарий от Unicode4all

Блин, хочу поиграться с ним, но не знаю, как добыть дескриптор консоли

open-ом открой файл консоли и open вернет тебе дескриптор по-идее.

gear ★★★
()
Ответ на: комментарий от Unicode4all

А еще можно попробовать без либ. Там по моей ссылке выше вот такой пример:

struct vt_stat vtInfo;
ioctl(fdConsole, VT_GETSTATE, &vtInfo);
Твой вызов

VT_OPENQRY

тоже по-идее должен через ioctl работать, только возвращать будет другую структуру.

gear ★★★
()
Ответ на: комментарий от gear

Спасибо за статью, добавил в закладки. Теперь вроде все стало понятно, хотя все равно интересно, почему chvt из busybox'a использует этот магический get_console_fd.

Unicode4all ★★★★★
()
Ответ на: комментарий от gear

то, что статья времён ядра v1.0, с которого могли перепилить что угодно. поищи «since» в man console_ioctl, например

anonymous
()
Ответ на: комментарий от devsdc

Так и есть, выше на такую железку дали ссылку.

X10Dead ★★★★★
()
Ответ на: комментарий от devsdc

Вполне может быть. Консоль с терминалом всегда путаю.

gear ★★★
()
Ответ на: комментарий от gear

просто признай, что ты даже не посмотрел на дату публикации и притащил сюда уг мамонта

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.