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

4장 TTY 환경과 지원

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

이 다른 터미널 유형을 지원하는 방법 STREAMS 과 TTY 드라이버에 대한 정보는 termio(7) 매뉴얼 페이지를 참조하십시오.

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 문자열 값은 터미널 I/O 동안 각 코드세트의 데이터 선언 메커니즘으로 사용됩니다.

표 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에 대한 자세한 내용을 보려면 시스템 관리 설명서를 참조하십시오.

직렬 포트에 액세스

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


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

    admintool 메뉴가 나타납니다.


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

직렬 포트 메뉴 사용

ASCII 터미널을 설치하는 것처럼 KS C 5601을 지원하는 한국어 터미널을 설치하십시오.

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

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

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

    Graphic

  3. 전문가 옵션에서 "utemp 엔트리 생성"을 선택하고 스트림 모듈 필드에 적절한 모듈을 입력하십시오.

    스트림 모듈 필드에 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 -vver -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. -a옵션을 추가한 /bin/stty 명령을 입력하십시오.


    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. 에서 조합 TTY 사용 조합 코드 터미널(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