2013년 1월 31일 목요일

터미널, 콘솔, console, tty, pts


터미널, 콘솔, console, tty, pts


tty = teletypewriter. 전신 타자기에서 유래했다고 합니다.
pts = Pseudo TTY Slave. 가짜 tty로 2048 개까지 생성할 수 있습니다.


본래 tty 는 물리적인 환경에서 직접 조작하는 터미널을 말합니다. 우리가 컨트롤 + 알트 + 펑션키를 누르면 나오는 터미널 창이 바로 그것입니다.(아시다시피 유닉스는 서버가 따로 있고 터미널을 통해 접속하던 방식이었습니다.)

유닉스는 이 터미널 창까지만 설치하는 게 기본입니다. 베이스만 설치한 아치 리눅스나 베이스만 설치한 FreeBSD가 딱 기본만 하는 것입니다.

그래서 우리가 흔히 접하는 그래픽 유저 인터페이스는 따로 tty 위에 뭔가를 쌓아올려야 합니다. startx 라 입력하면, 엑스윈도우를 올리고 다시 DE(데스크탑 환경)을 올리고... 그러면 나오는 것이 그놈환경이니, KDE 환경이니, 오픈박스 환경이니 하는 것들 입니다.

/dev/console 는 /dev/tty0 인데, 콘솔 모드로 접속하면 tty1 을 띠웁니다. 만약 startx 로 엑스윈도우를 올리면, 엑스윈도우에 tty7 을 할당합니다. 그러니까, 사실 따지고 보면 엑스윈도우도 또 하나의 tty 라는 소리입니다.

엑스윈도우 상에서 터미널을 연다는 의미는 tty7 의 기반 위에서 터미널을 열겠다는 의미입니다. 무슨 말이냐면, 엑스윈도우 상에서 새로운 tty 를 띠우려 하면, 엑스윈도우를 빠져나가 또 다른 tty 가 생성될 테니, 뭔가 다른 방식을 이용해야 한다는 말입니다.

그래서 나온 것이 바로 터미널 에뮬레이터입니다. 에뮬레이션 기법을 이용합니다.
우리가 흔히 엑스윈도우 상에서 띄우는 터미널들은 사실은 에뮬레이터이고, tty 대신 가짜라는 의미의 pts 로 관리되는 것입니다.

이제 확인해 봅시다.

엑스윈도우 상에서 터미널 창을 열어봅니다.

tty 라 입력해 봅니다. 또는 w

컨트롤 + 알트 + 펑션키를 눌러 새로운 터미널을 엽니다.(콘솔에서의 전환은 그냥 알트 + 펑션키)

tty 라 입력해 봅니다.

출력이 조금 다를 겁니다.

엑스 상에서는 /dev/pts/0 이런 식으로 나올 것이고...
터미널에서는 /dev/tts1 이런 식일 겁니다.

둘 사이는 개념적으로 차이가 있다는 말입니다.

tty 는 물리적인 콘솔에서 직접 조작하는 개념이고, pts 는 telnet 처럼 원격에서 접속하거나 엑스윈도우 상에서 터미널 에뮬레이터를 통해 접속할 때 사용하는 접속점의 개념입니다. 로그인을 콘솔에서 했느냐, 원격지에서 했느냐에 따라 차이가 나는 것입니다.

대부분의 시스템에서 터미널은 /etc/inittab 에 정의되어 있는데, 일단 6 개를 사용할 수 있게 등록되어 있습니다.

ps aux | grep tty

라고 입력하면, 현재의 가용할 수 있는 tty 를 보여줍니다. getty 에 의해 6개가 준비되어 있고, 우리들의 엑스윈도우는 7번째 tty 임을 알 수 있습니다. (7번째 tty 인지라 알트 + F7 누르면 다시 엑스윈도우로 돌아오게 되는 겁니다.)
만약 tty2 을 활성화하여, startx 같은 걸로 엑스윈도우를 띄웠다면 8번째 tty 가 되겠지요.


참고...

/dev/console = 시스템 관리자 콘솔. /dev/tty0 를 가리킨다.
/dev/tty0 = 현재의 가상 콘솔이다.
/dev/ttyS? 시리얼 포트를 통한 통신 모드 콘솔이다.
/dev/tty[1-x] = 컨트롤+알트+Fn키를 누르면 스위칭되는 콘솔이다.
/dev/tty = 숫자가 붙지 않은 tty. 프로세스 질의에 사용된다.


댓글 없음:

댓글 쓰기