한국어 Solaris 사용 설명서

12장 TTY 환경과 지원

이 장에서는 사용자가 다음의 내용에 익숙한 것으로 가정합니다.

이 장은 다음 내용으로 구성되어 있습니다.

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

TTY STREAMS

사용자의 쉘과 터미널 사이의 데이터 경로를 스트림이라고 합니다. 스트림상의 데이터는 코드 세트나 통신 프로토콜의 변경에 우선하는 제어 시퀀스와 같이 데이터 처리에 영향을 주는 문자 및 제어 정보를 포함합니다. 터미널에서 스트림을 입력하는 데이터는 원시 또는 처리되지 않은 데이터입니다. 데이터는 쉘 또는 응용 프로그램이 적절히 사용할 수 있도록 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 STREAMS 명령을 사용합니다. ioctl 요청에 대한 설명은 다음 표와 같습니다.

표 12–1 ioctl요청 및 설명

ioctl 요청

설명 

EUC_WGET

TTY 스트림에서 cswidth값 얻기

EUC_WSET

TTY 스트림의 cswidth값 설정

EUC_OXLOFF

코드 변환을 OFF로 설정 

EUC_OXLON

코드 변환을 ON으로 설정 

터미널에서 수행되는 문자 코드 변환은 EUC_OXLONEUC_OXLOFF으로 제어합니다.

termcap 데이터베이스

termcapterminfo 데이터베이스는 터미널 특성을 응용 프로그램에 맞추는 데 사용됩니다. termcap 데이터베이스의 변수는 다음 표의 설명과 같습니다.

표 12–2 termcap변수 및 설명

변수 

설명 

dv

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

ci

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

s0

코드 세트 0으로 시프트 

s1

코드 세트 1로 시프트 

s2

코드 세트 2로 시프트 

s3

코드 세트 3으로 시프트 

terminfo 데이터베이스

다음은 terminfo의 확장입니다. s0-s3 문자열 값은 터미널 입력/출력 동안 각 코드 세트용 데이터 선언 메커니즘으로 사용됩니다.

표 12–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 모듈 또는 사용자가 제공하는 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 스택을 조작합니다.

/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 소프트웨어용 STREMS 구성

이 부분의 명령을 이용하여 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 데이터베이스의 항목을 참조하는 구성 명령을 실행합니다.

  1. terminfo 데이터베이스에 다음의 FAST-15 팩 코드 터미널 항목을 추가합니다.


    fast-15 | fast-pack | korean terminal packed mode,
    devt=PACK,
    use=vt100-w,
  2. 다음 구성 명령을 사용하여 FAST-15 팩 코드 터미널용 항목을 참조합니다.


    system% setterm -t fast-15
    

setterm이 올바로 작동하려면 /usr/share/lib/setterm/ko/conf.file에 반드시 장치 유형에 해당하는 항목이 있어야 합니다. 이 항목은 TTY 스트림에 적합한 변환 모듈을 배치하는 setterm 명령을 부여합니다.

    /usr/share/lib/setterm/ko/conf.file에 장치 유형에 해당하는 다음 항목을 추가합니다.


    #
    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
    # 

ko.UTF-8 로켈용 STREAMS 구성

이 부분의 명령을 이용하여 ko.UTF-8 로켈의 STREAMS 모듈을 구성할 수 있습니다.

    다음 명령을 사용하여 ko.UTF-8 로켈용 STREAMS 모듈을 명시적으로 구성합니다.


    system% setterm -x u8
    

    다음 명령을 사용하여 ko.UTF-8 로켈을 사용하도록 EUC 터미널을 명시적으로 초기화합니다.


    system% setterm -x ku8euc
    

    다음 명령을 사용하여 조합 STREAMS 모듈을 명시적으로 초기화합니다. 이 모듈은 ko.UTF-8 로켈을 사용하는 KS C 5601-1992 터미널의 조합 코드를 지원합니다.


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

이 절차를 사용하여 terminfo 데이터베이스의 항목을 참조하는 구성 명령을 실행합니다.

  1. terminfo 데이터베이스에 다음의 FAST-15 팩 코드 터미널 항목을 추가합니다.


    fast-15 | fast-pack | korean terminal packed mode,
    devt=PACK,
    use=vt100-w,
  2. 다음 구성 명령을 사용하여 FAST-15 팩 코드 터미널용 항목을 참조합니다.


    system% setterm -t fast-15
    

setterm이 올바로 작동하려면 /usr/share/lib/setterm/ko.UTF-8/conf.file에 반드시 장치 유형에 해당하는 항목이 있어야 합니다. 이 항목은 TTY 스트림에 적합한 변환 모듈을 배치하는 setterm 명령을 부여합니다.

    /usr/share/lib/setterm/ko.UTF-8/conf.file에 장치 유형에 해당하는 다음 항목을 추가합니다.


    # 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
    #

터미널 지원

한국어 Solaris 운영 체제는 완성 코드 터미널 및 팩 코드 터미널을 지원합니다. 터미널에는 내장된 자동화, 한글/한자 글꼴 및 한글/한자 입력기가 있어야 합니다.


주 –

팩 코드는 또한 조합 코드 KS C 5601-1987 및 KS C 5601-1992라고 합니다.


터미널 설치

이전에 터미널을 시스템에 추가한 적이 없다면 먼저 ASCII 모드로만 터미널을 설치하십시오.

KS C 5601 지원을 위한 터미널 설치 방법

  1. 수퍼유저가 되도록 합니다.


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

    admintool 메뉴가 나타납니다.


    system# admintool
    
  3. 직렬 포트 아이콘을 선택합니다.

  4. 직렬 포트 메뉴에서 편집을 선택합니다.

    서비스 수정 하위 메뉴가 표시됩니다.

  5. 서비스 수정 하위 메뉴에서 사용 및 전송 속도 9600을 선택한 후 터미널 유형을 입력합니다.

    그래픽에 대한 설명은 이전 컨텍스트를 참조하십시오.
  6. 전문가 옵션에서 utemp 항목 작성을 선택하고 스트림 모듈 필드에 적절한 모듈을 입력합니다.

    한국어 Solaris 운영 체제용 KS C 5601-1987 버전 조합 코드를 지원하는 터미널을 설치하려면 스트림 모듈 필드에 kpack를 추가합니다.

    한국어 Solaris 운영 체제용 KS C 5601-1992 버전 조합 코드를 지원하는 터미널을 설치하려면 스트림 모듈 필드에 kjohap를 추가합니다.

    그래픽에 대한 설명은 이전 컨텍스트에 있습니다.

    admintool에 대한 자세한 설명은 System Administration Guide: Solaris Containers-Resource Management and Solaris Zones을 참조하십시오.

명령줄에서 ttya 포트 설정 방법

다음과 같이 명령줄에서 ttya 포트의 터미널을 구성합니다.

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


    # ttyadm -V
    

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

  2. 다음 명령을 입력하고 ver의 포트 모니터 버전 번호를 대체합니다.


    # pmadm -r -p zsmon -s ttya
    #sacadm -a -p zsmon -t ttymon -c /usr/lib/saf/ttymon -v ver
    

    자세한 내용은 pmadm(1M)sacadm(1M) 매뉴얼 페이지를 참조하십시오.

  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 버전을 사용하는 한국어 팩 코드 터미널의 경우 ttyadm 명령에서 STREAMS 모듈 kpack을 입력합니다.


    # 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 버전을 사용하는 한국어 조합 코드 터미널의 경우 ttyadm 명령에서 STREAMS 모듈 kjohap을 입력합니다.


    # 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 사용 방법

팩 코드(KS C 5601-1987) 터미널을 사용하는 경우 반드시 커넬에 kpack STREAMS 모듈을 로드해야 합니다.

  1. 수퍼유저가 되도록 합니다.


    system% su
    Password: (Type superuser password here if required.)
    
  2. kpack 모듈을 로드합니다.


    #modload /kernel/strmod/kpack
    
  3. 모듈을 사용하도록 설정하려면 다음 명령을 입력합니다.


    system% setterm -x PACK
    

ko 로켈에서의 완성 코드 및 조합 TTY 사용 방법

조합 코드(KS C 5601-1992) 터미널을 사용하는 경우 반드시 커넬에 kjohap STREAMS 모듈을 로드해야 합니다.

  1. 수퍼유저가 되도록 합니다.


    system% su
    Password: (Type superuser password here if required.)
    
  2. kjohap 모듈을 로드합니다.


    # modload /usr/kernel/strmod/kjohap
    
  3. 모듈을 사용하도록 설정하려면 다음 명령을 입력합니다.


    system% setterm -x JOHAP
    

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

EUC(KS C 5601-1987-0) 터미널을 사용하는 경우 반드시 커넬에 ku8euc STREAMS 모듈을 로드해야 합니다.

  1. 수퍼유저가 되도록 합니다.


    system% su
    Password: (Type superuser password here if required.)
    
  2. ku8euc 모듈을 로드합니다.


    #modload /kernel/strmod/ku8euc
    
  3. 스트림 모듈을 사용하도록 설정하려면 다음 명령을 입력합니다.


    system% setterm -x KU8EUC
    
  4. 8비트 I/O를 사용하도록 설정하려면 다음 명령을 입력합니다.


    system% stty defeucw cs8 -istrip
    
  5. dtterm을 사용하려는 경우 다음 명령을 입력합니다.


    system% setterm -x u8
    

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

조합(KS C 5601-1992-3) 코드 터미널을 사용하는 경우 커넬에 ku8johap STREAMS 모듈을 로드해야 합니다.

  1. 수퍼유저가 되도록 합니다.


    system% su
    Password: (Type superuser password here if required.)
    
  2. ku8johap 모듈을 로드합니다.


    #modload /kernel/strmod/ku8johap
    
  3. 모듈을 사용하도록 설정하려면 다음 명령을 입력합니다.


    system% setterm -x KU8JOHAP
    
  4. 8비트 I/O를 사용하도록 설정하려면 다음 명령을 입력합니다.


    system% stty defeucw cs8 -istrip
    
  5. dtterm을 사용하려는 경우 다음 명령을 입력합니다.


    system% setterm -x u8