한국어 Solaris 시스템 관리자 설명서

4장 TTY 환경과 지원

이 장은 사용자가 다음 사항을 잘 알고 있다는 것을 전제로 합니다.

STREAMS 및 TTY 드라이버에 대한 배경 정보에 대해서는 termio(7I) 설명서 페이지를 참조하십시오.

TTY 스트림

사용자의 셸과 터미널 사이의 데이터 경로를 스트림이라고 합니다. 스트림상의 데이터는 코드 세트나 통신 프로토콜의 변경에 우선하는 일련의 제어와 같이 데이터 처리에 영향을 주는 문자 및 제어 정보를 포함합니다. 터미널에서 스트림에 입력되는 데이터는 가공되지 않은 데이터입니다. STREAMS 모듈은 셸이나 응용프로그램이 적절히 사용할 수 있도록 데이터를 순차적으로 처리합니다.

STREAMS는 처리 명령을 기능적 모듈로 그룹화할 수 있도록 행에서의 처리를 모듈화합니다. 이러한 모듈은 사용자의 필요에 따라 터미널에 다른 환경을 제공하기 위해 행에 추가하거나 삭제할 수 있습니다.

전형적인 STREAMS

전형적인 STREAMS TTY 환경에는 원시 장치 드라이버, 회선 제어 모듈 및 스트림 헤드가 있습니다. 원시 장치 드라이버는 커널과 하드웨어 사이의 I/O 인터페이스를 제공합니다. 물리적 하드웨어에 가깝기 때문에 기본적인 통신 프로토콜, 전송 속도 전환 및 기타 낮은 수준의 서비스를 제공합니다. 회선 제어 모듈은 명령 또는 제어 세트로서 원시 데이터를 처리된 데이터로 변환합니다. 이 모듈에는 삭제 문자, 행 강제 종료 문자 및 기타 문자가 포함됩니다. 스트림 헤드는 사용자의 프로세스와 스트림 사이의 인터페이스를 제공합니다.

한국어 Solaris STREAMS

한국어 Solaris 운영 환경은 STREAMS의 모듈 특성을 사용하여 한국어를 지원합니다. 전형적인 TTY 모듈과 더불어 이 제품은 STREAMS에서 코드 변환을 실행합니다. 한글-한자 변환은 일반적으로 기존의 많은 한국어 TTY에 의해 제공되며 한국어 Solaris TTY 환경에서는 사용할 수 없습니다.

한국어 Solaris 운영 환경에서는 전형적인 모듈이 향상되었습니다. 회선 제어는 일반 프로토콜 뿐만 아니라 넓은 문자의 적절한 커서 이동도 처리합니다. 한국어 Solaris 소프트웨어 코드 변환 모듈은 조합(KS C 5601-1987의 조합 코드)과 EUC(완성 코드)처럼 두 가지 서로 다른 문자 코드 형식 사이의 변환을 실행합니다.

코드 변환은 플래그나 매개변수 설정에 따라 달라집니다. 예를 들어, 조합 코드 터미널을 사용하면 터미널의 입력은 EUC로 변환되고 터미널로의 출력은 조합 코드로 변환됩니다.

스트림으로 확장될 수 있는 주요 모듈은 ldterm , kpackkjohap입니다.

TTY 유틸리티

ioctl(입력/출력 제어) 호출은 장치의 입력과 출력을 처리하기 위한 하위 수준의 루틴입니다.

응용프로그램은 터미널 표시를 적절히 구성하기 위해 termcapterminfo 데이터베이스를 사용합니다.

EUC ioctl 기능

한국어 Solaris 운영 환경은 일반적인 EUC 처리를 위해 ioctl(2) STREAMS 명령을 사용합니다. 다음은 ioctl 호출과 호출에 따른 결과를 요약한 것입니다.

표 4–1 ioctl 요청 및 설명

ioctl 요청

설명 

EUC_WGET

TTY 스트림에서 cswidth값 얻기

EUC_WSET

TTY 스트림의 cswidth 값 설정

EUC_OXLOFF

코드 변환을 OFF로 설정 

EUC_OXLON

코드 변환을 ON으로 설정 

터미널과 관련된 문자 코드 변환은 EUC_OXLONEUC_OXLOFF에 의해 제어됩니다.

termcap

termcapterminfo는 응용프로그램의 터미널 특성에 맞도록 만들어진 데이터베이스입니다. 다음은 termcap 데이터베이스의 확장입니다.

표 4–2 termcap 변수 및 설명

변수 

설명 

dv

장치 유형: 언어 및 코드 세트 

ci

다중 코드 세트의 초기 시퀀스  

s0

코드 세트 0으로 이동  

s1

코드 세트 1로 이동  

s2

코드 세트 2로 이동  

s3

코드 세트 3으로 이동  

terminfo

다음은 terminfo의 확장입니다. s0-s3 문자열 값은 터미널 입출력시 각 코드 세트의 데이터 선언 체계로 사용됩니다.

표 4–3 terminfo 변수 및 설명

변수 

단축명 

Tc 

설명 

device_type

devt

dv

장치 유형: 언어 및 코드 세트 

code_set_init

csin

ci

다중 코드 세트의 초기 순서 

set0_des_set

s0ds

s0

코드 세트 0으로 이동 

set1_des_set

s1ds

s1

코드 세트 1로 이동 

set2_des_set

s2ds

s2

코드 세트 2로 이동 

set3_des_set

s3ds

s3

코드 세트 3으로 이동 

TTY 명령

TTY 환경을 구성하고 사용하는 명령어는 setterm/bin/stty입니다. setterm은 특정 터미널 유형을 위한 TTY 스트림을 구축하고 필요한 모듈을 스트림에 제공하는데 사용됩니다. stty는 스트림에서 모듈의 작동을 변경합니다.

setterm 명령

setterm은 TTY STREAMS 환경을 구성하는데 사용됩니다. 이 명령은 특정 TTY 포트의 STREAMS 모듈을 조회하고 조정할 수 있습니다. 사용자는 setterm을 통해 시스템 또는 사용자가 제공하는 STREAMS 모듈을 사용하는 TTY STREAMS 환경을 조정할 수 있습니다.

setterm은 TTY 포트의 STREAMS 모듈을 구성하기 위해 terminfo 데이터베이스에서 devt(장치 유형) 항목을 반영하는 터미널 장치 이름을 사용합니다. 이 장치 이름은 setterm 구성 파일인 /usr/share/lib/setterm/ko/conf.file 또는 /usr/share/lib/setterm/ko.UTF-8/conf.file에서 같은 이름의 항목과 일치됩니다. 항목에는 STREAMS 환경을 적절히 구성하기 위해 어떤 모듈이 팝되고 푸시되는지에 대한 세부 명령이 포함됩니다.

setterm은 직접 인자로 장치 유형을 가질 수 있습니다. 이 장치 유형은 /usr/share/lib/setterm/ko/conf.file 또는 /usr/share/lib/setterm/ko.UTF-8/conf.file에 있는 유사한 항목과 일치합니다.

setterm 구성 파일은 실행할 작업을 지시하기 위해 특별한 언어를 사용합니다. 이 언어는 사용자가 STREAMS 스택에서 모듈의 이름을 결정하고 스택에서 모듈을 푸시하거나 팝하고 기타 작동을 수행하도록 합니다. settermioctl을 호출하여 STREAMS 스택을 조작합니다.

자세한 정보는 setterm(1) 설명서 페이지를 참조하십시오.

/bin/stty 명령

/bin/stty 명령의 defeucw 옵션은 사용자 환경의 변경 사항을 반영하기 위해 STREAMS 모듈을 수정하는 옵션입니다. 이 옵션은 국제화되지 않은 stty/usr/ucb 버전에서는 사용할 수 없습니다.

다음 명령은 사용자 환경에서 EUC 코드 세트 너비에 대한 정보를 조회하고 조회한 정보를 회선 규칙에 설정합니다.


system% /bin/stty defeucw 

예를 들어, 사용자가 환경 변수 LC_CTYPElocale로 설정하면, 이 옵션은 koko.UTF-8 환경에 있는 코드 세트의 문자당 바이트 수와 화면 너비에 대한 정보를 얻은 다음 이 정보를 스트림에 있는 관련 모듈로 전송합니다.

TTY 설정의 예

시스템 관리자는 시스템이 부팅될 때 실행되도록 /etc/rcn.d 디렉토리(n은 실행 레벨)에 있는 시작 스크립트에 setterm을 추가할 수 있습니다. 또한 사용자는 로그인할 때 setterm 명령을 실행하여 한국어 입력 코드 변환에 필요한 적합한 모듈 등의 터미널 스트림을 구성할 수 있습니다. setterm을 사용하는 다음 예는 시스템 프롬프트에서 명령으로 입력하거나 .cshrc, .login 및 시작 스크립트와 같은 시스템 파일에 포함시키면 실행됩니다. 이러한 명령은 장치 유형을 명시적으로 설정하거나 terminfo 데이터베이스를 사용할 수 있습니다.

한국어 Solaris 소프트웨어의 STREAMS 구성

EUC(완성 코드) 터미널용 STREAMS 모듈을 구성하려면 다음을 입력하십시오.


system% setterm -x EUC

몇 가지 다른 예로 조합 또는 조합 모듈을 사용하는 조합 코드 터미널 사용을 생각해 봅시다.

KS C 5601-1987의 조합 코드를 지원하는 조합 STREAMS 모듈을 초기화하려면 다음을 입력하십시오.


system% setterm -x PACK

KS C 5601-1992의 조합 코드를 지원하는 조합 STREAMS 모듈을 초기화하려면 다음을 입력하십시오.


system% setterm -x JOHAP

이 사용법은 terminfo와 무관합니다.

terminfo 데이터베이스에 다음과 같은 항목(해당 터미널에 적합한)을 포함시켜 시스템상에서 FAST-15 조합 코드 터미널을 사용해 보십시오.


fast-15 | fast-pack | korean terminal packed mode, devt=PACK, use=vt100-w,

이 항목을 참조하는 구성 명령은 다음과 같습니다.


system% setterm -t fast-15

setterm이 응용프로그램에서 적절히 작동하게 하려면 /usr/share/lib/setterm/ko/conf.file에 장치 유형에 해당하는 항목이 있어야 합니다. 이 항목은 TTY 스트림에 적합한 변환 모듈을 두기 위해 setterm 명령을 제시합니다. 예를 들어, 다음과 같습니다.


#
KoreanPACK|PACKthrow \
							popto zs|mcp|mti|ptem \
							push kpack \
							push ldterm \
							push ttcompat \
							run {stty defeucw} \
							catch
#
KoreanJOHAP|JOHAP	throw \
							popto zs|mcp|mti|ptem \
							push kjohap \
							push ldterm \
							push ttcompat \
							run {stty defeucw} \
							catch
#
GenericEUC|EUCthrow \
							popto zs|mcp|mti|ptem \
							push ldterm \
							push ttcompat \
							run {stty defeucw} \
							catch
#
ASCIIthrow \
							popto zs|mcp|mti|ptem \
							push ldterm \
							push ttcompat \
							catch
# 

자세한 정보는 setterm(1) 설명서 페이지를 참조하십시오.

ko.UTF-8 로켈용 STREAMS 구성

ko.UTF-8 로켈의 STREAMS 모듈을 구성하려면 다음을 입력하십시오.


system% setterm -x u8

ko.UTF-8 로켈을 사용하기 위해 EUC 터미널의 STREAMS 모듈을 초기화하려면 다음을 입력하십시오.


system% setterm -x ku8euc

ko.UTF-8 로켈을 사용하기 위해 KS C 5601-1992 터미널의 조합 코드를 지원하는 조합 STREAMS 모듈을 초기화하려면 다음을 입력하십시오.


system% setterm -x ku8johap
system% stty defeucw cs8 -istrip

setterm이 응용프로그램에서 적절히 작동하려면, /usr/share/lib/setterm/ko.UTF-8/conf.file에 장치 유형에 해당하는 항목이 있어야 합니다. 이 항목은 TTY 스트림에 적합한 변환 모듈을 두기 위해 setterm 명령을 제시합니다. 예를 들어, 다음과 같습니다.


# Korean specific entries:
#
# Completion/Wansung/EUC code terminal support (KS C 5601-1992)
KoreanU8EUC|KU8EUCthrow			\
			popto zs|mcp|mti|ptem   \
			push ku8euc		\
			push eucu8		\
			push ldterm		\
			push ttcompat		\
			push u8euc		\
			run {stty defeucw}	\
			catch
#
# Combination code terminal support (KS C 5601-1992 Annex 3)
KoreanU8JOHAP|KU8JOHAPthrow			\
			popto zs|mcp|mti|ptem   \
			push ku8johap		\
			push eucu8		\
			push ldterm		\
			push ttcompat		\
			push u8euc		\
			run {stty defeucw}	\
			catch
#

자세한 정보는 setterm(1) 설명서 페이지를 참조하십시오.

터미널 지원

한국어 Solaris 운영 환경은 완성 코드 터미널과 팩형 코드(조합 코드라고도 하는 KS C 5601-1987 및 KS C 5601-1992) 터미널을 지원합니다. 터미널에는 내장된 자동 장치, 한글/한자 글꼴 및 입력 방식이 있어야 합니다.

터미널 설치

이전에 터미널을 시스템에 추가한 적이 없다면 먼저 ASCII 모드로만 터미널을 설치하십시오. 자세한 내용은 시스템 관리 설명서를 참조하십시오.

터미널을 추가하기 위한 직렬 포트 인터페이스

직렬 포트는 터미널의 직렬 포트를 구성하는 Admintool 메뉴에서 액세스할 수 있습니다. 직렬 포트는 터미널을 설치하는 가장 쉬운 방법을 제공합니다. 직렬 포트는 admintool에 의해 실행됩니다. admintool에 대한 자세한 내용은 시스템 관리 설명서를 참조하십시오.

직렬 포트에 액세스

ASCII 터미널을 설치하는 것과 같은 방식으로 KS C 5601을 지원하는 한국어 터미널을 설치하십시오.

  1. 수퍼 유저가 되십시오.


    system% su
    
  2. admintool을 입력하십시오.

    admintool 메뉴가 나타납니다.


    system# admintool
    
  3. 직렬 포트 아이콘을 선택하십시오.

  1. 직렬 포트 메뉴에서 편집을 선택하십시오.

    직렬 포트: 서비스 수정 부속 메뉴가 나타납니다.

  2. 관리 도구에서: 서비스 수정 부속 메뉴에서 서비스 사용 가능, 전송 속도 9600을 선택하고 터미널 유형을 입력하십시오.

    Graphic
  3. 전문가 옵션에서 “utmp 입력 항목 작성”을 선택하고 스트림 모듈 항목에 적절한 모듈을 입력하십시오.

    스트림 모듈 항목에 kpack을 추가하여 한국어 Solaris 운영 환경에 KS C 5601-1987 버전의 조합 코드를 지원하는 터미널을 설치하십시오.

    스트림 모듈 항목에 kjohap를 추가하여 한국어 Solaris 운영 환경에 KS C 5601-1992 버전의 조합 코드를 지원하는 터미널을 설치하십시오.

    Graphic

터미널을 추가하기 위한 명령줄 인터페이스

다음은 명령줄 이용하여 ttya 포트에 터미널을 설정하는데 필요한 절차입니다.

  1. 포트 모니터 버전 번호를 결정하십시오.

    포트 모니터 버전 번호가 표시됩니다.


    # ttyadm -V 
    
  2. ver를 포트 모니터 버전 번호로 대체하여 다음 명령을 입력하십시오.

    (sacadm(1M)pmadm(1M)에 대한 자세한 정보는 관련 설명서 페이지를 참조하십시오.)


    # pmadm -r -p zsmon -s ttya
    # sacadm -a -p zsmon -t ttymon -c /usr/lib/saf/ttymon -v ver
    
  3. 터미널 유형과 일치하는 pmadm 명령을 사용하여 로그인 서비스를 추가하십시오.

    EUC 터미널의 경우에는 다음 명령을 사용하십시오.


    # pmadm -a -p zsmon -s ttya -i root -fu -v ver -m “ `ttyadm -S y \
      -T terminal_type -d /dev/ttya -l 9600 -m ldterm,ttcompat -s \
      /usr/bin/login`”
    

    KS C 5601-1987 버전의 조합 코드를 사용하는 한국어 팩형 코드 터미널의 경우에는 STREAMS 모듈 kpackttyadm 명령에 입력하십시오.


    # pmadm -a -p zsmon -s ttya -i root -fu -v ver -m “`ttyadm -S y \
      -T  terminal_type -d /dev/ttya -l 9600 -m kpack,ldterm,ttcompat -s \
      /usr/bin/login`”
    

    KS C 5601-1992 버전의 조합 코드를 사용하는 한국어 조합 코드 터미널의 경우에는 STREAMS 모듈 kjohapttyadm 명령에 입력하십시오.


    # pmadm -a -p zsmon -s ttya -i root -fu -v ver -m “`ttyadm -S y \
      -T terminal_type -d /dev/ttya -l 9600 -m kjohap,ldterm,ttcompat -s \
      /usr/bin/login`”
    
  4. 터미널을 켜십시오.

    터미널과 함께 제공된 설명서의 지시 사항을 따르십시오.

  5. 터미널에 로그인하십시오.

  6. 정확히 설치되었는지 확인하십시오.


    # setenv LANG ko
    # /bin/stty cs8 -istrip  defeucw 
    

    주 –

    이 값은 운영 체제가 터미널과 “8비트 패리티 없음” 모드로 통신하도록 설정되어 있다는 것을 나타냅니다. 터미널이 “8비트 패리티 없음” 모드로 설정되어 있는지 확인하십시오. 터미널 옵션을 설정하는 방법은 터미널 설정 설명서를 참조하십시오.


사용자 TTY 설정

다음 절차에 따라 TTY가 적절히 설정되었는지 확인하십시오.

  1. /bin/stty 명령을 -a 옵션과 함께 입력하십시오.


    system% /bin/stty -a 
    
  2. 위의 값(cs8, -istrip)이 나타나지 않으면 다음 명령을 사용하여 설정하십시오.


    system% /bin/stty cs8 -istrip defeucw
    

이 단계는 터미널을 설정하는 마지막 단계입니다. 한국어 터미널의 기본 설정값은 완성 코드 모드입니다. 팩형 코드 TTY 설치는 다음 절에서 계속됩니다.

ko 로켈에서 팩형 코드 및 조합 TTY 사용

팩형 코드 유형 터미널을 사용하고 있다면 STREAMS 모듈을 커널로 로드해야 합니다.

  1. 팩형 코드 터미널(KS C 5601-1987)을 사용하고 있다면 수퍼 유저로서 다음 명령을 입력하여 kpack을 로드해야 합니다.


    system% su
    Password: (필요하면 수퍼 유저 암호를 여기에 입력하십시오.)
    # modload /kernel/strmod/kpack
    
  2. 다음 명령을 입력하십시오:


    system% setterm -x PACK
    

ko 로켈에서 조합 코드 및 조합 TTY 사용

  1. 조합 코드 터미널(KS C 5601-1992)을 사용하고 있다면 수퍼 유저로서 다음 명령을 입력하여 kjohap 모듈을 로드해야 합니다.


    system% su
    Password: (필요하면 수퍼 유저 암호를 여기에 입력하십시오.)
    # modload /usr/kernel/strmod/kjohap
    
  2. 다음 명령을 입력하십시오.


    system% setterm -x JOHAP
    

ko.UTF-8 로켈에서 EUC TTY 사용

  1. EUC 터미널(KS C 5601-1987-0)을 사용하고 있다면 수퍼 유저로서 다음 명령을 입력하여 ku8euc 모듈을 로드해야 합니다.


    system% su
    Password: (필요하면 수퍼 유저 암호를 여기에 입력하십시오.)
    # modload /kernel/strmod/ku8euc
    
  2. 스트림 모듈을 활성화하려면 다음을 입력하십시오.


    system% setterm -x KU8EUC
    
  3. 8비트 I/O를 활성화하려면 다음을 입력하십시오.


    system% stty defeucw cs8 -istrip
    
  4. dtterm을 사용하려면 다음 명령을 입력하십시오.


    system% setterm -x u8
    

ko.UTF-8 로켈에서 조합 TTY 사용

  1. 조합 코드 터미널(KS C 5601-1992-3)을 사용하고 있다면 수퍼 유저로서 다음 명령을 입력하여 ku8johap 모듈을 로드해야 합니다.


    system% su
    Password: (필요하면 수퍼 유저 암호를 여기에 입력하십시오.)
    # modload /kernel/strmod/ku8johap
    
  2. 스트림 모듈을 활성화하려면 다음을 입력하십시오.


    system% setterm -x KU8JOHAP
    
  3. 8비트 I/O를 활성화하려면 다음을 입력하십시오.


    system% stty defeucw cs8 -istrip
    
  4. dtterm을 사용하려면 다음 명령을 입력하십시오.


    system% setterm -x u8