FAQ FreeBSD - Виртуальные консоли Х
ОГЛАВЛЕНИЕ
8.5. Что такое виртуальные консоли и как изменить их количество?
Виртуальные консоли, упрощённо говоря, позволяют вам иметь несколько однов
ременных сеансов работы с той же самой машиной без установки какой бы то ни
было сети или запуска X.
При запуске системы после вывода сообщений этапа загрузки на консоль выдаётся
приглашение на вход в систему. Вы можете ввести своё имя и пароль и начать
работать (или играть!) на первой виртуальной консоли.
В какой-то момент вы можете захотеть запустить ещё одну сеанс, скажем, чтобы
заглянуть в документацию по программе, которую вы запустили или для для чтения
электронной почты во время ожидания завершения передачи данных по FTP. Просто
нажмите Alt-F2 (удерживая клавишу Alt, нажмите F2) и вы обнаружите приглашение,
ждущее вас на второй "виртуальной консоли"! Когда захотите вернуться к перв
оначальному сеансу, нажмите Alt-F1.
После инсталляции по умолчанию во FreeBSD задействованы три виртуальных консоли
(8 начиная с 3.3-RELEASE), а комбинации клавиш Alt-F1, Alt-F2 и Alt-F3 служат
для переключения между ними.
Чтобы увеличить количество консолей, отредактируйте файл /etc/ttys, добавив
туда записи для терминалов с именами от ttyv4 до ttyvc после слов "Virtual
terminals":
# Edit the existing entry for ttyv3 in /etc/ttys and change
# "off" to "on".
ttyv3 "/usr/libexec/getty Pc" cons25 on secure
ttyv4 "/usr/libexec/getty Pc" cons25 on secure
ttyv5 "/usr/libexec/getty Pc" cons25 on secure
ttyv6 "/usr/libexec/getty Pc" cons25 on secure
ttyv7 "/usr/libexec/getty Pc" cons25 on secure
ttyv8 "/usr/libexec/getty Pc" cons25 on secure
ttyv9 "/usr/libexec/getty Pc" cons25 on secure
ttyva "/usr/libexec/getty Pc" cons25 on secure
ttyvb "/usr/libexec/getty Pc" cons25 on secure
Используйте из них столько, сколько посчитаете нужным. Чем больше виртуальных
терминалов у вас имеется, тем больше ресурсов они используют; это может иметь
значение, если у вас меньше чем 8МБ ОЗУ. Вы можете сменить статус консолей с
secure на insecure.
Important: Если вы хотите запустить X, вы должны оставить для него по
крайней мере один неиспользуемый (или выключенный) виртуальный терминал.
Таким образов, если вы хотите иметь приглашения login на всех двенадцати
функциональных клавиши, то вам не повезло - вы можете это сделать только
для одиннадцати из них, если хотите на этой же машине ещё запустить X-серв
ер.
Самым простым способом убрать консоль является просто её выключение. Например,
если вы запустили на всех 12 консолях виртуальные терминалы, как указано выше,
и ещё хотите запустить X, то должны будете изменить параметры двенадцатого в
иртуального терминала с:
ttyvb "/usr/libexec/getty Pc" cons25 on secure
на:
ttyvb "/usr/libexec/getty Pc" cons25 off secure
Если на вашей клавиатуре только десять функциональных клавиш, то последние
строки будут выглядеть так:
ttyv9 "/usr/libexec/getty Pc" cons25 off secure
ttyva "/usr/libexec/getty Pc" cons25 off secure
ttyvb "/usr/libexec/getty Pc" cons25 off secure
(Вы также можете просто их удалить.)
После того, как вы отредактировали файл /etc/ttys, проверьте, что у вас имеется
достаточное количество устройств для виртуальных терминалов. Самый простой
способ сделать это:
# cd /dev
# sh MAKEDEV vty12
Самым простым (и надёжным) способом активировать виртуальные консоли является
перезагрузка. Однако если вы вовсе не хотите этого делать, просто остановите X
Window System и выполните (как пользователь root):
# kill -HUP 1
При этом требуется, чтобы вы полностью закрыли X Window, если она была
запущена, до запуска этой команды. Если вы это не сделаете, ваша система может
повиснуть/заблокироваться после выполнения команды kill.
8.6. Как осуществляется доступ к виртуальным консолям из X?
Используйте комбинацию клавиш Ctrl+Alt+Fn для переключения обратно в в
иртуальную консоль. Нажатие Ctrl+Alt+F1 вернёт вас на первую виртуальную
консоль.
После того, как вы оказались в текстовой консоли, можете использовать, как
обычно, комбинации Alt+Fn для переключения между ними.
Чтобы вернуться в сеанс работы X, вы должны переключиться в виртуальную
консоль, на которой запущена X Window. Если вы запустили X из командной строки
(например, при помощи команды startx), то сеанс работы X будет привязан к
следующей неиспользуемой виртуальной консоли, а не к той текстовой консоли, с
которой он был запущен. Если у вас имеется восемь активных виртуальных
терминалов, то X будет работать на девятом, и вам нужно будет воспользоваться
комбинацией Alt+F9 для возврата в X.
8.7. Как запустить XDM во время загрузки?
Есть две философские школы, проповедующие различные методы запуска xdm. Последо
ватели одного течения запускают xdm из /etc/ttys, используя приводимый пример,
тогда как другие вставляют запуск xdm в скрипт rc.local или X.sh, поместив
последний в каталог /usr/local/etc/rc.d. Оба метода равноправны, и один из них
может работать в ситуациях, с которыми не справляется другой и наоборот. В
обоих случая результат один и тот же: X выводит графическое приглашение login:.
Плюсом метода с использованием ttys является документирование того, на каком
vty будет запущен X и то, что ответственность за перезапуск X-сервера при зав
ершении сеанса работы лежит на процессе init. Метод с использованием rc.local
позволяет просто прекратить работу xdm, если при запуске X возникли
какие-нибудь проблемы.
Из rc.local xdm должен быть запущен без аргументов, (то есть как даемон). xdm
должен быть запущен ПОСЛЕ запуска getty, иначе они будут конфликтовать,
блокируя консоль. Лучше всего выдержать паузу секунд на 10 и потом запустить
xdm.
Если xdm запускается из /etc/ttys, то есть вероятность конфликта между xdm и
getty. Одним из способов избежать этого является добавление номера vt в файл /
usr/X11R6/lib/X11/xdm/Xservers.
:0 local /usr/X11R6/bin/X vt4
В вышеприведённом случае X-серверу указывается работать на /dev/ttyv3.
Заметьте, что номера отличаются на единицу. Дело в том, что X-сервер считает
vty от единицы, когда как отсчёт vty в ядре FreeBSD ведётся с нуля.
8.8. При запуске xconsole выдаётся сообщение Couldn't open console.
Если вы запускаете X через скрипт startx, права на устройство /dev/console не
изменяются, поэтому такие команды, как xterm -C и xconsole, не будут работать.
Это зависит от прав доступа, установленных для консоли по умолчанию. В
многопользовательской системе вовсе не нужно, чтобы любой пользователь мог выв
одить информацию на системную консоль. Для пользователей, вошедших в систему
через VTY, для решения этой проблемы существует файл fbtab.
В общем, раскомментируйте строчку вида
/dev/ttyv0 0600 /dev/console
в файле /etc/fbtab, и этого будет достаточно для того, чтобы всякий, кто вошёл
в систему с /dev/ttyv0, будет иметь доступ к консоли.