текстовые консоли

Установка, обновление, настройка Linux

Модераторы: Olej, adminn

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

текстовые консоли

Непрочитанное сообщение Olej » 31 мар 2017, 14:54

Текстовый режим консоли.
Переключаемся между консолями: Ctrl+Alt+Fi.
В одной из (равноправных) консолей запускается X-сервер и организуется графическое DE:

Код: Выделить всё

[olej@dell ACCOUNTS]$ who
olej     :0           2017-03-19 10:19 (:0)
Утверждается, иногда, что вот так (Ctrl+Alt+Fi) можно переключаться между 12 консолями.
Это неверно!
Можно переключаться между 63 виртуальными консолями вот так, командой:

Код: Выделить всё

# chvt 1
...
# chvt 63
...
Вот то "chvt 1" выше - полностью эквивалентно Ctrl+Alt+F1 ... и т.д.

Посмотреть все какие у вас есть VT можете так:

Код: Выделить всё

# ls /dev/tty[0123456789]*
[olej@dell mnt]$ ls /dev/tty[0123456789]*
/dev/tty0   /dev/tty14  /dev/tty2   /dev/tty25  /dev/tty30  /dev/tty36  /dev/tty41  /dev/tty47  /dev/tty52  /dev/tty58  /dev/tty63
/dev/tty1   /dev/tty15  /dev/tty20  /dev/tty26  /dev/tty31  /dev/tty37  /dev/tty42  /dev/tty48  /dev/tty53  /dev/tty59  /dev/tty7
/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/tty13  /dev/tty19  /dev/tty24  /dev/tty3   /dev/tty35  /dev/tty40  /dev/tty46  /dev/tty51  /dev/tty57  /dev/tty62
Если вы выбираете консоль с номером ... больше некоторого, например 7, то открывается просто черное окно с мигающим курсором, ничего вводить не получается. Это значит, что у вас VT7 не инициализирована запуском логин-программы.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: текстовые консоли

Непрочитанное сообщение Olej » 31 мар 2017, 14:55

Я бы не писал это всё, если бы не...

В старой системе инициализации sysinit инициализация консолей описывалась так (я сам же и писал):
В этом варианте начальная инициализация консолей, как нам и подсказывает показанный комментарий, происходит в каталоге :

Код: Выделить всё

# ls /etc/event.d/tty*
tty1  tty2  tty3  tty4  tty5  tty6                                                                                      
# cat /etc/event.d/tty6
...
respawn
exec /sbin/mingetty tty6
...
Но как посмотреть инициализированные консоли в новой системе инициализации systemd?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: текстовые консоли

Непрочитанное сообщение Olej » 31 мар 2017, 14:58

Olej писал(а):Если вы выбираете консоль с номером ... больше некоторого, например 7, то открывается просто черное окно с мигающим курсором, ничего вводить не получается. Это значит, что у вас VT7 не инициализирована запуском логин-программы.
Но вот так, например, вы можете (для эксперимента) запустить логин на 25-й консоли:

Код: Выделить всё

[olej@dell mnt]$ sudo openvt -f -c25 -l login
А затем перейти в эту текстовую консоль и там зарегистрироваться:

Код: Выделить всё

[root@dell system]# chvt 25
После чего увидите что-то типа такого:

Код: Выделить всё

[olej@dell ACCOUNTS]$ who
olej     :0           2017-03-19 10:19 (:0)
root     tty25        2017-03-31 14:17
P.S. (затем вернётесь назад в GUI с помощью Ctrl+Alt+F1)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: текстовые консоли

Непрочитанное сообщение Olej » 31 мар 2017, 15:08

Olej писал(а):Но как посмотреть инициализированные консоли в новой системе инициализации systemd?
Olej писал(а):В старой системе инициализации sysinit инициализация консолей описывалась так (я сам же и писал):
сам же я и писал
Число текстовых консолей (обычно по умолчанию 6) в Linux (в отличие, например, от FreeBSD) — величина легко изменяемая динамически (настройками, в ходе работы, без пересборки ядра). При работе именно с программами ядра число консолей может понадобится значительно увеличить... В некоторых более старых дистрибутивах (и других UNIX системах) используется хорошо описанный способ — конфигурационный файл /etc/inittab:

Код: Выделить всё

$ uname -r
2.6.18-92.el5
$ 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
...
И это часто повторяют из одного учебника Linux в другой... Это идёт ещё от самых старых UNIX систем, SunOS, Minix 2 и т.д. ... из книги Робачевского и т.д.

Но ... далее это было так:
Olej писал(а): Но в большинстве новых дистрибутивах файл /etc/inittab практически пустой:

Код: Выделить всё

# uname -r
2.6.32.9-70.fc12.i686.PAE
# cat /etc/inittab
...
# Terminal gettys (tty[1-6]) are handled by /etc/event.d/tty[1-6] and
# /etc/event.d/serial
...
В этом варианте начальная инициализация консолей, как нам и подсказывает показанный комментарий, происходит в каталоге :

Код: Выделить всё

# ls /etc/event.d/tty*
tty1  tty2  tty3  tty4  tty5  tty6                                                                                      
# cat /etc/event.d/tty6
...
respawn
exec /sbin/mingetty tty6
...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: текстовые консоли

Непрочитанное сообщение Olej » 31 мар 2017, 17:11

Olej писал(а): А затем перейти в эту текстовую консоль и там зарегистрироваться:
Здесь вот подсказали
После завершения всех процессов в виртуальной консоли и выхода из shell'а можно освободить слоты для виртуальных консолей через команду "deallocvt".

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: текстовые консоли

Непрочитанное сообщение Olej » 31 мар 2017, 17:52

Olej писал(а):Но как посмотреть инициализированные консоли в новой системе инициализации systemd?
1.

Код: Выделить всё

[olej@dell mnt]$ man systemd-getty-generator
...
3. systemd for Administrators, Part XVI: Gettys on Serial Consoles (and Elsewhere)
http://0pointer.de/blog/projects/serial-console.html
2.
systemd для администраторов
Lennart Poettering (автор)
Сергей Пташник (русский перевод)
Данный документ доступен на условиях лицензии CC-BY-SA 3.0 Unported
17 февраля 2017 г.
...
16 Запуск getty на последовательных (и не только) консолях . . . . . . 60
16.1 Виртуальные консоли . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
16.2 Последовательные консоли . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
В этой статье я хочу рассказать о том, как в systemd реализован запуск getty на терминалах различных типов.
Тем не менее, для общего образования все же стоит рассмотреть некоторые тонкости
запуска getty в systemd. Эта задача решается двумя шаблонами юнитов
* getty@.service - отвечает за виртуальные консоли (virtual terminals, VT, известные в системе под именами /dev/tty1, /dev/tty2 и т.д.) — те, которые вы можете увидеть безо всякого дополнительного оборудования, просто переключившись на них из графического сеанса.
...
3.
getty
getty (сокращение от get teletype) — программа для UNIX-подобных операционных систем, управляющая доступом к физическим и виртуальным терминалам (tty). Программа выполняет запрос имени пользователя и запускает программу 'login' для авторизации пользователя.
getty(8)
agetty - alternative Linux getty

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: текстовые консоли

Непрочитанное сообщение Olej » 31 мар 2017, 18:16

Olej писал(а):Но как посмотреть инициализированные консоли в новой системе инициализации systemd?
Ещё раз подсказали:
В systemd это меняется в файле /etc/systemd/logind.conf через опцию "NAutoVTs=".

Код: Выделить всё

[root@dell systemd]# cat /etc/systemd/logind.conf 
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See logind.conf(5) for details.

[Login]
#NAutoVTs=6
#ReserveVT=6
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
#InhibitDelayMaxSec=5
#HandlePowerKey=poweroff
#HandleSuspendKey=suspend
#HandleHibernateKey=hibernate
#HandleLidSwitch=suspend
#HandleLidSwitchDocked=ignore
#PowerKeyIgnoreInhibited=no
#SuspendKeyIgnoreInhibited=no
#HibernateKeyIgnoreInhibited=no
#LidSwitchIgnoreInhibited=yes
#HoldoffTimeoutSec=30s
#IdleAction=ignore
#IdleActionSec=30min
#RuntimeDirectorySize=10%
#RemoveIPC=yes

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: текстовые консоли

Непрочитанное сообщение Olej » 31 мар 2017, 18:23

Olej писал(а):
Olej писал(а):Но как посмотреть инициализированные консоли в новой системе инициализации systemd?
Ещё раз подсказали:
В systemd это меняется в файле /etc/systemd/logind.conf через опцию "NAutoVTs=".
И, соответственно:

Код: Выделить всё

[olej@dell mnt]$ man logind.conf
...
SYNOPSIS
       /etc/systemd/logind.conf
       /etc/systemd/logind.conf.d/*.conf
       /run/systemd/logind.conf.d/*.conf
       /usr/lib/systemd/logind.conf.d/*.conf
...
       NAutoVTs=
           Takes a positive integer. Configures how many virtual terminals (VTs) to allocate by default that, when switched to and are previously
           unused, "autovt" services are automatically spawned on. These services are instantiated from the template unit autovt@.service for the
           respective VT TTY name, for example, autovt@tty4.service. By default, autovt@.service is linked to getty@.service. In other words,
           login prompts are started dynamically as the user switches to unused virtual terminals. Hence, this parameter controls how many login
           "gettys" are available on the VTs. If a VT is already used by some other subsystem (for example, a graphical login), this kind of
           activation will not be attempted. Note that the VT configured in ReserveVT= is always subject to this kind of activation, even if it
           is not one of the VTs configured with the NAutoVTs= directive. Defaults to 6. When set to 0, automatic spawning of "autovt" services
           is disabled.
...
и т.д.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: текстовые консоли

Непрочитанное сообщение Olej » 31 мар 2017, 18:42

Olej писал(а): 2.
systemd для администраторов
...
16 Запуск getty на последовательных (и не только) консолях . . . . . . 60
16.1 Виртуальные консоли . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
16.2 Последовательные консоли . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
16.1 Виртуальные консоли
Рассмотрим механизм запуска getty@.service, обеспечивающий появление пригла-
шений логина на виртуальных консолях (последовательны терминалы пока оставим в
покое). По устоявшейся традиции, init-системы Linux обычно настраивались на запуск
фиксированного числа экземпляров getty, как правило, шести (на первых шести вирту-
альных консолях, с tty1 по tty6).
В systemd мы сделали этот процесс более динамичным: чтобы добиться большей
скорости и эффективности, мы запускаем дополнительные экземпляры getty только
при необходимости. Например, getty@tty2.service стартует только после того, как вы
переключитесь на вторую виртуальную консоль. Отказавшись от обязательного запуска
нескольких экземпляров getty, мы сэкономили немного системных ресурсов, а также
сделали загрузку системы чуть-чуть быстрее. При этом, с точки зрения пользователя,
все осталось так же просто: как только он переключается на виртуальную консоль, на
ней запускается getty, которая выводит приглашение к логину. Пользователь может и
не подозревать о том, что до момента переключения приглашения не было. Тем не менее,
если он войдет в систему и выполнит команду ps, он увидит, что getty запущены только
на тех консолях, на которых он уже побывал.
Две консоли играют особую роль: tty1 и tty6. tty1, при загрузке в графическом
режиме, используется для запуска дисплейного менеджера, а при загрузке в многополь-
зовательском текстовом режиме, systemd принудительно запускает на ней экземпляр
getty, не дожидаясь переключений.
Что касается tty6, то она используется исключительно для автоматического запус-
ка getty, и недоступна другим подсистемам, в частности, графическому серверу. Мы
сделали так специально, чтобы гарантировать возможность входа в систему в текстовом
режиме, даже если графический сервер займет более пяти консолей.

Ответить

Вернуться в «Администрирование Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и 5 гостей