виртуальный терминал (vt aka tty). Вопросы.
Модератор: Olej
виртуальный терминал (vt aka tty). Вопросы.
Доьрый день.
Вот пытаюсь понять концепцию виртуальных терминалов в Linux. Появились вопросы - хотел бы их задать:
-1. Мы начали загружаться - и видим графическую загрузку Ubuntu. Иксы
ещё не стартовали. Что отвечает за графический вывод ?
0. Вот мы загрузились и видим перед собой gdm (kdm). Работает ли X сервер в этот момент?
1. Я так понимаю что со старта - Ubuntu запускает семь (default) вирт. терминалов, на одном из которых (седьмой по-умолчанию) - запускается gdm + X11. Может ли на одном vt быть запущено более одного X сервера одновременно(довустим они настроены для работы каждый со своей видеокартой и мониторами)?
2. Можем ли мы запустить ещё один X сервер на другом vt если на vt7 X сервер уже запущен? а) для одного и тогоже пользователя б) для разных пользователей
3. Вот мы залогинились на vt1 и vt2 под одним и тем же пользователем. Сессии. Это одна и таже сессия или две разных ?
4. Я так понимаю что залогинившись и под собой в vt7 и перейдя в vt1, опять же под собой, я могу погасить иксы на vt7 сделав sudo service gdm stop. Как так получаеться что я могу достучаться до программы запущеной с другого vt? Или это только типа "сервисы" шаряться между разными vt ? Или как вообще?
6. Где можно посмотреть схему как связаны между собой - множество экземпляров vt, множество экземпляров X серверов, множество сессий , множество видеоадаптеров (и их драйверов)?
Спасибо.
Вот пытаюсь понять концепцию виртуальных терминалов в Linux. Появились вопросы - хотел бы их задать:
-1. Мы начали загружаться - и видим графическую загрузку Ubuntu. Иксы
ещё не стартовали. Что отвечает за графический вывод ?
0. Вот мы загрузились и видим перед собой gdm (kdm). Работает ли X сервер в этот момент?
1. Я так понимаю что со старта - Ubuntu запускает семь (default) вирт. терминалов, на одном из которых (седьмой по-умолчанию) - запускается gdm + X11. Может ли на одном vt быть запущено более одного X сервера одновременно(довустим они настроены для работы каждый со своей видеокартой и мониторами)?
2. Можем ли мы запустить ещё один X сервер на другом vt если на vt7 X сервер уже запущен? а) для одного и тогоже пользователя б) для разных пользователей
3. Вот мы залогинились на vt1 и vt2 под одним и тем же пользователем. Сессии. Это одна и таже сессия или две разных ?
4. Я так понимаю что залогинившись и под собой в vt7 и перейдя в vt1, опять же под собой, я могу погасить иксы на vt7 сделав sudo service gdm stop. Как так получаеться что я могу достучаться до программы запущеной с другого vt? Или это только типа "сервисы" шаряться между разными vt ? Или как вообще?
6. Где можно посмотреть схему как связаны между собой - множество экземпляров vt, множество экземпляров X серверов, множество сессий , множество видеоадаптеров (и их драйверов)?
Спасибо.
Re: виртуальный терминал (vt aka tty). Вопросы.
-1. Где же там графическая? Там одни буковки - это текстовый режим. А заставку можно, например, закодировать по пикселям.
0. У разных дистрибутивов немного разный сценарий загрузки. Не знаю как в Ubuntu. Посмотрите сами. Для этого перейдите в любой другой vt и запустите команду pstree -cup увидите все процессы в виде дерева.
1. Нет.
2. Только если они настроены для работы каждый со своей видеокартой и мониторами.
3. Опять поможет команда pstree -cup у каждого процесса есть уникальный номер.
4. Вообще: у каждого процесса есть один хозяин. Вы можете делать что угодно с вашими собственными процессами (и неважно из какого vt). А root может работать со всеми процессами.
6. При помощи команды pstree -cup.
Не придавайте вы виртуальным терминалам мистического значения - это просто семь дверей одного дома. В доме все идет своим чередом, независимо от того в какую из дверей вы вошли.
0. У разных дистрибутивов немного разный сценарий загрузки. Не знаю как в Ubuntu. Посмотрите сами. Для этого перейдите в любой другой vt и запустите команду pstree -cup увидите все процессы в виде дерева.
1. Нет.
2. Только если они настроены для работы каждый со своей видеокартой и мониторами.
3. Опять поможет команда pstree -cup у каждого процесса есть уникальный номер.
4. Вообще: у каждого процесса есть один хозяин. Вы можете делать что угодно с вашими собственными процессами (и неважно из какого vt). А root может работать со всеми процессами.
6. При помощи команды pstree -cup.
Не придавайте вы виртуальным терминалам мистического значения - это просто семь дверей одного дома. В доме все идет своим чередом, независимо от того в какую из дверей вы вошли.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: виртуальный терминал (vt aka tty). Вопросы.
Именно так. Потому как система X и всё, что связано с GUI - в UNIX (Linux):dmitriev писал(а): Не придавайте вы виртуальным терминалам мистического значения - это просто семь дверей одного дома.
- это "внешняя" пользовательская подсистема ... даже работу с портами видеоадаптера (драйвера видеоадаптера) X11 производит в юзерспейс, не используя пространство ядра, модули etc. (не считая каких-то дополнительных проприетарных заморочек, например NVIDIA, ...);
- эта внешняя надстройка X11 может быть в системе, а может её и вовсе не быть (часто в серверах) - от этого системы не убудет... а вот GUI без ядра или консольной терминальной системы быть не может;
- X11 вообще принципиально сетевая система (и X - сетевой протокол):
Код: Выделить всё
[olej@notebook etc]$ cat /etc/services | grep ' X '
xdmcp 177/tcp # X Display Mgr. Control Proto
x11 6000/tcp X # the X Window System
xfs 7100/tcp font-service # X font server
gss-xlicen 128/tcp # GSS X License Verification
gss-xlicen 128/udp # GSS X License Verification
font-service 7100/udp # X Font Service
Наличие графического вывода вовсе не означает (не связано) с X11 - переведите сами видеоадаптер (записью по портам) в графический видеорежим - и будет вам счастье , некоторые программы так и делают, простейший пример - загрузчик GRUB, который прорисовывает графический экран, вот такую картинку:vola писал(а): -1. Мы начали загружаться - и видим графическую загрузку Ubuntu. Иксы
ещё не стартовали. Что отвечает за графический вывод ?
Код: Выделить всё
[olej@notebook grub]$ sudo cat /boot/grub/menu.lst | grep image
splashimage=(hd0,0)/grub/splash.xpm.gz
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: виртуальный терминал (vt aka tty). Вопросы.
Не вирт. терминалов(с) а текстовых консолей.vola писал(а): 1. Я так понимаю что со старта - Ubuntu запускает семь (default) вирт. терминалов, на одном из которых (седьмой по-умолчанию) - запускается gdm + X11. Может ли на одном vt быть запущено более одного X сервера одновременно(довустим они настроены для работы каждый со своей видеокартой и мониторами)?
В Linux (в отличие, например, от FreeBSD, как мне помнится?) число таких консолей — величина легко изменяемая динамически (настройками, в ходе работы, без пересборки ядра).
В старой системе конфигурирования это было:
Код: Выделить всё
$ cat /etc/inittab
...
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
...
Код: Выделить всё
[olej@notebook etc]$ cat /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/event.d/rcS
#
# Individual runlevels are started by /etc/event.d/rc[0-6]
#
# Ctrl-Alt-Delete is handled by /etc/event.d/control-alt-delete
#
# Terminal gettys (tty[1-6]) are handled by /etc/event.d/tty[1-6] and
# /etc/event.d/serial
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(8), initctl(8), and events(5).
#
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
Код: Выделить всё
olej@atom:/etc$ cat /etc/inittab
cat: /etc/inittab: Нет такого файла или каталога
- в Fedora:
Код: Выделить всё
[olej@notebook event.d]$ pwd
/etc/event.d
[olej@notebook event.d]$ ls tty*
tty1 tty2 tty3 tty4 tty5 tty6
[olej@notebook event.d]$ cat tty1
# tty1 - getty
#
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.
start on stopped rc2
start on stopped rc3
start on stopped rc4
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6
respawn
exec /sbin/mingetty tty1
Код: Выделить всё
olej@atom:/etc/init$ pwd
/etc/init
olej@atom:/etc/init$ ls tty*
tty1.conf tty2.conf tty3.conf tty4.conf tty5.conf tty6.conf
olej@atom:/etc/init$ cat tty1.conf
# tty1 - getty
#
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.
start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]
respawn
exec /sbin/getty -8 38400 tty1
Код: Выделить всё
olej@atom:/etc/init$ ls /dev/tty*
/dev/tty /dev/tty13 /dev/tty19 /dev/tty24 /dev/tty3 /dev/tty35 /dev/tty40 /dev/tty46 /dev/tty51 /dev/tty57 /dev/tty62 /dev/ttyS1
/dev/tty0 /dev/tty14 /dev/tty2 /dev/tty25 /dev/tty30 /dev/tty36 /dev/tty41 /dev/tty47 /dev/tty52 /dev/tty58 /dev/tty63 /dev/ttyS2
/dev/tty1 /dev/tty15 /dev/tty20 /dev/tty26 /dev/tty31 /dev/tty37 /dev/tty42 /dev/tty48 /dev/tty53 /dev/tty59 /dev/tty7 /dev/ttyS3
/dev/tty10 /dev/tty16 /dev/tty21 /dev/tty27 /dev/tty32 /dev/tty38 /dev/tty43 /dev/tty49 /dev/tty54 /dev/tty6 /dev/tty8
/dev/tty11 /dev/tty17 /dev/tty22 /dev/tty28 /dev/tty33 /dev/tty39 /dev/tty44 /dev/tty5 /dev/tty55 /dev/tty60 /dev/tty9
/dev/tty12 /dev/tty18 /dev/tty23 /dev/tty29 /dev/tty34 /dev/tty4 /dev/tty45 /dev/tty50 /dev/tty56 /dev/tty61 /dev/ttyS0
Это не точно, это зависит от конфигурирования запуска X11: в Ubuntu это 7-я (Ctrl+Alt+F7), а в Fedora это 1-я (Ctrl+Alt+F7):vola писал(а): на одном из которых (седьмой по-умолчанию) - запускается gdm + X11.
Код: Выделить всё
[olej@notebook event.d]$ who
olej tty1 2011-12-01 11:20 (:0)
...
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: виртуальный терминал (vt aka tty). Вопросы.
Это весьма проблематично, ... потому как X-сервер - это сетевая прослушивающая система, которая поддерживает (монопольно!) физическое оборудование в составе: устройство отображения (видеоадаптер) + устройства ввода (клавиатура, мышь).vola писал(а): 2. Можем ли мы запустить ещё один X сервер на другом vt если на vt7 X сервер уже запущен? а) для одного и тогоже пользователя б) для разных пользователей
Если вы каким-то изощрённым образом создадите такой комплект устройств ввода-вывода для X-сервера (ну, например, /dev/ttyS0 для клавиатуры - сериальный терминал VT-100 ), то, наверное сможете запустить X-сервер для обслуживания такого оборудования.
Менеджеры gdm/kdm, которые вы упомнили, это менеджеры оконных систем, это слой существенно уже выше, чем сам X-сервер ... который запускался вот так:
Код: Выделить всё
olej@atom:/etc/init$ ps -Af | grep X
root 1142 1045 0 14:01 tty7 00:00:02 /usr/bin/X :0 -br -verbose -auth /var/run/gdm/auth-for-gdm-c8ZMfX/database -nolisten tcp vt7
olej 26509 3224 0 14:32 pts/1 00:00:00 grep --color=auto X
Один из (самый простой) способ запуска X11 был используя startx ... можете поизучать его man:
Код: Выделить всё
olej@atom:/etc/init$ which startx
/usr/bin/startx
olej@atom:/etc/init$ man startx
STARTX(1) STARTX(1)
NAME
startx - initialize an X session
SYNOPSIS
startx [ [ client ] options ... ] [ -- [ server ] [ display ] options ... ]
...
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: виртуальный терминал (vt aka tty). Вопросы.
Я как-то вообще не понял: а что такое концепция виртуальных терминалов (с) и что такое вообще виртуальные терминалы?vola писал(а):Вот пытаюсь понять концепцию виртуальных терминалов в Linux. Появились вопросы - хотел бы их задать:
Может имелось в виду обсуждение псевдотерминалов? /dev/pts:
Код: Выделить всё
olej@atom:/dev$ ls -l /dev/pts
итого 0
crw--w---- 1 olej tty 136, 0 2011-12-01 15:11 0
crw--w---- 1 olej tty 136, 1 2011-12-01 15:11 1
crw--w---- 1 olej tty 136, 2 2011-12-01 14:38 2
c--------- 1 root root 5, 2 2011-12-01 14:01 ptmx
olej@atom:/dev$ man pts
PTS(4) Linux Programmer's Manual PTS(4)
NAME
ptmx and pts - pseudo-terminal master and slave
...
Вот здесь попалось поверхностное, но хорошее для начала введение в предмет: http://ru.wikibooks.org/wiki/Введение_в ... трока_UNIX.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: виртуальный терминал (vt aka tty). Вопросы.
Вопросы то - хорошие ... не тривиальные...vola писал(а): 2. Можем ли мы запустить ещё один X сервер на другом vt если на vt7 X сервер уже запущен? а) для одного и тогоже пользователя б) для разных пользователей
3. Вот мы залогинились на vt1 и vt2 под одним и тем же пользователем. Сессии. Это одна и таже сессия или две разных ?
4. Я так понимаю что залогинившись и под собой в vt7 и перейдя в vt1, опять же под собой, я могу погасить иксы на vt7 сделав sudo service gdm stop. Как так получаеться что я могу достучаться до программы запущеной с другого vt? Или это только типа "сервисы" шаряться между разными vt ? Или как вообще?
Прежде всего, посмотрите вот этот текст: Инструменты Linux для Windows-программистов - там затронуты (может не совсем достаточно) часть из заданных вопросов...
А далее ...
Сам X-сервер не знает ни о каких пользователях, не предусматривает никаких логонов... То, что вы видите как логон на входе - это уже действие оконного менеджера, более высокого уровня надстройки. Убедиться в этом легко так:
Код: Выделить всё
[olej@notebook ~]$ uname -n
notebook.localdomain
[olej@notebook ~]$ ip addr show wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:13:02:69:70:9b brd ff:ff:ff:ff:ff:ff
inet 192.168.1.22/24 brd 192.168.1.255 scope global wlan0
inet6 fe80::213:2ff:fe69:709b/64 scope link
valid_lft forever preferred_lft forever
[olej@notebook ~]$ ssh -nfX -l olej 192.168.1.9 xterm
olej@192.168.1.9's password:
[olej@notebook ~]$
P.P.S. обратите внимание, что на выводе who в xterm ещё нет сессии gdm на /dev/tty1 - хост nvidia у меня висел в это время на начальном логоне gdm
Re: виртуальный терминал (vt aka tty). Вопросы.
Да да, кажется начинаю понимать. Тоесть есть дом - а в нём процессы(у каждого свой хозяин) - и это главное, двери - посто средство входа в дом - не более - и войдя в дом система неизбежно знает кто я - чтобы определять что я могу в доме делать а что нет. (Я проверил - будучи залогиненным под разными vt - успешно убил процесс, стартовавший из другого vt). До смешного просто - но это было не очевидно до метафоры дверей в голове. И вот who - как раз и показывает кто в системе, и через какую дверь вошёл(tty/сеть/X).
Пока, правда, трудно понять почему я не могу стартовать два X сервера с одного vt, но с двух разных - можно(исхитрившись). Полагаю, дело не в каких-то непонятных свойствах vt(как я думал раньше), а именно в реализации X сервера - тоесть он как - то зависит от способа входа (двери) через которую я вошёл - и не даёт сапустить второй инстанс. Я к тому что можно, например, написать свою реализацию X которая позволяла бы это сделать с одного vt (раздав каждому свои устойства ввода-вывода и порты прослушки).
Пока, правда, трудно понять почему я не могу стартовать два X сервера с одного vt, но с двух разных - можно(исхитрившись). Полагаю, дело не в каких-то непонятных свойствах vt(как я думал раньше), а именно в реализации X сервера - тоесть он как - то зависит от способа входа (двери) через которую я вошёл - и не даёт сапустить второй инстанс. Я к тому что можно, например, написать свою реализацию X которая позволяла бы это сделать с одного vt (раздав каждому свои устойства ввода-вывода и порты прослушки).
Кстати, как корректно называть то, куда мы попадаем после Ctl + Alt + F2 ?Не вирт. терминалов(с) а текстовых консолей.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: виртуальный терминал (vt aka tty). Вопросы.
Текстовая консоль №2vola писал(а):Кстати, как корректно называть то, куда мы попадаем после Ctl + Alt + F2 ?Не вирт. терминалов(с) а текстовых консолей.
Которых может быть до 64-х.
И число которых залогиненных (! - не те все 6, которые создаются статически по дефаулту, а те, которые из них используются) можно посмотреть:
Код: Выделить всё
[olej@notebook ~]$ fgconsole
1
Код: Выделить всё
[olej@notebook ~]$ which Terminal
/usr/bin/Terminal
[olej@notebook ~]$ which xterm
/usr/bin/xterm
[olej@notebook ~]$ ls /usr/bin/*term*
/usr/bin/gnome-terminal /usr/bin/lxterminal /usr/bin/pterm /usr/bin/terminal /usr/bin/xfterm4
/usr/bin/koi8rxterm /usr/bin/ppmtoterm /usr/bin/setterm /usr/bin/uxterm /usr/bin/xterm
А переключаться между которыми можно (а как вы переключитесь на 21-ю консоль, когда у вас <Ctrl>+<Alt>+<F21> нет такой клавиши <F21> ):
Код: Выделить всё
[olej@notebook ~]$ chvt 5
chvt: VT_ACTIVATE: Операция не позволяется
[olej@notebook ~]$ sudo chvt 5
[olej@notebook ~]$
P.S. интересный эффект, если при 6-ти дефаулнтых консолях сказать :
Код: Выделить всё
[olej@notebook ~]$ sudo chvt 15
[olej@notebook ~]$
Re: виртуальный терминал (vt aka tty). Вопросы.
Потому что в том vt, где уже запущены иксы, нет командной строки.vola писал(а):трудно понять почему я не могу стартовать два X сервера с одного vt, но с двух разных - можно(исхитрившись)
Перейдите в tty7, куда там команду вписывать?
Вы вполне корректно называете это виртуальным терминалом. Есть даже команда chvt, то есть changevirtualterminalvola писал(а):как корректно называть то, куда мы попадаем после Ctl + Alt + F2 ?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя