1993.01.21


SUBJECT: SunOS 5.x Adding and Maintaining Devices and Drivers



1. About Modems,Terminals,Port Monitors,and Service Access

	이런 디바이스들을 관리하고 설정하는데 사용하는 툴을 Service Access Facility(SAF)라고
	부른다.
	SAF는 복잡하고 아마도 당신이 필요한 것보다 더 완벽한 서술(description)을 하여야 한다.
	다음은 모뎀과 alphanumeric terminals에 관련된 대부분의 일을 다루기 위한 배경을
	설명한다.
	
 1.1 What's a terminal?

	만약 사용자의 컴퓨터에 alphanumeric terminal들을 붙인다면 그것을 설정하기 위하여
	SAF를 사용할 필요가 있다.

 1.2 What's a modem?

	모뎀은 전화 라인을 통해 전송될 수 있도록 디지탈 정보를 아날로그 정보로 변환한다.
	받는 쪽에서는 그 역의 일을 한다.
	modem은 modulator-demodulator의 약자이다.

  1.2.1 the different ways to use a modem

	모뎀은 기본으로 3가지로 설정할 수 있다.
	
	* dial-out
	* dial-in
	* bidirectional

 1.3 What's a service?

	모뎀과 alphanumeric terminal들은 컴퓨팅 자원의 접근을 요구하고 이런 것은 정확히
	SAF의 서비스("service")를 받아야 한다.
	SAF에 의해 제어되는 가장 중요한 자원들은 다음을 할 수 있는 능력을 갖는다.

	* 로그 인(locally나 remotely) 
	* 네트워크를 통해 프린트를 접근한다.
	* 네트워크를 통해 화일들을 접근한다.

 1.4  What's port?

	port는 디바이스가 O/S와 통신하기 위한 채널(channel)이다.
	port를 생각하는 가장 좋은 방법은 터미날이나 모뎀 케이블이 연결되어 있는 소켓 으로 
	(receptacle)생각하면 된다.
	그러나 엄밀히 물리적인 것만이 아니라 하드웨어(핀과 컨넥터)와 소프트웨어(디바이스 
	드라이브) 요소 둘다를 갖는 엔티티(entity)이다.
	하나의 물리적 소켓은 종종 여러개의 포트를 제공한다.
	일반적인 형태의 포트는 시리얼,패러렐,SCSI,Ethernet을 포함한다.

 1.5 port monitors and service sccess

	서비스에 접근하기 위한 주요 메카니즘은 port monitor를 통하는 것이다.
	port monitor는 끊임없이 로그 인하는 요청을 살피거나 화일이나 프린터의 접근 요청을
	살피는 프로그램이다.
	port monitor가 요청을 발견하면 그것은 운용체제와 디바이스 요청 서비스 사이에 통신을
	설정하기 위하여 요구된 파라메터를 설정한다.
	port monitor는 필요한 서비스를 제공하는 다른 프로세서에 제어를 전송한다.
	SunOS 5.0에서는 2가지 형태의 port monitor를 포함한다: ttymon과 listen
	listen port monitor는 remote 프린터와 화일 시스템을 요구하는 네트워크 서비스의 접근을
	제어한다.
	이 listen port monitor는 사용자가 모뎀과 문자 터미날을 설정할때 작동하는 것이 아니다.
	ttymon port monitor는 모뎀과 문자 터미날에 의해 필요한 로그 인 서비스를 접근을 제공한다.
	이런것을 가능하게 하기 위하여 사용자는 이런 디바이스로부터 로그 인 요청을 다루기 위하여
	(SAF를 사용하여) ttymon port monitor를 설정할 필요가 있을 것이다.

	- a port monitor at work: ttymon

	  사용자가 직접 연결된 모뎀이나 문자 터미날을 통해 로그 인을 시도할때마다 ttymon이
	  작용한다
	  무엇이 일어나는가를 이해하기 위해서는 워크스테이션이 처음 켜졌을때로 다시 돌아가
	  살펴볼 필요가 있다.
	  아래의 그림을 참조하라.

	  +---------------------------------------------+
	  | +--------------+				|
	  | |  +------+    |				|
	  | |  |      | <-----> init <------------------------ power on
 	  | |  +------+    |      |			|
	  | |  +------+    |      |			|
	  | |  |      | <------- SAC			|
	  | |  +------+    |      |                     |
	  | |  +------+    |      |		login request	
	  | |  |      | <-------ttymon <----------------------      USER
	  | |  +------+    |      |    ----------------------->  ^          ^
	  | +--------------+      |          set baud rate       |   |      |
	  |  administrative       |                     |        |   |      |
	  |   files               |                     |        |   |      |
	  |                       |           login prompt       |   |      |
	  |                     login   --------------------------   |      |
	  |                       |     <-----------------------------      |
	  |                       |         valid name & password	    |
	  |                       |			|                   |
	  |                     shell   <-------------login complete---------
	  |						|
	  +---------------------------------------------+


	  init 프로그램은 부팅시에 시작되는 첫 프로세서이다.
	  그것의 관리 화일(/etc/inittab)을 참조하여 init는 그들이 필요한 해당 프로세서를 
	  시작한다.
	  이 프로세서들 가운데 표시된 것이 Service Access Controller(SAC)이다.- SAF의 
	  master program이다.
	  SAC는 자동적으로 그것의 관리 화일(/etc/saf/_sactab)에 지정된 port monitor를 시작한다.
	  이 보기에서는 단지 하나의 port monitor를 생각한다.
	  ttymon이 시작 하자마자 그것은 서비스 요청에따라 시리얼 포트라인을 모니터한다.
	  어떤 사람이 모뎀이나 터미날을 통해 지금 로그 인 한다고 상상해 보라.
	  시리얼 포트의 동작은 시리얼 포트 드라이브에 의해 운용체제에 보내진다.
	  ttymon port monitor는 시리얼 포트 동작을 감지하고 통신 링크를 설정하려 한다.
	  기술적으로 이야기하면 ttymon은 데이타 전송 속도,line discipline,디바이스와 통신하기
	  위하여 요구된 handshaking protocol을 처리한다.
	  모뎀이나 터미날과 통신하기 위하여 적당한 파라메터가 성립하면 ttymon은 이 파라메터들을
	  로그 인 프로그램에 보내고 그것에 전송 제어를 한다.

 1.6 SAF control of port monitors and services

	모뎀이나 터미날을 관리하는데 사용하는 3개의 SAF 명령이 있다.
	이 명령은 sacadm,pmadm과 ttyadm이다.

	sacadm은 port monitor를 더하고 제거한다.
	이 명령은 Service Access Controller와 SAC의 관리 화일(/etc/saf/_sactab)과의 main link이다.
	
	pmadm은 서비스를 더하거나 제거하고 특정한 port monitor에 서비스를 연관시킨다.
	
	ttyadm은 각종 SAF 관리 화일들에 포함된 정보를 만든다.
	ttyadm 명령은 종종 sacadm,pmadm에 의해 필요한 어떤 데이타를 지원하기 위하여 sacadm 
	명령이나 pmadm 명령내에 있을 수도 있다.

 1.7 setting up a serial port device

	모뎀이나 터미날 같은 시리얼 포트 서비스를 설정하기 위하여 요구되는 3개의 기본적인
	일이 있다.

	* port monitor를 더하기 위하여 sacadm을 사용한다.(만약 없다면)
	* 새로운 port monitor에 관계된 서비스를 선정하기 위하여 pmadm을 사용한다.
	* 필요에따라 하나 이상의 통신 관련 화일들을 편집한다.

	처음 2개의 일은 SAF 명령을 사용하여 수행한다.
	마지막 일에 언급한 통신 관련 화일들은 SAF와 아무 상관이 없으나 모뎀과 터미날이 어떻게
	통신하는가에 영향을 끼친다.
	편집하여야 할 필요가 있는 화일들은 /etc/ttydefs,/etc/uucp/Devices,/etc/uucp/Dialers를
	포함한다.
	경우에따라 uucp와 cu가 적당히 동작할 수 있도록 /ec/uucp의 다른 화일들을 수정해야 할
	필요가 있을 것이다.
	sacadm과 pmadm 명령을 사용하기 위하여 각 명령이 요구하는 아규먼트에 관해 자세히 일아야
	할 필요가 있다.

	- arguments used in SAF commands

	  SAF 명령들은 다음 중 하나 이상을 지정하기 위하여 아규먼트를 넣도록 요구한다.

	  * port monitor의 이름
	  * 속도(baud rate)와 라인 규약(line discipline)
	  * 디바이스 경로
	  * /dev/term안의 포트의 이름
	  * 주석(comments:optional)

	  여기서는 모뎀과 터미날을 설정하기 위하여 필요한 아규먼트를 설명한다.

	- naming port monitors: the pmtag argument

	  pmtag 아규먼트는 특정한 port monitor에 할당하는 이름이다.
	  사용자는 port monitor에 좋아하는 어떤 이름을 줄 수 있고 유일하고 14자 이상될 수 없다.
	  그러나 "ttymon"이라는 단어를 포함한 이름을 할당하는 것이 현명하다.
	  그래야 sacadm -l 명령으로 그들의 목록을 볼때 ttymon-type이라는 것을 쉽게 알아 볼 수
	  있다.
	  사실 규약적으로"ttymon"이라는 단어에 문자나 숫자를 더하므로 serial port monitor의
	  이름을 짖는다.
	  그래서 만들어져 있는(built-in) 포트(motherboard에)들은 ttymon_mb에 의해 모니터된다.
	  처음 어덥터 보드의 포트는 ttymon0,두번째는 ttymon1 등등과 같이 사용한다.

	- specifying the device path: the dev_path argument

	  dev_path 아규먼트는 TTY 포트 디바이스 화일의 절대 경로 이름이다.
	  즉 dev_path는 모뎀이나 터미날이 붙은 포트에 대한 /dev의 화일 경로이다.
	  예로 시리얼 포트 A에 연결된 터미날의 경로 명은 /dev/term/a이다.
	  시리얼 어덥터 보드의 첫번째 포트에 연결된 터미날은 /dev/term/21의 dev_path를 갖는다.

	- specifying the device file: the svctag argument

	  port monitor에 할당된 각 포트는 그 자신의 서비스 태그(tag)를 갖는다.
	  규약적으로 svctag는 /dev/term 디렉토리 안의 포트의 이름이다.
	  /dev/term/a에 대해 대응되는 svctag는 b이다.
	  /dev/term/21의  svctag는 21이다.
	  현재 활동하는 서비스들의 목록을 보기위해서는 pmadm -l을 쳐라.

	- specifying baud rate and line discipline: the ttylabel argument

	  ttylabel 아규먼트는 적당한 속도와 라인 규약을 찾을때 /etc/ttydefs 화일의 어느 엔트리를
	  사용할 것인가를 지정한다.
	  아래의 /etc/ttydefs 화일의 보기에서는 1200H와 1200H를 보여준다.

	  2400H:2400:2400 sane hupc1::1200H
	  1200H:1200:1200 sane hupc1::300H

	- adding comments

	  pmadm과 sacadm 명령은 port monitor나 서비스를 더할때 -y 프래그를 사용하여 주석을 달 수
	  있게 한다.
	  이 주석은 후에 -l 프래그를 사용하여  port monitor나 서비스의 목록을 보려할때 첨가되어
	  보여준다.
	  각종 port monitor나 서비스가 관령된 프트를 지정하기 위하여 주석을 사용하라.
	  예로 시리얼 포트 A에 port monitor를 더할때 다음과 같은 주설 필드를 사용한다.

	  # sacadm [...field omitted...] -y "Serial port b"

 1.8 cimmunications-related files

	어떤 모뎀이나 터미날 프로시져들은 다음과 같은 하나 이상의 통신 관련 화일들을 보거나
	편집할 것을 요구한다.

	* /etc/uucp/Devices
	* /etc/uucp/Dialers
	* /etc/ttydefs

 1.9 instructions for setting up modems and terminals

	여기에는 모뎀과 터미날에 관련된 일을 수핸하는 한단계 한단계의 지시사항을 포함한다.
	
	** how to set up an alphanumeric terminal

	   1) ttyadm -V를 수행하고 port monitor의 버젼 번호를 보라.

		# ttyadm -V
		1
		#

	   2) sacadm 명령을 수행한다.
	      pmtag에 대한 적당한 port monitor tag를 대체하라.
	      또한 vers에 정확한 버젼 번호를 널어라.

		# sacadm -a -p pmtag -t ttymon -c /usr/lib/saf/ttymon -v vers

	   3) 로그 인 서비스를 더하기 위하여 pmadm 명령을 사용한다.
	      적당한 아규먼트로 바꾸어라.

		# pmadm -a -p pmtag -s svctag -i root -fu -v vers -m "`ttyadm -d dev_path 
		  -l ttylabel -s /usr/bin/login`"

	   4) 터미날을 연결하고 켜라.

	   - 터미날을 설정하는 보기.

		다음의 sacadm 명령은 /dev/term/b를 살피는 ttymonb라고 불리우는 port monitor를
	 	만든다.
		pmadm 명령은 서비스 태그 b로 로그 인 서비스를 설정한다.
		속도는 /etc/ttydefs에 9600로 정의 되어 있다.

		# sacadm -a -p ttymonb -t ttymon -c /usr/lib/saf/ttymon -v 1
		# pmadm -a -p ttymonb -s b -i root -fu -v 1 -m "`ttyadm -d /dev/term/b -l 9600
		  -s /usr/bin/login`"

	** how to set up dial-out modem service

	   1) 모뎀이 적당히 연결되어 있고 설정되어 있는지 확인하라.
	   2) # cd /etc/uucp
	   3) /etc/uucp/Devices를 편집하여 다음의 줄을 첨가하라.
	
		ACU term/svctag,M - ttylabel type

	      hayes와 호환되는 모뎀에 대해서는 type이 hayes가 된다.
	      다른 모뎀에 대해서는 /etc/uucp/Dialers를 보라.
	   4) 로그 인이 안되게 되어 있는 가를 확인하고 다음을 수행하라.

		# pmadm -d -p pmtag -s svctag

	** how to set up dial-in  modem service

	   1) 모뎀이 적당히 연결되어 있고 설정되어 있는지 확인하라.
	   2) # sacadm -l -t ttymon
	      시스템은 모든 port monitor들을 보여준다.

		# sacadm -l -t ttymon
		PMTAG          PMTYPE         FLGS RCNT STATUS     COMMAND
		zsmon          ttymon         -    0    ENABLED    /usr/lib/saf/ttymon # 

	   3) port monitor의 목록을 화인하라.
	   4) 문제(in question)에 대한 포트의 port monitor를 만든다.

		# sacadm -a -p pmtag -r ttymon -c /usr/lib/saf/ttymon -v `ttymon -V`
		  -y "comment"

	   5) 다음을 수행한다.

		# pmadm -l -s svctag

		- 만약 서비스가 존재한다면 다음과 같은 결과를 얻을 것이다.
		  
		PMTAG          PMTYPE         SVCTAG FLGS ID    
		ttymona	       ttymon         a      u    root  /dev/term/a b -   [...etc...]

		- 만약 서비스가 존재하지 않는다면 다음과 같은 결과를 얻을 것이다.

		Service  does not exist
		
		   7단계를 건너 뛰어라.

	    6) 다음과 같이 넣어 서비스를 제거하라.

		# pmadm -r -p pmtag -s svctag

	    7) 새로운 dial-in 포트 서비스를 만든다.

		# pmadm -a -p pmtag -s svctag -i root -v `ttyadm -V` -fu -m "`ttyadm
		  -d /dev/term/svctag -s /usr/bin/login -l ttylabel -m ldterm,ttycompat`"
		  -y "comment"
	    8) 포트를 살린다(어뎁터 보드만 단지)

		# pmadm -e -p pmtag -s n

		n은 포트의 번호이다.
		로그 인을 살리기 원하는 각 포트에 대해 이 명령을 반복하라.

	** how to set up bidirectional modem service

	   1) 모뎀이 적당히 연결되어 있고 설정되어 있는지 확인하라.
	   2) # cd /etc/uucp
	   3) /etc/uucp/Devices를 편집하여 다음의 줄을 첨가하라.
	
		ACU term/svctag,M - ttylabel type

	      hayes와 호환되는 모뎀에 대해서는 type이 hayes가 된다.
	      다른 모뎀에 대해서는 /etc/uucp/Dialers를 보라.
	   4) 로그 인이 안되게 되어 있는 가를 확인하고 다음을 수행하라.

		# pmadm -d -p pmtag -s svctag

	** how to set up dial-in  modem service

	   1) 모뎀이 적당히 연결되어 있고 설정되어 있는지 확인하라.
	   2) # sacadm -l -t ttymon
	      시스템은 모든 port monitor들을 보여준다.

		# sacadm -l -t ttymon
		PMTAG          PMTYPE         FLGS RCNT STATUS     COMMAND
		zsmon          ttymon         -    0    ENABLED    /usr/lib/saf/ttymon # 

	   3) port monitor의 목록을 화인하라.
	   4) 문제(in question)에 대한 포트의 port monitor를 만든다.

		# sacadm -a -p pmtag -r ttymon -c /usr/lib/saf/ttymon -v `ttymon -V`
		  -y "comment"

	   5) 다음을 수행한다.

		# pmadm -l -s svctag

		- 만약 서비스가 존재한다면 다음과 같은 결과를 얻을 것이다.
		  
		PMTAG          PMTYPE         SVCTAG FLGS ID    

		- 만약 서비스가 존재하지 않는다면 다음과 같은 결과를 얻을 것이다.

		Service  does not exist
		
		   7단계를 건너 뛰어라.

	    6) 다음과 같이 넣어 서비스를 제거하라.

		# pmadm -r -p pmtag -s svctag

	    7) 새로운 bidirectional 포트 서비스를 만든다.

		# pmadm -a -p pmtag -s svctag -i root -v `ttyadm -V` -fu -m "`ttyadm
		  -d /dev/term/svctag -s /usr/bin/login -l ttylabel -b -m ldterm,ttycompat`"
		  -y "comment"
	    8) # cd /etc/uucp
	    9) /etc/uucp/Devices를 편집하여 다음의 줄을 첨가하라.
	
		ACU term/svctag,M - ttylabel type

	      hayes와 호환되는 모뎀에 대해서는 type이 hayes가 된다.
	      다른 모뎀에 대해서는 /etc/uucp/Dialers를 보라.
	    10) 포트를 살린다(어뎁터 보드만 단지)
		만약 양 방향 서비스를 설정하려는 포트가 어뎁터 보드 포트이면 로그 인 세션은
		개개로 각 포트에 대해 할 수 있어야만 한다.

		# pmadm -e -p pmtag -s n

		n은 포트의 번호이다.
		로그 인을 살리기 원하는 각 포트에 대해 이 명령을 반복하라.

2. Disks

 2.1 Instructions for setting up disks

	- how to add a secondary disk

	  1) 물리적 연결을 확인하라.
	  2) power를 올린다.
	  3)
	  	 ok  boot -r

	  4) format을 수행하라.
	  5)
		format> defect

	  6) defect menu를 검사하라.
	  7) 
		defect> primary

	  8)
		defect> commit

	  9)
		defect> quit

	  10)
		format> format

	  11)
		format> partition

	  12)
		partition> modify

	  13) 
		partition> label

	  14) q를 2번 쳐서 format을 빠져 나온다.
	  15) 다음 명령을 수향한다.

		# prtvtoc /dev/rdsk/device

	  16) # newfs /dev/rdsk/device-partition
	  17) 화일 시스템을 mount한다.

3. Compact disc read-only memory devices

 3.1 instructions for adding a CD-ROM

	- how to add a CD-ROM drive

	  1) 물리적 연결을 확인한다.
	  2) 전원을 넣는다.
	  3) 
		# shutdown
		ok boot -r

	  4) CD를 드라이브에 넣는다.
	  5) # cd /
	     # mkdir /cdrom
	     # mount -F ufs -o ro /dev/dsk/c0t6d0s2 /cdrom

4. Tape drives

 4.1 instructions for adding a tape drive

	- how to add a SCSI tape drive

	  1) 물리적 연결을 확인한다.
	  2) SCSI unit 번호를 확인한다.
	  3) 전원을 넣는다.
	  4) 
		# shutdown
		ok boot -r

5. Device drivers

 5.1 device drivers in the SunOS 5.0 operating system

	넓은 범위의 표준 디바이스를 지원하는데 필요한 모든 드라이버들은 SunOS 5.0안에 포함되어
	있다.
	이 드라이버들은 /kernel/drv에 있다.

 5.2 adding drivers

	디바이스 드라이버들을 첨가하는데는 3가지 절차가 있다.

	* 적당한 드라이브에 media를 넣는다.
	* pkgadd 명령을 사용한다.
	* 부팅을 한다.

 5.3 instructions for adding and removing device drivers

	- how to add a device drivers

	  1) 테이프,디스켓,CD-ROM에 적당한 media를 넣는다.
	  2) # pkgadd -d device packagename
	  3)
		# shutdown
		ok boot -r

	- how to remove a device drivers

	  # rem_drv drivername

A. The Service Access Facility

	여기에는 SunOS 5.0의 SAF(Service Access Facility)에 관해 시스템이나 네트워크 관리자가
	알아야 할 모든 것을 설명한다.
	SAF는 터미날,모뎀,다른 네트워크 장비를 관리하는데 사용되는 도구이다.
	특별히 SAF는 다음을 하도록 한다.

	* ttymon과 listen port monitor을 더하고 관리한다.(sacadm 명령을 사용한다)
	* ttymon port monitor service을 더하고 관리한다.(pmadm과 ttyadm 명령을 사용한다)
	* listen port monitor service을 더하고 관리한다.(pmadm과 nlsadmin 명령을 사용한다)
	* TTY device의 고장을 수리하고 관리한다.
	* 프린팅 서비스에 대한 들어오는 네트워크 요구를 관리하고 수리한다.
	* Service Access Controller를 관리하고 수리한다.(sacadm 명령을 사용한다)

 A.1 overview of the Service Access Facility

	Service Access Facility(SAF)는 TTY 디바이스들과 LANs를 통해 시스템과 네트워크 자원의
	접근을 제어하는 open system solution이다.
	SAF는 새로운 특성을 첨가하기 쉽게 만들고 있는 것을 쉽게 설정하도록 하는 잘 정의된
	인터페이스를 제공한다.
	SAF는 프로그램이 아니다.
	이것은 관리 명령과 백그라운드 프로세서들의 계층적 구조이다.
	맨 위의 SAF 프로그램은 Service Access Controller(SAC)이다.
	SAC는 sacadm 명령을 통해 관리하는 port monitor를 제어한다.
	각 port monitor는 하나나 그 이상의 포트들을 다룰 수 있다.
	사용자는 pmadm 명령을 통해 포트에 연관된 서비스를 관리한다.
	SAC를 통해 제공된 서비스들은 네트워크마다 다르나 SAC과 관리 프로그램인 sacadm과 pmadm은
	네트워크에 독립적이다.
	표 A-1은 SAF 제어 계층을 보여준다.
	sacadm 명령은 ttymon과 listen port monitor를 제어하는 SAC를 관리하기 위하여 사용된다.
	ttymon과 listen의 서비스는 pmadm에 의해 제어된다.
	나중에 보겠지만 ttymon의 한 예는 여러 개의 포트들을 서비스 할 수 있고 listen의 한 예는
	네트워크 인터페이스에 여러개의 서비스들을 지원할 수 있는 것이다.

	표 A-1
	+-----------------------+---------------+---------------------------------------+
	| function		| program	| description				|
	+-----------------------+---------------+---------------------------------------+
	| 전체 관리		| sacadm	| port monitor를 더하고 제거하는 명령	|
	| SAC			| sac		| SAF의 master program			|
	| port monitor		| ttymon	| 시리얼 포트 로그 인 요구를 모니터한다	|
	|			| listen	| 네트워크 서비스의 요구를 모니터한다	|
	| port monitor service	| pmadm		| port monitor의 제어를 위한 명령	|
	|  administrator	|		|					|
	| services		|login;remote	| SAF가 접근을 지원하는 서비스들	|
	|			| procedure	|					|
	|			|calls;other	|					|
	+-----------------------+---------------+---------------------------------------+

   A.1.1 Overall administration: sacadm command

	sacadm 명령은 SAF의 가장 윗 레벨을 나타낸다.
	sacadm 명령은 주로 ttymon과 listen과 같은 port monitor를 더하고 제거하기 위하여 
	사용된다.
	다른 sacadm 기능은 port monitor들의 상태를 볼 수 있고 port monitor configuration
	script들을 관리한다.

   A.1.2 Service Access Controller: sac program

	Service Access Controller program(sac)는 모든 port monitor의 감독자이다.
	워크스테이션이나 서버는 자동적으로 여러 사용자 모드로 갈때 sac을 시작한다.
	sac이 불려질때 처음에 sac이 그것의 환경을 설정하는 per-system configuration script를
	찾고 해석한다.
	sac 환경에 수정된 것은 모든 sac의 자식에 물려진다.
	이 물려진 환경은 자식들에 의해 수정될 수도 있다.
	per-system configuration script를 찾고 해석한 후에 그것의 관리 화일을 읽고 지정된
	port monitor를 시작한다.
	각 port monitor에 대해 sac은 자신의 복사본을 수행한다.(기술적으로 말하면 sac는 "forks
	a child process")
	각 자식들은 그것의  per-system configuration script이 만약 있다면 그것을 해석한다.
	마지막으로 자식 프로세서는 sac 관리 화일에서 발견할 수 있는 명령을 사용하여 port
	monitor program을 수행한다.

	- SAC initialization process

	  다음은 sac이 처음 시작될때 일어나는 것을 요약했다.

	  1. sac 프로그램은 run level 2에서 init에 의해 불려진다(spawn).
	  2. sac 프로그램은 /etc/saf/_sacconfig,per-system configuration script,를 읽는다.
	  3. sac 프로그램은 /etc/saf/_sactab,SAC administrative file,을 읽는다.
	  4. sac 프로그램은 그것이 시작하는 각 port monitor를 위한 자식 프로세서를 fork한다.
	  5. 각 port monitor는 /etc/saf/pmtag/_config,per-port  configuration script,를 읽는다.

   A.1.3 port monitor service administrator: pmadm command

	pmadm 명령은 port monitor의 서비스들을 관리하도록 한다.
	특별히 서비스를 더하거나 제거하고 서비스를 하거나 하지 않도록하기 위하여 pmadm 명령을
	사용한다.
	사용자는 per-service script들을 버꾸거나 설치할 수 있거나 서비스에 관한 정보를 볼 수 
	있다.
	각 서비스의 경우는 port monitor와 port에 의해 유일하게 구별되어야만 한다.
	서비스를 관리하기 위하여 pmadm 명령을 사용할때 pmtag를 통해 특정한 port monitor와
	svctag를 통해 특정한 port를 지정한다.
	각 port monitor의 형태에 대해 SAF는 port monitor-specific configuration data를 만들기
	위하여 특정한 명령을 요구한다.
	이 데이타는 pmadm 명령에 의해 사용된다.
	ttymon과 listen type port monitor에 대해 이 특정된 명령은 각각 ttymon과 nlsadmin이다.

	- port initialization process

	  ttymon이 ASC에 의해 불려질때 ttymon은 그 포트들의 모니터를 시작한다.
	  각 포트에 대해 ttymon은 처음 라인 규약(line discipline),만약 그들이 지정되어 있다면,
	  ,속도와 터미날 설정을 초기화 한다.
	  초기화에 사용된 값들은 /etc/ttydefs안의 적당한 엔트리에서 취해진다.
	  ttymon port monitor는 프롬프트를 쓰고 사용자 입력을 기다린다.
	  만약 사용자가 Break key를 누름으로 속도가 부적당하다고 가르키면 ttymon은 다음 속도로
	  시도하고 다시 프롬프트를 쓴다.
	  만약 각 포트에 autobaud가 되면 ttymon은 자동적으로 포트에 속도를 결정하려 할 것이다.
	  사용자는 ttymon이 속도를 인식하고 프롬프트를 프린트하기 전에 반드시 Return을 쳐야한다.
	  기본으로 autobaud에 의해 결정할 수 있는 속도는 110,1200,2400,4800과 9600이다.
	  (사용자는 이 기본 값을 /etc/ttydefs를 수정하므로 바꿀 수 있다)
	  분명한 입력이 받아질때 ttymon은 그 포트에 대한 per-service configuration file를
	  해석하여 만약 하나가 존재하면 요구에따라 /etc/utmp 엔트리를 만들고 서비스 환경을
	  설정하고 그 포트에 관련된 서비스를 살린다.
	  명확한 입력은 적어도 하나의 non-Newline 글자로 구성되어 있고 Return으로 끝마쳐져야 한다.
	  서비스가 끝난 후에 ttymon은 /etc/utmp 엔트리를 깨끗이 하고 만약 하나가 존재하면 그
	  포트를 처음 상태로 돌린다.

	- bidirectional service

	  포트가 양방향 서비스로 되어있으면 ttymon은 다음과 같은 일을 할 것이다.

	  * 사용자들이 서비스에 연결되도록 한다.
	  * uucico,cu나 ct가 dialing out을 위해 그 포트를 사용할 수 있게 한다.
	  * 프롬프트를 쓰기 전에 글자를 읽기위해 기다린다.
	  * 포트에 관련된 서비스를 살린다 - 프롬프트 메세지를 보내지 않고 - 연결이 요구될때(만약
	    connect-on-carrier falg가 설정 되었다면)

   A.1.4 port monitor: TTY monitor and network listner

	SAF가 third-party port monitor들과 미래의 것을 관리하기 위한 일반적인 수단을제공함에도
	불구하고 지금은 단지 2가지가 SunOS 5.0에서 수행된다: ttymon과 listen

	- TTY port monitor: ttymon

	  ttymon port monitor는 STREAMS-based이다.
	  이것은 포트들을 모니터한다; 터미날 모드,속도,라닝 규약을 설정하고 로그 인 프로세서를 
	  살린다.
	  이것은 앞의 SunOS 버젼하에서 getty가 했던 같은 일을 제공한다.
	  ttymon port monitor는 sac 프로그램하에서 실행한다.
	  이것은 sacadm 명령을 사용하여 설정(configure)된다.
	  ttymon는 여러개의 포트들을 모니터 할 수 있다.
	  이 포트들은 port monitor의 관리 화일에 지정된다.
	  이 관리 화일은 pmadm과 ttyadm 명령을 사용하여 설정(configure)된다.

	- special ttymon-specific administrative command: ttyadm

	  port monitor의 관리 화일은 sacadm과 omadm에 의해 갱신될 뿐만 아니라 port-monitor의
	  특정된 특별한 관리 명령에 의해 갱신된다.
	  ttyadm 명령은 ttymon port monitor의 특별한 관리 명령이다.
	  ttyadm 명령은 ttymon-specific 정보를 만들고 그것을 standard output에 쓰고 만들어진
	  ttymon-specific 데이타를 sacadm과 pmadm 명령에 나타내는 수단을 제공한다.
	  그래서 ttyadm은 직접 ttymon을 관리하지 않는다.
	  오히려 일반적인 관리 명령인 sacadm과 pmadm을 수행하는데 봉사한다.
	  
	- network listen service: listen

	  listen port monitor는 sac하에서 실행한다.
	  이것은 네트워크에서 서비스 요구를 듣고("listen") 그들이 도착하면 요구를 받아들이고 
	  그 서비스 요구에 반응하여 서버를 살린다.
	  listen port monitor는 sacadm 명령을 사용하여 설정한다.
	  각 listen은 여러개의 서비스를 지원할 수 있다.
	  이 서비스들은 port monitor의 관리 화일에 지정된다.
	  이 관리 화일은 pmadm과 nlsadmin 명령을 사용하여 설정된다.
	  network listener process는 Transport Layer Interface(TLI) specification에 일치하는
	  connection-oriented transport provider와 함께 사용될 수 있다.
	  SunOS 5.0에서는 listen port monitor는 프린트 서비스와 같은 inetd에 의해 제공되지
	  않는 네트워크 서비스도 제공한다.

	- special listen-specific administrative command: nlsadmin

	  port monitor의 관리 화일은 sacadm과 pmadm에 의해 갱신될 갱신될 뿐만 아니라 
	  port monitor-specific한 특별한 관리 명령에 의해서도 갱신된다.
	  nlsadmin 명령은 listen port monitor의 특별한 관리 명령이다.
	  nlsadmin 명령은 listen-specific 정보를 만들고 그것을 standard output에 쓰고 만들어진
	  listen-specific 데이타를 sacadm과 pmadm 명령에 나타내는 수단을 제공한다.
	  그래서 nlsadmin은 직접 listen을 관리하지 않는다.
	  오히려 일반적인 관리 명령인 sacadm과 pmadm을 수행하는데 봉사한다.
	  각 네트워크은 적어도 그것에 관련된 network listen process를 갖는다.
	  각 네트워크은 개별적으로 설정된다.
	  nlsadmin 명령은 listen port monitor의 동작 상태를 제어한다.
	  nlsadmin 명령은 주어진 네트워크에 listen port monitor를 성립할 수 있고 그 port monitor에
	  지정된 특성을 설정하고 monitor를 살리거나 죽일 수 있다.
	  nlsadmin 명령은 또한 기계에 listen port monitor에 보고를 할 수 있다.

A.2 Administering ttymon port monitors

	ttymon port monitor의 상태를 보고,실행하고,안하고,시작하고,끝내고,죽이고,제거하고,더하기
	위하여 sacadm 명령을 사용한다.

	- adding a ttymon port monitor

	  ttymon port monitor를 더하기 위해서는 

	  # sacadm -a -p ttymon_mb -t ttymon -c /usr/lib/saf/ttymon -v `ttymon -V`
	    -y "TTY ports a & b"

	  -a	port monitor flag를 더한다.
	  -p	port monitor flag로 pmtag ttymon_mb를 지정한다.
	  -t	port monitor type를 ttymon으로 지정한다.
	  -c	port monitor를 시작하기 위하여 사용되는 명령을 정의한다.
	  -v	port monitor의 버젼 번호를 지정한다.
	  -y	port monitor를 설명하기 위한 주석을 정의한다.

	- listing ttymon port monitor status

	  ttymon port monitor의 목록 상태를 얻기 위하여

	  # sacadm -l -p ttymon_mb

	  -l	port monitor status flag의 목록
	  -p	port monitor flag로 pmtag ttymon_mb를 지정한다.

	- killing a ttymon port monitor

	  # sacadm -k -p ttymon_mb

	  -k	port monitor status flag를 죽인다.
	  -p	port monitor flag로 pmtag ttymon_mb를 지정한다.

	- starting a ttymon port monitor

	  # sacadm -s -p ttymon_mb

	  -s	port monitor status flag를 시작한다.
	  -p	port monitor flag로 pmtag ttymon_mb를 지정한다.

	- disabling a ttymon port monitor

	  있는 서비스에 영향없이 port monitor가 새로운 서비스를 시작하지 않도록 한다.

	  # sacadm -d -p ttymon_mb

	  -d	port monitor status flag를 하지 않도록 한다.
	  -p	port monitor flag로 pmtag ttymon_mb를 지정한다.

	- enabling a ttymon port monitor

	  새로운 서비스를 할 수 있도록 한다.
	
	  # sacadm -e -p ttymon_mb

	  -e	port monitor status flag를 할 수 있도록 한다.
	  -p 	port monitor flag로 pmtag ttymon_mb를 지정한다.

	- removing a ttymon port monitor

	  ttymon port monitor를 제거한다.

	  # sacadm -r -p ttymon_mb

	  -r	port monitor status flag를 제거상태로 놓는다.
	  -p    port monitor flag로 pmtag ttymon_mb를 지정한다.

 A.3 Administering ttymon services

	port monitor와 관련된 하나 이상의 서비스를 보고,더하고,할 수 있고,없도록 하기 위하여
	pmadm을 사용한다.

	- adding a service

	  ttymon_mb port monitor에 표준 터미날 서비스를 더한다.

	  # pmadm -a -p ttymon_mb -s a -o root -v `ttymon -V` -m "`ttyadm -i 'Terminal disabled.'
	    -l contty -m ldterm,ttcompat -d /dev/term/a -s /usr/bin/login`"

	  -a	더한다(add)
	  -p	pmtag ttymon_mb를 port monitor flag로 지정한다.
	  -s	port monitor service tag를 svctag a로 지정한다.
	  -i	실행될때 svctag에 할당되어질 identity를 지정한다.
	  -v	port monitor의 버젼 번호를 지정한다.
	  -m	ttyadm에 의해 만들어진 ttymon-specific configuration data를 지정한다.

	- syntax for the ttyadm command

	  위의 pmadm 명령은 내부에 ttyadm 명령을 포함한다.
	
	   -b	bidirectional port flag
	   -i	inactive(disabled) response message를 지정한다.
	   -l	사용하는 /dev/ttydefs안의 TTY label를 지정한다.
	   -m	이 서비스를 살리기 전에 들어가는 STREAMS modules를 지정한다.
	   -d	TTY port를 사용하기 위한 디바이스에 대한 절대 경를 지정한다.
	   -s	연결 요구를 받을때 살려지는 서비스의 절대 경를 지정한다.;만약 아규먼트가
		요구되면 명령과 아규먼트를 quotation marks(")로 둘러싼다.

	- listing the status of a TTY port service

	  TTY port의 상태를 보거나 port monitor에 관련된 모든 포트의 상태를 보기 위하여
	  pmadm 명령을 사용한다.
	  
	  * listing one service

	    - port monitor의 하나의 서비스를 보기 위하여

	      # pmadm -l -p ttymon_mb -s a

		-l	서비스 정보의 목록에 대한 프래그(flag)
	  	-p	pmtag ttymon_mb를 port monitor flag로 지정한다.
	  	-s	port monitor service tag를 svctag a로 지정한다.

	  * port monitor의 모든 서비스를 보기 위하여

	      # pmadm -l -p ttymon_mb

		-l	서비스 정보의 목록에 대한 프래그(flag)
		-p	pmtag ttymon_mb를 port monitor flag로 지정한다.

	  * 모든 port monitor의 모든 서비스를 보기 위하여

	      # pmadm -l

		-l      서비스 정보의 목록에 대한 프래그(flag)

	- enabling a port monitor service

		# pmadm -e -p ttymon_mb -s a

		-e 	enable flag
		-p	pmtag ttymon_mb를 port monitor flag로 지정한다.
		-s	port monitor service tag를 svctag a로 지정한다.

	- disabling a port monitor service

		# pmadm -d -p ttymon_mb -s a

		-d 	disable flag

 A.4 Administering listen port monitors

	listen port monitor의 상태를 검사하고,enable,disable,kill,start,remove,add를 하기
	위하여 sacadm 명령을 사용한다.

	- adding a listen port monitor

		# sacadm -a -p tcp -t listen -c /usr/lib/saf/listen -v `nlsadmin -V`
		  -y "le0 ethernet"

	- listing listen port monitor status

		# sacadm -l -p tcp

	- killing a listen port monitor

		# sacadm -k -p tcp

	- starting a listen port monitor

		# sacadm -s -p tcp

	- enabling a listen port monitor

		# sacadm -e -p tcp

	- disabling a listen port monitor

		# sacadm -d -p tcp

	- removing a listen port monitor

		# sacadm -r -p tcp

 A.5 Admonistering listen port monitor services

	listen port monitor에 관련된 서비스를 list,disable,enable,add 하기 위하여 pmadm 명령을
	사용한다.

	- adding a listen port monitor service

		# pmadm -a -p tcp -s lp -i root -v `nlsadmin -V` -m "`nlsadmin -o 
		  /var/spool/lp/fifos/listenS5 `"

	- listening listen port monitor service

		# pmadm -l -p tcp

	- enabling a listen port monitor service

		# pmadm -e -p tcp -s lp

	- disabling a listen port monitor service

		# pmadm -d -p tcp -s lp

 A.6 Reference material for Service Access Facility administration

	- files associated with SAF

	  SAF는 sacadm과 pmadm 명령을 사용하여 수정할 수 있는 몇개의 configuration 화일들을
	  사용한다.
	  손으로 그들을 편집 할 필요는 없다.

	   표 A-2 SAF-associated files
	  ------------------------------------------------------------------------------
	  file name				description
	  ------------------------------------------------------------------------------
	  /etc/saf/_sysconfig		per-system configuration script
	  /etc/saf/_sactab		SAC 관리 화일;SAC를 제어하는 oprt monitor를 위한
					configuration data를 포함한다.
	  /etc/saf/pmtag		port monitor pmtag를 위한 홈 디렉토리
	  /etc/saf/pmtag/_config	port monitor pmtag를 위한 per-port monitor
					configuration script
	  /etc/saf/pmtag/_pmtab		port monitor pmtag의 관리 화일;pmtag 서비스를 지원하기
					위한 port monitor-specific configuration  data를
					포함한다.
	  /etc/saf/pmtag/svctag		service svctag를 위한 per-service configuration script
	  /etc/saf/log			SAC의 log file
	  /var/saf/pmtag		pmtag에 의해 만들어진 화일들을 위한 디렉토리;예로 
					log files
	  ------------------------------------------------------------------------------

	- service states

	  sacadm 명령은 서비스의 상태를 제어한다.
	  가능한 상태는 아래와 같다.

	  ------------------------------------------------------------------------------
		state			notes
	  ------------------------------------------------------------------------------
	  Enabled		default state - port monitor가 더해질때 서비스가 동작한다.
	  Disabled		default state - port monitor가 제거될때 서비스가 멈춘다.
	  ------------------------------------------------------------------------------

	  특정한 서비스의 상태를 결정하기 위하여 pmadm -l -p portmon_name -s svctag를 사용한다.

	- port monitor states

	  sacadm 명령은 ttymon과 listen port monitor의 상태를 제어한다.
	  가능한 상태는 아래와 같다.

	  ------------------------------------------------------------------------------
	  	state				notes
	  ------------------------------------------------------------------------------
	  Started	default state - port monitor가 더해질때 자동으로 시작한다.
	  Enabled	default state - port monitor가 더해질때 자동으로 서비스에 대한
			요구를 받을 준비가 된다.
	  Stopped	default state - port monitor가 제거될때 자동으로 멈춘다.
	  Disabled	default state - port monitor가 제거될때 자동으로 있는 서비스는
			계속하고 새로운 서비스들을 더하는 것을 거절한다.
	  Starting	intermediate state - port monitor가 시작하는 과정에 있다.
	  Stopping	intermediate state -  port monitor가 손으로 멈춰지나 그것의 shutdown
			프로시져를 끝내지 않는다.
			이것은 notrunning이 되는 과정에 있다.
	  Notrunning	inactive state - port monitor가 죽는다.
			전에 모니터된 모든 포트는 접근 할 수 없다.
			밖의 사용자는 이 포트가 disabled거나 notrunning인지 말할 수 없다.
	  Failed	inactive state - port monitor가 시작할 수 없고 실행된채로 남아있다.
	  ------------------------------------------------------------------------------

	  특정한 서비스의 상태를 결정하기 위하여 sacadm -l -p portmon_name을 사용한다.

	- port state

	  Serial(ttymon) port states

		Enabled
		Disabled

	  Network(listen) port states

	 	Enabled
		Disabled


Revision History
Created        on Jan  21 ,1993