콘솔간 이동의 기본 키는 Alt-Fn 또는 Ctrl-Alt-Fn이다. X
환경이나
최근 버전의 dosemu
에서는 Ctrl-Alt-Fn 만이 제대로 작동할 것이다.
많은 keymaps에서 Alt-오른화살 키와 Alt-왼화살 키로 할당된 콘솔간의
순환식 이동을 허용한다.
XFree86 1.3은 X 윈도우로 이동할 때, Alt 키가 눌려 있는 것을 인식하지 못한다. 따라서 다른 VT로 즉각 되돌아가지 못하고, Alt 키를 떼어야 반응을 한다. 다른 곳에서는 잘 작동된다. 커널은 항상 모든 키의 누름/뗌 상황을 추적한다. (물론 가능한 한 그렇다는 이야기다. 몇몇 키보드의 어떤 키들은 눌리거나(FOCUS 9000의 PFn 키) 뗄 때(많은 키보드의 Pause 키) 스캔코드를 보내지 않아 어쩔 수 없는 경우도 있다.)
XFree86 1.3은 처음 시작될 때, 문자 ROM에 로드된 폰트를 저장해두고
콘솔간 이동을 할 때, 그것을 꺼내어 사용한다. 따라서 VT에서 setfont
를
사용하면 X로 이동했다가 되돌아오면 이전 값으로 복귀된다.
X 환경에서 setfont
를 사용하면 이상한 일들이 생긴다.
chvt
명령을 사용하면 프로그램 사용중에도 VT를 바꿀 수 있다.
이 질문은 아직도 가끔 나오지만 사실 디폴트로 설정된 갯수으로도
충분하다. 커널 1.1.54이후로 1부터 63 사이의 가상 콘솔이 존재한다.
새로운 가상 콘솔은 생성되면서 열린다. deallocvt
라는 유틸리티를
사용하면 없앨 수 있다. (그러나 없앨려면 여기에 연결된 프로세스가
하나도 없고, selection
이나 gpm
같은 프로그램이 이 콘솔에
있는 텍스트를 선택하고 있지 않아야 한다.)
이보다 이전 버전의 커널인 경우라면 include/linux/tty.h
에
있는
#define NR_CONSOLES 8
를 바꾸어주고 커널을 컴파일하면 된다. (이 숫자를 63보다 크게 하지는 말 것.)
가상 콘솔이 아예 없는 경우라면 MAKEDEV
또는 mknod tty
N
c 4
N (여기서 N은 tty 번호를 지정)로 tty 디바이스를 만들 수 있다.
예를 들어보면
for i in 9 10 11 12; do mknod /dev/tty$i c 4 $i; done
좀 더 좋은 예로는 (이 방법이 사용자와 허가권에 유의한다.),
for i in 9 10 11 12; do /dev/MAKEDEV tty$i; done
getty
를 돌릴 VC가 새로 필요하다면 /etc/inittab
에 라인을
추가하면 된다. (하지만 사용하고 있는 getty
가 두개만 있는 것이
좋다. 그리고 추가로 더 필요해지면 동적으로 생성하면 된다. 사용자가
모든 콘솔을 사용하지 않는다면 이 방식이 보다 많은 메모리를 사용할 수
있다. /etc/inittab
를 열어서 최초의 두개를 제외한 모든
getty
를 주석으로 막아 두어라.)
콘솔을 동적으로 할당받을 때는 getty
가 하나나 두개 정도만 돌도록 하는 것이
가장 쉽다. open -l -s bash
라고 하면 더 많이 열 수 있다.
(연결된 프로세스가 없는) 사용하지 않는 콘솔은 deallocvt
(예전에는
disalloc
)을 사용하여 없앨 수 있다. 그러나 작업중에 갑자기 콘솔이
더 필요해져서 당장 open
명령을 내릴 bash 프롬프트가 없다면 어떻게
하는가? 다행이도 현재 콘솔에서 무슨 일을 하건, 한 큐로 새로운 콘솔을 만드는
방법이 있다.
kbd-0.95.tar.gz
에 있는 spawn_login
을 설치하고
/etc/rc.local
에 다음과 같이 넣어 두어라.
loadkeys << EOF
alt keycode 103 = Spawn_Console
EOF
spawn_login &
그 다음에 Alt-위화살 키를 누르면 login
을 돌리고 있는 새로운 VC가
생성될 것이다. (물론 생성되어서 그곳으로 이동된다.)
spawn_login &
대신에 spawn_console &
를 설치했다면
아마도 새 콘솔에 bash가 돌고 있을 것이다. open-1.4.tgz
와
dynamic-vc-1.1.tar.gz
를 참고하라.
최신 버전의 init
를 가지고 있다면 /etc/inittab
의
kbrequest
아래에서 Spawn_Console 키가 눌렸을 때 무슨 작동을
하는지 설정할 수 있다. inittab(5)를 참고할 것.
(이 동작은 완전히 다른 것으로 설정되어 있을 수 있다. Spawn_Console 키는
내가 사용하기 때문에 부르는 이름일 뿐이다. 다른 목적으로 사용한다면
덜 헷갈리도록 다른 이름을 붙이는 것이 좋을 것이다. 어떤 사람들은
/etc/inittab
에
kb::kbrequest:/sbin/shutdown -h now
라고 넣어두고, keymap에는
control alt keycode 79 = KeyboardSignal
control alt keycode 107 = KeyboardSignal
를 넣어두고서 Ctrl-Alt-End를 시스템 셧다운 키로 사용하기도 한다.
루트 권한으로의 접속은 /etc/securetty
에 등록되어 있는 터미널에서만
가능하다. /etc/ttys
와 /etc/ttytype
화일에서 터미널 설정값을
읽는 프로그램이 있다. 이런 화일을 가진 사용자가 추가로 콘솔을 생성했다면
이 콘솔 항목을 이 화일에 추가하는 것도 괜찮은 생각이다.