OS/SOLARIS2006. 6. 16. 22:14
반응형

­­­­­=­­OS 기술문서
문) 한글이 입출력되지 않을 때.
1. LANG 환경변수와 터미널 모드를 지정한다.
              a) sh, ksh 인 경우, 다음과 같은 내용을 홈디렉토리의 .profile 화일에 넣는다
                              LANG=ko
                              export LANG
                              stty -istrip -parenb cs8
               위의 명령어를 쉘 상에서 바로 실행하면 즉시 반영된다.
               b) csh 인 경우, 다음과 같은 내용을 홈디렉토리의 .login 화일에 넣는다
                              setenv LANG ko
                              stty -istrip -parenb cs8
               위의 명령어를 쉘 상에서 바로 실행하면 즉시 반영된다.
 

문) remote Backup 방법

Tape가 있는 시스템 tserver, Tape가 없는 시스템 client라고 가정한다.
1. Trusted Host 관계를 맺는다.
               a) client에 /.rhosts 화일을 만들고 tserver를 넣는다.
               b) tserver에 /.rhosts 화일을 만들고 client를 넣는다.
               c) tserver에서 다음과 같은 명령어가 실행되는지 확인
                              # rsh client ls
               d) client에서 다음과 같은 명령어가 실행되는지 확인
                              # rsh tserver ls
2. tar backup
               1.1 tserver에서 backup(일반적인 방법)
                              1.1.1 Disk ---> Tape
                                       tar cvf /dev/rmt/0 directory
                              1.1.2 Tape --> Disk
                                       tar xvf /dev/rmt/0
               1.2. client에서 tserver의 tape로 backup
                              1.2.2 Disk ---> Tape
                                       tserver에서 client의 /usr/lib 디렉토리를 backup하려면
                                           # rsh client "cd /usr; tar cvf - lib" > /dev/rmt/0
                              1.2.3 Tape --> Disk
                                       client에서 백업을 풀 디렉토리에 가서 다음과 같이 실행
 
                                           # rsh tserver "cat /dev/rmt/0" | tar xvf -
3. ufsdump/ufsrestore backup
               1.1 tserver에서 backup(일반적인 방법)
                              1.1.1 Disk ---> Tape
                                       ufsdump 0uf /dev/rmt/0 /dev/rdsk/c0t0d0s0
                              1.1.2 Tape --> Disk
                                       ufsrestore rf /dev/rmt/0
               1.2. client에서 tserver의 tape로 backup
                              1.2.2 Disk ---> Tape
                                       client에서 다음과 같이 실행
                                       # ufsdump 0uf tserver:/dev/rmt/0 /dev/rdsk/c0t0d0s0
                              1.2.3 Tape --> Disk
                                       client에서 다음과 같이 실행
                                       # ufsrestore rf tserver:/dev/rmt/0
 

문) sar 데이타 수집하기

sar 데이타를 받으려면 다음과 같은 과정을 수행한다.
1. /etc/init.d/perf 화일에서 다음과 같이 # commnet를 제거한다.
               #MATCH=`who -r|grep -c "[234][   ]*0[    ]*[S1]"`
               #if [ ${MATCH} -eq 1 ]
               #then
               #       su sys -c "/usr/lib/sa/sadc /var/adm/sa/sa`date +%d`"
               #fi
               |
               |
               +--->
                              MATCH=`who -r|grep -c "[234][   ]*0[    ]*[S1]"`
                              if [ ${MATCH} -eq 1 ]
                              then
                               su sys -c "/usr/lib/sa/sadc /var/adm/sa/sa`date +%d`"
                              fi
2. /etc/init.d/perf 화일을 /etc/rc2.d 디렉토리 밑에 링크를 건다.
               # ln /etc/init.d/perf /etc/rc2.d/S21perf
3. "crontab -e sys" 명령어를 실행하여, 다음과 같은 추가한다.
   crontab -e sys를 실행하면 vi 에디터 화면이 나타난다. vi 화면이 나타나지
   않으면 환경변수 EDITOR에 vi를 설정한다.
   다음은 5분간격으로 sar 데이타를 받는 것이다.
                0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/lib/sa/sa1
4. sar 데이타를 받기 위한 초기 작업을 한다. 다음과 같은 명령어를 실행한다.
               # sh /etc/init.d/pert start
               * reboot하지 않아도 되며, reboot하여도 sar 데이타는 계속 받힌다.
 

문) 사용자(계정) 등록하기

1. 시스템에 새로운 사용자를 등록하기
               # useradd -d /export/home/guest -s /usr/bin/ksh -m guest
    이 명령어는 /export/home/guest라는 홈디렉토리를 가지는 guest 라는 사용자를
    만든다. 그 사용자의 login shell은 /usr/bin/ksh이다.
    -m 옵션은 사용자의 홈디렉토리응 만들어 준다.
    이 명령어를 실행하기전에 /export/home 디렉토리는 존재하여야 한다.
    useradd 명령어로 사용자를 만들면, 그 사용자의 암호는 lock되어 있어서 암호를
    넣어 줄때까지 이 사용자는 login할 수 없다.
    그래서 passwd 명령어를 사용하여 암호를 넣어주어야 한다.
               # passwd guest
               New password:
               Re-enter new password:
2. 시스템에서 사용자 제거하기
               # userdel -r guest
    guest라는 사용자를 시스템에서 제거한다. -r 옵션을 사용자의 홈디렉토리를 지운다.
6. 참고 문헌
    시스템에 설치된 메뉴얼 페이지를 참고한다.
               useradd(1M), userdel(1M), usermod(1M)
               예제)
                              man useradd
 

문) 백업(Backup) 방법

Solaris 2.X에서는 다음과 같은 4가지 백업이 있다.
               1. tar
               2. cpio
               3. dd
               4. ufsdump/ufsrestore
1. tar
 
    tar를 화일 또는 디렉토리 전체를 백업 받는데 사용된다.
    1.1 화일 시스템에서 테이프로 백업 받기
               # tar cvf /dev/rmt/0 .
    1.2 테이프에서 화일 시스템로 백업 받기
               # tar xvf /dev/rmt/0
    1.3 테이프 내용 보기
               # tar tvf /dev/rmt/0
2. cpio
    2.1 화일 시스템에서 테이프로 백업 받기
               # find . -print | cpio -ocvB -O /dev/rmt/0
    2.2 테이프에서 화일 시스템로 백업 받기
               # cpio -icvBmd -I /dev/rmt/0
    2.3 테이프 내용 보기
               # cpio -ict -I /dev/rmt/0
3. dd
    3.1 화일을 테이프로 백업 받기
               # dd if=file1 of=/dev/rmt/0 bs=4096k
    3.2 테이프에서 화일로 백업 받기
               # dd if=/dev/rmt/0 of=file1 bs=4096k
4. ufsdump/ufsrestore
    4.1 화일시스템에서 테이프로 백업 받기
               # ufsdump 0cuf /dev/rmt/0  /
    4.2 테이프에서 화일 시스템으로 백업 받기
               # ufsrestore rvf /dev/rmt/0
    4.3 테이프 내용 보기
               # ufsrestore tvf /dev/rmt/0
    4.4 Interactive restore
               # ufsrestore ivf /dev/rmt/0
 
문) / 화일 시스템이 full 되었을 경우 조치 방법

/ (root) 화일시스템이 full되었을 경우에 다음에 열거한 순서대로 화일시스템을
점검한다.
1. / 화일시스템에 사용자가 임의로 만들어 준 디렉토리가 있는면 정리한다.
2. /dev 디렉토리 밑에 일반화일이 있는지 조사한다.
               # find /dev  -type f -exec ls -l {} \;
 
    일반화일이 있을 경우, 모두 지우면 된다. 특히 테이프에 백업을 받을 경우에
    사용자가 디바이스명을 잘못 지정하여, 테이프에 백업되지 않고 화일에
    저장하는 경우가 있다.
3. 시스템에 있는 core 화일을 제거한다.
    core 화일을 찾아 보려면 다음과 같은 명령어를 사용한다.
               # find / -name core -print        
    core 화일을 찾아서 자동으로 지우려면 다음과 같은 명령어를 실행한다.
               # find / -name core -exec rm {} \; -print
4. /var가 root 화일 시스템이 있을 경우, /var 디렉토리 밑을 조사한다.
               # du -sk /var/* | sort -nr
    이 명령어를 실행하면 /var 밑에 있는 디렉토리 별로 그 서브 디렉토리까지
    포함하여 KB 단위의 크기를 출력한다. 거기에서 사이즈가 큰 디렉토리에 대하여
    조사한다.
    정상적인 시스템에 주로 문제가 될 만한 디렉토리는 다음과 같다.
               /var/adm
               /var/mail
               /var/log
               /var/preserve
               /var/spool
    4.1 /var/adm
               /var/adm 디렉토리에는 시스템이 운용중이 발생하는 메세지나 기타 정보들이
               누적 보관된다. 이 디렉토리에 큰 화일이 있으면 정리한다.
                              messmages.0, messages.1, ...
               이러한 화일이 있으면 그냥 지워도 상관없다.
               messages 화일의 크기가 너무 크면 " # cp /dev/null messages " 명령어를
               사용하여 화일 크기를 0으로 만들 수 있다. 이 화일은 시스템에서 발생되는
               메세지를 보관하는 화일이다.
               wtmp 또는 wtmpx 화일의 크기가 너무 크면 다음과 같은 명령어를 실행하여
               그 크기를 0으로 만들 수 있다. 이 화일에는 시스템에 접속한 사용자에
               대한 정보를 가지고 있는 화일이다.
                              # cp /dev/null wtmp
                              # cp /dev/null wtmpx
               만일 pacct이 있으면 그 화일의 크기를 다음과 같은 명령어를 사용하여
               크기를 0으로 만들 수 있다. 이 화일은 accounting 정보를 가지고 있는
               화일이다.
 
                              # cp /dev/null pacct
               pacct1, pacct2, ... 등등의 화일이 있으면 그냥 지우면 된다.
               그외에도 사이즈가 큰 화일을 알아서 정리한다.
    4.2 /var/mail
               /var/mail 디렉토리에는 메일 데이타가 보관되는 곳이다. 이 디렉토리에
               사이즈가 큰 화일이 있으면, 해당 사용자에게 그 메일을 정리하도록 한다.
    4.3 기타 디렉토리에 대해서도 조사하여 불필요하게 사이즈가 큰 화일 있을
        경우 알아서 정리한다. 단 화일을 지울 때, 그 화일이 어떤 화일인지
               숙지한 후에 지울 것인가 아닌가를 결정한다.
5. / 화일 시스템에 있는 1 MB 이상되는 화일을 조사하여, 화일 크기순으로
   sort하여 그 내용을 조사한다.
               # find / -mount -size +1024k -ls > /tmp/find.list
               # sort -nr +6 /tmp/find.list > /tmp/find.list.s
     find.list.s 화일에서 비정상적인 큰 화일이 있는지 조사한다.
 

문) acct(accounting) 설정하기

1. rc 화일을 지정한다.
               # ln /etc/init.d/acct /etc/rc2.d/S22acct
               # ln /etc/init.d/acct /etc/rc0.d/K22acct
2. cron 작업을 등록한다.
    2.1 /var/spool/cron/crontab/adm 화일에 다음과 같은 내용을 추가한다.
                              0 * * * * /usr/lib/acct/ckpacct
                              0 1 * * 1-6 /usr/lib/acct/dodisk
                              0 2 * * 1-6 /usr/lib/acct/runacct 2> /var/adm/acct/nite/fd2log
                              15 5 1 * * /usr/lib/acct/monacct
               시간들은 사용자의 목적에 맞게 변경할 수 있다.
    2.2 /var/spool/cron/crontab/root 화일에 다음과 같은 내용을 추가한다.
3. 시스템을 reboot하면 변경사항이 적용된다.
4. 시스템을 reboot하지 않고 accounting을 적용하려면 2번 cron 작업을
               # env EDITOR=vi crontab -e adm
    을 실행하여 등록하고,
               # /usr/lib/acct/startup
    를 실행시킨다.
5. 참고 문헌
               시스템에 설치된 메뉴얼 페이지를 참고한다.
 
               acct(1M), acctsh(1M), lastcomm(1)
               예제)
                              man acct
 

문) message queue parameter 설정하기

1. message queue 개략 설명
 Name    Default Max             Brief Description
 ------  ------- -------------- -------------------------------------
 msgmap               100               2147483647               메세지 map에 있는 entry 갯수
 msgmax 2048               2147483647*               메세지 최대 크기
 msgmnb               4096               2147483647*               메세지 큐의 최대 크기
 msgmni  50               2147483647               메세지 큐 identifier의 갯수
 msgssz 8               2147483647*               메세지 segment의 크기
 msgtql    40               2147483647               시스템 메세지 헤더 갯수
 msgseg 1024               32767*                             메세지 segment의 수 (MUST BE < 32768)
2. message queue 세부 설명
    msgmap
               메세지 큐 resource map의 크기를 정의한다. 이 map에 있는 하나의 entry는
               연속적인 가용한 공간를 차지한다. 이것은 msgsnd(2) 시스템 콜에 의해
               얻어지는 메세지 큐 segment를 위한 공간으로 사용된다. 
    msgmax
               하나의 메세지에 대한 크기를 제한한다. 메세지의 크기가 이 값보다 크면
               msgsnd(2) 시스템 콜은 EINVAL 오류값을 리턴한다.
               이 값은 최대 2GB까지 사용할 수 있지만 시스템의 다른 요소들이 65535로
               제한된 것이 있기 때문에 65535보다 큰 값을 사용할 경우에 예기치 못한
               결과가 발생할 수 도 있다.
    msgmnb
               하나의 메세지 큐가 수용할 수 있는 메세지의 최대 크기를 제한한다.
               이 값은 메세지 큐에 보관되어 있는 메세지들의 크기(byte)의 합계이다.
               위에 기술된 최대값은 Solaris 2.4 이상의 버전이고, 그 이전의 버전에서는
               최대값이 65535로 제한된다.
    msgmni
               시스템에 가용한 메세지 큐 identifier의 갯수를 정의한다.
               시스템은 이 값만큼의 msgmni control structure에 해당되는 커널 메모리를
               미리 할당한다. 하나의 control structure는 144 바이트이다.
 
    msgtql
               시스템에서 가용한 메세지 큐 헤더를 갯수를 정의한다. 메세지 큐에 들어
               있지만 아직 읽혀지지 않은 메세지는 하나의 메세지 큐 헤더를 차지한다.
               시스템은 이 값만큼의 msgtql control structure에 해당되는 커널 메모리를
               미리 할당한다. 하나의 control structure는 12 바이트이다.
    msgssz & msgseg
               이 두개의 값에 의하여, 모든 큐에 있는 모든 메세지에 대한 가용한 전체
               바이트 수를 정의한다. 시스템은 메세지 큐들에 대하여 커널 메모리를
               미리 할당한다. 메모리의 총합은 msgssz * msgsseg 이다.
               msgssz * msgsseg의 값은 2147483647을 넘어서는 안된다.
3. message queue parameter 설정하기
    message queue parameter를 시스템에 설정하려면 /etc/system 화일에 다음과
    같은 라인을 추가하고, 시스템을 rebooting하면 변경사항이 반영된다.
                 set msgsys:msginfo_variable = value
    여기서 'variable'은 위에서 설명한 Name 필드에 있는 값이다.
    예를 들면,
               set msgsys:msginfo_msgmap = 150
    msgmap(message queue resource map)의 값을 150으로 변경한다.
4. message queue parameter 값을 조사하기
    시스템에 설정되어 있는 message queue parameter의 값은 'sysdef' 명령어로
    확인할 수 있다.
               $ sysdef
               .... Skip ....
               *
               * IPC Semaphores
               *
                  100  entries in msg map (MSGMAP)
                 2048  max message size (MSGMAX)
                 4096  max bytes on queue (MSGMNB)
                   50  message queue identifiers (MSGMNI)
                    8  message segment size (MSGSSZ)
                   40  system message headers (MSGTQL)
                 1024  message segments (MSGSEG)
               .... Skip ....
 
    위에 있는 값들이 0로 보일 수 도 있다. 이 경우는 message queue module이
    커널에 올라와 있지 않기 때문이다. Solaris 2.x에서는 dynamic kernel을
    사용한다. 이는 kernel module들이 사용될 때, kernel에 결합되고, 사용하지
    않으면 커널에서 제거된다는 것을 의미한다. 강제적으로 message queue
    module을 커널에 load하려면 다음과 같이 'modload'명령어를 사용할 수 있다.
               # modload -p sys/msgsys
    그리고 다시 sysdef 명령어는 사용하면, message queue parameter를 확인할
    수 있다.
5. 커널 메모리의 제약
    Solaris 2.5 이상 버전에서는 message queue가 메모리의 1/4 이상이 할당되지
    못하도록 하며, 그 이상이 할당되면 경고 메세지를 출력하고, message queue
    module을 load하지 않는다.
6. 참고 문헌
    시스템에 설치된 메뉴얼 페이지를 참고한다.
    msgget(2), msgctl(2), msgop(2), msgsnd(2), msgrcv(2)
    예제)
               man msgget
 

문) semaphore parameter 설정하기

1. semaphore parameter 개략 설명
 Name    Default     Max                 Brief Description
 ------  ------- -------------- -------------------------------------
 semmap          10               2147483647               semaphore map에 있는 entry의 갯수
 semmni   10               65535                              semaphore set (identifier)의 갯수
 semmns          60               2147483647               시스템에 있는 semaphore의 갯수
       65535 (usage)
 semmnu          30               2147483647               시스템이 있는 "undo" structure의 갯수
 semmsl   25               2147483647               하나의 semaphore ID에 있는 semaphore 최대 갯수
                              65535 (usage)
 semopm          10               2147483647               하나의 semaphore call당 최대 operation 최대 갯수
 semume          10               2147483647               하나의 프로세서당 "undo" entry 최대 갯수
 semusz  96               *see below*               "undo" structured의 크기(byte)
 semvmx  32767               2147483647               semaphore 최대값
                              65535 (usage)
 semaem          16384               2147483647               exit시에 보정될 최대값
                              32767 (usage)
 
2. semaphore parameter 세부 설명
    semmap
               semaphore resource map의 크기를 정의한다. 이 map에 있는 하나의 entry는
               연속적인 가용한 semaphore를 차지한다.
               semget(2) 시스템 콜에 의해 얻어지는 semaphore set을 위한 공간이다.
    semmni
               시스템에서 사용할 수 있는 최대 semaphore sets (identifiers)를 정의한다.
               시스템에 있는 모든 semaphore set은 유일한 ID와 제어구조를 갖는다.
               각 semaphore set에 대하여 84 바이트의 커널 메모리가 미리 할당된다.
               semmni의 값을 65535 보다 크게 지정하면, 시스템은 경고 메세지를 출력하고
               이 값은 65535로 설정한다.
    semmns
               시스템에 있는 semaphore의 갯수를 정의한다. 각 semaphore에 대하여
               16 바이트의 커널 메모리가 미리 할당된다.
    semmnu
               시스템이 있는 semaphore undo structure를 정의한다. 각 undo structure에
               대하여 semusz 크기 만큼의 커널 메모리가 미리 할당된다.
               하나의 프로세스에 대하여 undo 정보를 기록하기 위하여 하나의 undo
               structure가 필요하다.
    semmsl
               하나의 semaphore ID에 대하여 생성될 수 있는 semaphore의 갯수를 제한한다.
               논리적으로 semmsl는 semmns의 값과 같거나 적어야 한다.
               만일 이 값을 너무 크게 잡으면, 몇개의 semaphore ID가 시스템 전체에
               있는 semaphore를 독식할 수 있다.
    semopm
               하나의 semop(2) 시스템 콜에서 처리할 수 있는 operation 수를 제한한다.
    semume
               하나의 프로세스가 가질 수 있는 undo record의 수를 제한한다.
    semusz
               semaphore undo structure의 크기를 정의한다. 이 값은 사용자가 변경하는
               것이 아니고, 시스템에 의해 계산된다.
                              semusz = 8 * (semume + 2)
    semvmx
               하나의 semaphore의 최대값을 제한한다. undo structure와 semaem과의
               연관관계가 있으므로 이 값의 디폴트 32767 보다 크게 지정하지 말아야
               한다. 만일 디폴트 보다 크게하면, SEM_UNDO 기능을 사용할 수 없다.
    semaem
               adjust-on-exit undo element의 최대값을 제한한다.
3. semaphore parameter 설정하기
    semaphore parameter를 시스템에 설정하려면 /etc/system 화일에 다음과
    같은 라인을 추가하고, 시스템을 rebooting하면 변경사항이 반영된다.
                 set semsys:seminfo_variable = value
    여기서 'variable'은 위에서 설명한 Name 필드에 있는 값이다.
    예를 들면,
               set semsys:seminfo_semmap = 15
    semmap(semaphore resource map)의 값을 15으로 변경한다.
4. semaphore parameter 값을 조사하기
    시스템에 설정되어 있는 semaphore parameter의 값은 'sysdef' 명령어로
    확인할 수 있다.
               $ sysdef
               .... Skip ....
               *
               * IPC Semaphores
               *
                   10  entries in semaphore map (SEMMAP)
                   10  semaphore identifiers (SEMMNI)
                   60  semaphores in system (SEMMNS)
                   30  undo structures in system (SEMMNU)
                   25  max semaphores per id (SEMMSL)
                   10  max operations per semop call (SEMOPM)
                   10  max undo entries per process (SEMUME)
                32767  semaphore maximum value (SEMVMX)
                16384  adjust on exit max value (SEMAEM)
               .... Skip ....
    위에 있는 값들이 0로 보일 수 도 있다. 이 경우는 semaphore module이
    커널에 올라와 있지 않기 때문이다. Solaris 2.x에서는 dynamic kernel을
    사용한다. 이는 kernel module들이 사용될 때, kernel에 결합되고, 사용하지
    않으면 커널에서 제거된다는 것을 의미한다. 강제적으로 semaphore module을
    커널에 load하려면 다음과 같이 'modload'명령어를 사용할 수 있다.
               # modload -p sys/semsys
    그리고 다시 sysdef 명령어는 사용하면, semaphore parameter를 확인할
    수 있다.
5. 커널 메모리의 제약
    Solaris 2.5 이상 버전에서는 semaphore가 메모리의 1/4 이상이 할당되지
    못하도록 하며, 그 이상이 할당되면 경고 메세지를 출력하고, semaphore module을
    load하지 않는다.
6. 참고 문헌
    시스템에 설치된 메뉴얼 페이지를 참고한다.
               semget(2), semctl(2), semop(2)
               예제)
                              man semget
 

문) shared memory parameter 설정하기

1. shared memory parameter 설명
 Name               Default                           Max                 Description
 ------   ---------------               --------------- -------------------------------------
 shmmax               1048576 (1Meg)               4294967295               shared memory segment의 최대 크기를
                                       (4GB)                             지정한다. 이 크기는 shmget(2) 시스템
                                       2.5.1 or               콜에서 요구할 수 있는 최대 크기이다.
                                       higher                             커널이 이 값 만큼의 메로리를 미리
                                                               할당하여 별도로 관리하는 것이 아니고     
                                       2147483647               필요할 때마다 할당 받아 사용한다. 그래서
                                       (2GB)                             이 값을 크게 지정하여도 시스템이 나쁜
                                       2.5 or lower               영향을 주지는 않는다.
 shmmin  1                      4294967295               shared memory segment의 최소 크기를
                                       (4GB)                             지정한다. 이 값은 변경할 필요는 없다.
                                       2.5.1 or           
                                       higher                      
                                                              
                                       2147483647      
                                       2.5 or lower      
 shmseg 6                      32767                              하나의 프로세서에 할당될 수 있는 최대
                                       (32k)                shared memory segment의 갯수를 지정한다.
                                                               이 값은 segment가 할당될 때, segment의
                                                               갯수를 조사하는데 사용된다. 그러므로
                                                               이 값에 의하여 미리 할당되는 자원은
                                                               없다. 만일 이 값이 34K를 넘어서면,
                                                               주의 메세지를 출력하고, 그 값은 32k로
                                                               설정한다.
 shmmni  100                  2147483647               시스템에 가용한 shared memory
                                       (2GB)                             identifier의 최대 갯수를 지정한다.
                                                               모든 shared memory segment는
                                                               이 identifier에 의해 관리되며, shmget(2)
                                                               시스템 콜의 리턴값이다.
                                                               identifier 1개당 약 120 바이트 정도의
                                                               메모리가 미리 할당된다.
                                                               Solaris 2.5 이상 버전에서는
                                                               메모리의 1/4 이상이 이 identifier에
                                                               할당되지 못하도록 하며, 그 이상이
                                                               할당되면 경고 메세지를 출력하고,
                                                               shared memory module를 load하지 않는다.
2. shared memory parameter 설정하기
    shared memory parameter를 시스템에 설정하려면 /etc/system 화일에 다음과
    같은 라인을 추가하고, 시스템을 rebooting하면 변경사항이 반영된다.
                 set shmsys:shminfo_variable = value
    여기서 'variable'은 위에서 설명한 Name 필드에 있는 값이다.
    예를 들면,
               set shmsys:shminfo_shmmni = 150
    shmmni의 값을 150으로 변경한다.
3. shared memory parameter 값을 조사하기
    시스템에 설정되어 있는 shared memory parameter의 값은 'sysdef' 명령어로
    확인할 수 있다.
               $ sysdef
               .... Skip ....
               *
               * IPC Shared Memory
               *
               1048576            max shared memory segment size (SHMMAX)
                    1              min shared memory segment size (SHMMIN)
                  100               shared memory identifiers (SHMMNI)
                    6              max attached shm segments per process (SHMSEG)
               .... Skip ....
    위에 있는 값들이 0로 보일 수 도 있다. 이 경우는 shared memory module이
    커널에 올라와 있지 않기 때문이다. Solaris 2.x에서는 dynamic kernel을
    사용한다. 이는 kernel module들이 사용될 때, kernel에 결합되고, 사용하지
    않으면 커널에서 제거된다는 것을 의미한다. 강제적으로 shared memory module을
    커널에 load하려면 다음과 같이 'modload' 명령어를 사용할 수 있다.
               # modload -p sys/shmsys
    그리고 다시 sysdef 명령어는 사용하면, shared memory parameter를 확인할
    수 있다.
4. 참고 문헌
    시스템에 설치된 메뉴얼 페이지를 참고한다.
    shmget(2), shmop(2), shmat(2), shmdt(2)
    예제)
               man shmget
 

문) 일반적인 커널 파라메터 및 수정방법

1. 최대 사용자수 지정하기 (maxusers)
    최대 사용자수는 시스템에 설치된 메모리의 양에 따라 자동적으로 적절한 값이
    설정된다. 특별한 경우가 아니면 이 파라메터를 변경하지 않는 것이 바람직하다.
    또한, 이 파라메터를 기준으로 다음과 같은 파라메터들이 자동적으로 설정된다.
               max_nprocs   Maximum number of processes (default = 10 + 16 * maxusers)
               ncallout     Number of callout buffers (default = 16 + max_nprocs)
               ufs_ninode   Maximum number of inodes.
                                        (default = max_nprocs + 16 + maxusers + 64)
               ncsize       Number of dnlc entries.
                                        (default = max_procs + 16 + maxusers + 64)
    명시적으로 최대 사용자수를 지정하려면, /etc/system 화일에 다음과 같은
    라인을 추가하고, 시스템을 리부팅한다.
               set maxusers=100
2. 최대 프로세스 갯수 지정하기 (max_nprocs)
    시스템이 허용하는 최대 프로세스 수는 최대 사용자 수에 비례하여 자동으로
    설정된다. 그러나 그 갯수가 너무 적거나 많으면 사용자가 명시적으로 지정할
    수 있다.  최대 프로세스 수를 10000으로 지정하려면, /etc/system 화일에
    다음과 같은 라인을 추가하고, 리부팅한다.
               set max_nprocs=10000
3. 가상단말기 갯수 지정하기 (pt_cnt)
    시스템에 사용되는 가상단말기 갯수는 디폴트로 48개가 설정되어 있다.
    가상단말기는 /dev/pts/0, ..., /dev/pts/47로 되어 있다. 이 가상단말기는
    telnet이나 rlogin을 통해서 시스템으로 들어올 경우에 하나씩 사용된다.
    X-window에서 cmdtool이나 shelltool, dtterm을 실행하여도 하나씩 사용된다.
    만일, 가상단말기의 갯수를 128개로 늘이려면, /etc/system 화일에 다음과 같은
    라인을 추가하고, 리부팅한다.
               set pt_cnt=128
               set npty=128
    ** 시스템을 리부팅할 때에는 반드시 reconfiguration 모드로 리부팅하여야 한다.
    예제) command:
                              # reboot -- -r
                 PROM:
                              OK boot -r
4. 최대 화일 디스크립트 갯수 지정하기 (rlim_fd_cur)
    하나의 프로세스가 동시에 open할 수 있는 최대 화일의 개수는 디폴트로
    64개이고, 1024개까지 화일의 갯수를 늘릴 수 있다.
    shell에서 최대화일의 갯수를 512개로 늘이려면, 다음과 같이 지정한다.
               csh 경우)
                              limit descriptors 512
               sh, ksh 경우)
                              ulimit -n 512
    shell에서 한번 지정되면 이후에 실행되는 모든 명령어에 이 영향이 반영된다.
    만일, 디폴트 값을 128로 하고 최대 화일의 갯수를 1500까지 늘릴 수 있도록
    하려면, /etc/system 화일에 다음과 같은 내용을 추가하고, 시스템을 리부팅한다.
               set rlim_fd_max=1500
               set rlim_fd_cur=128
5. 최대 UFS inode수 지정하기 (ufs_ninode)
    시스템에서 화일을 open하면 하나의 화일에 대하여 하나의 ufs_niode를 가지게
    된다. 명시적으로 이 값을 지정하려면, /etc/system 화일에 다음과 같은 내용을
    추가하고, 시스템을 리부팅한다.
               set ufs_ninode=10000
 
 
 
 
문) timezone 화일 변경 및 설정하기
1. timezone 이란 ?
    그리니치 표준시간(GMT)를 기준으로 각 지역이 위치한 경도에 따라 시간의 차이가
    있다. 이러한 동일한 시간대를 지역을 동일한 timezone을 가진다고 말한다.
    timezone에 따라 변동이 있는 시간대를 컴퓨터상에서 보정하기 위하여 컴퓨터가
    사용되는 지역에 따라 timezone정보를 컴퓨터에 지정하도록 되어있다.
    우리나라의 전지역은 하나의 시간대를 사용하며, ROK라는 timezone을 가진다.
    시스템이 제공하는 clock을 GMT 시간으로 내부적으로 사용되고, 외부에 시간이
    나타날 때에는 환경변수 TZ에 설정된 timezone정보에 따라 GMT 표준시간이
    가공되어 지역에 맞는 시간이 나타난다.
    시간에 관련된 모든 명령어는 TZ 환경변수에 영향을 받는다.
    date 명령어를 시용하여 간단하게 테스트하면, timezone(TZ)에 따라
    시간이 다르게 나타나는 것을 알 수 있다.
               # date          
               1998년 11월  6일 금요일 오전 11시 19분 15초
               # env TZ=Hongkong date
               1998년 11월  6일 금요일 오전 10시 19분 15초
               # env TZ=Turkey date;date
               1998년 11월  6일 금요일 오전 04시 19분 15초
    위에서 보는바와 같이 홍콩은 우리나라보다 1 시간 늦고, 터키는 7 시간 늦다.
2. zone 화일
    zone화일은 /usr/share/lib/zoneinfo 디렉토리에 존재한다. 이 디렉토리에는
    테스트 화일로 된 timezone 정보화일과 컴파일된 timezone 정보화일이 있다.
    컴파일된 timezone 정보화일이 TZ 환경변수에 설정될 수 있다.
    우리나라의 timezone은 ROK이다.
               # echo $TZ
               ROK
    asia라는 화일에 ROK에 대한 timezone 정보가 들어 있다.
               ------------------------------------------------------
               # Rule NAME  FROM  TO  TYPE  IN  ON  AT  SAVE   LETTER/S
               Rule   ROK  1960  only   -     May    15      0:00   1:00   D
               Rule   ROK  1960  only   -     Sep    13      0:00   0      S
               Rule   ROK  1987  1988   -     Jan    Sun<=14 0:00   1:00   D
               Rule   ROK  1987  1988   -     Oct    Sun<=14 0:00   0      S
               
               # Zone  NAME       GMTOFF  RULES   FORMAT  [UNTIL]
               Zone    Asia/Seoul 8:27:52 -       LMT     1890
                                          8:30    -       KST     1904 Dec
                                          9:00    -       KST     1928
                                          8:30    -       KST     1932
                                          9:00    -       KST     1954 Mar 21
                                          8:00    ROK     K%sT    1961 Aug 10
                                          8:30    -       KST     1968 Oct
                                          9:00    ROK     K%sT
               -----------------------------------------------------------------------
    설명:
               Rule   ROK  1960  only   -     May    15      0:00   1:00   D
               Rule   ROK  1960  only   -     Sep    13      0:00   0      S
               Rule   ROK  1987  1988   -     May    Sun<=14 0:00   1:00   D
               Rule   ROK  1987  1988   -     Oct    Sun<=14 0:00   0      S
    위의 Rule을 보면 1960에 5월 15일 부터 9월 13일까지 summer time을 적용했었고
    1987에서 1988년 2년간 summer time을 적용하였다는 내용을 알 수 있다.
    알 수 있다.  만일 계속 summer time을 사용하려면, TO 필드에 max라고 하면된다.
               Rule   ROK  1987  1988   -     Jan    Sun<=14 0:00   1:00   D
               Rule   ROK  1987  1988   -     Oct    Sun<=14 0:00   0      S
    각 필드에 대한 자세한 내용은 zic 메뉴얼 페이지를 참조하십시오.
               # man zic
3. timezone에서 summer time설정하는 법.
               ------------------------------------------------------------
               # Rule NAME FROM  TO  TYPE  IN  ON  AT  SAVE  LETTER/S
               Rule   ROK  1960  only   -     May    15      0:00   1:00   D
               Rule   ROK  1960  only   -     Sep    13      0:00   0      S
               Rule   ROK  1987  max    -     May    Sun<=14 0:00   1:00   D
               Rule   ROK  1987  max    -     Oct    Sun<=14 0:00   0      S
               # Zone  NAME       GMTOFF  RULES   FORMAT  [UNTIL]
               Zone    Seoul 8:27:52 -       LMT     1890
                                           8:30   -       KST     1904 Dec
                                          9:00    -       KST     1928
                                          8:30    -       KST     1932
                                          9:00    -       KST     1954 Mar 21
                                          8:00    ROK     K%sT    1961 Aug 10
                                          8:30    -       KST     1968 Oct
                                          9:00    ROK     K%sT
               -----------------------------------------------------------------------
    위와 같이 zoneinfo 내용을 test라는 화일로 만들어 다음의 명령어를 수행한다.
    변경된 timezone 화일이 의미하는 것은 1987년부터 매년 5월 14일 내의 최후
    일요일에 summer time을 적용하고 10월 14일 내의 최후의 일요일에 해제한다.
               # zic test
    이명령어가 실행되면 /usr/share/lib/zoneinfo 디렉토리 밑에 Seoul이라는
    컴파일된 timezone 정보화일이 생성된다.
    환경변수 TZ에 Seoul이라는 값을 설정하여, summer time 기간중에
    date 명령어를 수행하면 1 시간 빨리 설정되어 있음을 알수 있다.
               # date
               1998년 7월  6일 월요일 오후 03시 19분 39초
               # env TZ=Seoul date
               1998년 7월  6일 월요일 오후 04시 19분 39초
4. 참고 문헌
    시스템에 설치된 메뉴얼 페이지를 참고한다.
               zic(1M), zdump(1M), ctime(3C)
               /usr/share/lib/zoneinfo/*               (timezone database)
 
문) E3500system의 booting이 안될때...
E3500 system에 Solaris 2.6 3/98또는 5/98 version의 Enduser cluster type
으로 install하였을 경우 booting을 하지 못하며, 다음과 비슷한 error를
보게 될것이다.
cannot load drivers for
sbus@2,0/sunw,socal@c,10000/ss@0,0/ssd@w21000020370eaf1c,0:a
위와 같은 error는 다음의 package가 install되어 있지 않기 때문이므로, OS
install시 반드시 선택하여 install하여야 한다.
               SUNWhea         SunOS Header Files
        SUNWssadv       SPARCstorage Array Drivers
 
 
 
 
 
문) Solaris 2.6의 인스톨
1. 인스톨 방법
               Solaris 2.6의 인스톨에는 다음과 같은 방법이 있다.
               1) Solaris Web Start
               2) 대화식 인스톨 프로그램을 사용한 신규 인스톨
               3) 대화식 인스톨 프로그램에 따른 업그래이드 인스톨
               4) 대화식 인스톨 프로그램을 사용한 네트워크 인스톨
               5) Custom Jumpstart
               6) Jumpstart
2. Solaris Web Start
               Solaris 2.6부터 서포트되는 새로운 인스톨 유틸리티 이다.
               유저 인터페이스에 Sun의 Web 브라우저인 HotJava를 사용하고 있는 것이
               특징으로 Solaris 2.6을 신규로 인스톨 하는 경우 더욱 간단한 방법 이다.
               이것을 사용 하여 서버 패키지에 있는 언-번들 소프트웨어와 Answer Book도
               동시에 인스톨이 가능하다.
               Java 대응의 Web 브라우저를 사용하여 로컬에 콘솔을 가지고 있지 않은
               서버의 인스톨을 네트워크 상의 별개의 머신으로 부터 인스톨도 가능 하다.
3. 대화식 신규 인스톨
               종래에 사용한 일반적인 Solaris 2.x의 인스톨 방법이다.
               Solaris 2.6에도 서포트 하고 있는 윈도우 베이스 인스톨 작업이다.
               인스톨 시에 시스템 디스크 이외의 디스크를 설정이 가능하다.
4. 대화식 업-그레이드 인스톨
               Solaris Web Start가 신규의 인스톨에 대응 하고 있지 않은 것에 대해
               대화식 인스톨 프로그램(Interactive Installation Program)은
               업-그레이드 인스톨에도 대응 하고 있다.
               Solaris 2.4이후의 OS가 인스톨 되어 있고 모든 사용 환경이 설정 되어 있는
               시스템에 대하여 업-그레이드가 가능 하다.
               업-그레이드 인스톨에는 다음과 같은 처리가 가능 하다.
               1) 업-그레이드의 대상의 디스크(시스템 디스크)를 지시
                  업-그레이드 프로그램은 그 디스크의 화일 시스템에 있는 기존 시스템의
                  각종 설정 정보를 보존 한다.
               2) 기존의 패키지의 삭제
               3) 기존의 패치의 삭제
               4) 필요한 경우 디스크 영역의 재배치
                  경우에 따라 일시적으로 백업 하기 위해 백업 장치가 필요
               5) 신규 패키지의 인스톨
               6) 디바이스 노드의 재작성
               7) 보존 하고 있는 내용을 새로운 시스템에 머지
               8) /var/sadm/install_data/upgrade_cleanup 스크립트의 작성
               9) 로그 화일 이름 등을 표시
               그러나 업-그레이드 인스톨에는 화일 변경의 유/무를 체크 하므로 내용을
               유지하기 위한 처리로 신규 인스톨에 비해 시간이 많이 소요 된다.
               시스템에 대한 변경이 큰 경우, 예를들면 인스톨 후에 화일 시스템의
               구성을 바꾸거나 시스템 화일의 일부를 삭제 하거나 절대 패스의 심볼릭
               링크를 변경한 경우는 정확한 업-그레이드가 가능하지 않는 경우도 있다.
               업-그레이드 프로그램이 참조하는 이하의 화일은 시스템의 상태를 정확히
               반영 하고 있지 않으면 않된다.
               /var/sadm/softinfor/INST_RELEASE
               /var/sadm/install/contents
               /var/sadm/install_data.clustertoc
               /var/sadm/install_data/CLUSTER
               업-그레이드 인스톨을 실행한 경우, 시스템에 대하여 인스톨한 내용은
               /var/sadm/system/logs/upgrade_log 화일에서 참조가 가능하다.
5. 대화식 네트워크 인스톨
               CD-ROM 드라이브를 가지고 있지 않은 시스템에서도 대화식의 인스톨
               프로그램을 사용하여 네트워크를 경유하여 OS를 인스톨 가능하다.
               그 경우, CD-ROM 드라이브가 있는 기계 또는 Solaris 2.x의 CD-ROM의
               내용을 하드 디스크에 가지고 있는 기계를 인스톨 서버로 설정할
               필요가 있다.
               인스톨 서버가 다른 서브 네트에 있는 경우는 같은 서브 네트 상에
               있는 기계를 부트 서버로 설정 한다. 인스톨 대상의 시스템은 네트워크를
               경위 하여 인스톨 프로그램을 로드 하여 인스톨 서버가 가지고 있는
               OS의 소프트웨어를 로컬의 디스크에 인스톨 한다.
6. Custom JumpStart
               이것은 다수의 기계에 인스톨 또는 업-그레이드 하는 경우에 유효한
               방법 이다. 예를들면, 100대의 워크스테이션을 도입한 경우, 모든 기계에
               OS를 대화식으로 인스톨 하면 시간이 많이 걸린다. Custom JumpStart에는
               다음과 같은 환경을 응용하여 OS의 인스톨를 자동화 한다.
               우선 네트워크 상에 OS 미디어의 내용을 복사한 인스톨 서버를 준비 한다.
               다음 인스톨 대상의 기계가 인스톨 환경을 네트워크 경유하여 로드 가능한
               부트 서버로 설정을 추가 한다.
 
7. JumpStart
               JumpStart도 다수의 기계를 간단히 인스톨 하기 위한 방법이다.
               Custom JumpStart와 다른 점은 JumpStart 전용의 소프트웨어가 로컬
               디스크에 인스톨 되어 있어야 하는 것과 인스톨 내용이 기계의 타입과 디스크
               용량에 따라 결정 되어 있다는 점이다. 인스톨 서버를 결정하고 네트워크에
               접속하여 전원을 켜고 호스트 이름 등의 정보를 입력하는 것만으로 간단히
               인스톨이 가능하다.
8. 신규 인스톨을 위한 준비
               Solaris 2.x의 인스톨 작업은 간단하다. OS의 CD-ROM으로 부터 부트하여
               메세지에 따라 요구 하는 정보를 입력 한다. 그러나 용량 등의 항목에 대한
               작업이 있는 경우에 사전에 결정할 필요가 있다. 새로운 OS를 인스톨 하는
               경우에 필요한 정보에 대하여 결정 한다.
               1) 시스템 정보
               2) 시스템 타입의 결정
                  인스톨과 관계하는 OS의 구성 패턴을 "시스템 타입" 이라고 칭한다.
                  이것은 다음의 4가지의 타입이 있다.
                  * 스탠드 얼론
                  * OS 서버
                  * 디스크 레스 클라이언트
                  * AutoClient 시스템
               3) 소프트웨어 구성의 결정
                  Solaris 2.x의 소프트웨어는 Solaris 2.6의 경우에 400 이상의 패키지 모듈로
                  구성 되어 있다. 인스톨 프로그램에는 이용 모듈로 4개의 표준적인 패턴 으로
                  구성 되어 있다.
               4) 디스크 슬라이스 구성의 결정
               5) OS의 미디어와 메뉴얼
                  Solaris 2.5와 Solaris 2.5.1의 서버 미디어팩에는 CD-ROM이 OS의 코어부분 1개, CDE에 1개 등의 7개의 CD-ROM이지만, Solaris 2.6에는 OS에 CDE가 포함 되어 있다.
                  *Solaris 2.6의 경우
                  whiteeye# cd /cdrom/Solaris_2.6
                  whiteeye# ls -F
                  Docs/  Misc/  Patches/  Product/  Tools/
                  *Solaris 2.5.1의 경우
                  whiteeye# cd /cdrom
                  whiteeye# ls -F
                  .cdtoc                        add_install_client*
                  .install_config/               auto_install_sample/
                  .slicemapfile               export/
                  Copyright                rm_install_client*
                  Patches/                setup_install_server*
                  Solaris_2.5.1/
                  *Solaris 2.3의 경우
                  whiteeye# ls -F
                  Copyright                export/
                  NISPLUS.4.1.README               hsfs.mnt*
                  NISPLUS.TAR                  hsun4.o
                  Patches/                hsun4c.o
                  Solaris_2.3/                    inst.rr*
                  add_install_client*               rm_install_client*
                  archinfo/                setup_install_server*
                  auto_install_sample/
               6) OS 인스톨에 관련하는 예비정보
                  * man page
                    man install_scripts : OS의 CD-ROM에 포함되어 있는 인스톨 스크립트의 해설
                    man boot            : 부트 시퀸스의 해설
                    man monitor         : PROM 모니터 부터의 부트 방법
                    man re-preinstall   : JumpStart 소프트웨어의 로드 방법
                    man sysidtool       : 인스톨 시에 영향을 받는 화일, 필요한 정보
                    man sysidconfig     : 인스톨 시에 영향을 받는 화일, 필요한 정보
                    man sys-unconfig    : 시스템 화일을 공장 출하 상태로 되돌림
                    man kdnconfig       : x86용의 시스템 설정 초기화 코맨드
                  시스템 구성 화일과 네트워크 인터페이스 및 커널에 대하여 적절한 정보를 설정하기 위하여 내부의 sysidtool 라는 프로그램이 사용 된다. sysidtool은 새로운
시스템을 구성 할때 사용하는 다음의 5개의 프로그램 으로 SUNWadmap 패키지에
포함되어 있다.
                  * /usr/sbin/sysidnet
                    네트워크 관련 정보(호스트 이름, IP 어드레스 등)
                  * /usr/sbin/sysidnis
                    NIS, NIS+ 등의 네임 서비스 관련 정보 (도메인 이름 등)
                  * /usr/sbin/sysidsys
                    호스트, 아키텍쳐 고유의 정보
                  * /usr/sbin/sysidroot
                    root 패스워드
                  * /usr/sbin/sysidpm
                    전원 관리 기능의 설정
                  이상의 프로그래은 시스템 인스톨 시에 자동적으로 동작한다.
9. 디스크 슬라이스의 구성
               1) 소프트웨어 카티고리
                  소프트웨어 그룹(예전 버젼에는 클러스터 라고 호칭함)
                  소프트웨어의 선택을 일반화, 간단화 하기 위하여 제공 되는 소프트웨어의
                  그룹. 이하의 4가지중 패턴을 결정하여 필요한 소프트웨어 클라스와
                  소프트웨어 패키지를 선택 한다.
                  * 전체 디스트리뷰션(ALL)
                    Solaris 2.x의 모든 패키지를 포함
                  * 개발자 시스템 서포트(Developers)
                    엔드 유저 시스템 서포트에 소프트웨어 개발에 필요한 항목을 추가
                  * 엔드 유저 시스템 서포트(End-users)
                    코어 시스템 서포트에 OpenWindows의 이용 환경을 추가
                  * 코어 시스템 서포트(Core)
                    Solaris 2.x의 부트와 실행에 필요한 소프트웨어만 포함
               2) 슬라이스 구성의 패턴
                  디스크 슬라이스의 구성을 결정하는 경우 이하의 점에 유의 한다.
                  * 1개의 슬라이스에 1개의 화일 시스템을 작성
                  * 1개의 디스크에는 8개의 까지의 슬라이스가 설정 가능
                  * 최소한 루트 화일 시스템과 스왑 용의 2개의 슬라이스가 필요
                  * 슬라이스는 복수의 디스크에 설정 가능 하지만 1개의 슬라이스를 복수의
                    디스크 디스크에 분산 시키는 것은 불가능 하다
                  * 스왑은 1개의 디스크에 집중 되는것 보다 복수의 디스크에 분산 시키는
                    분산 시키는 것이 성능향상에 유효 하다
                  슬라이스(=화일 시스템)를 나누는 단위로는 일반적으로 다음과 같은
                  화일 시스템을 사용 한다.
                  /
                    일반적으로 루트 화일 시스템 단독의 경우와, /var를 포함한 경우, /tmp를
                    포함한 경우, /var+/tmp를 포함한 경우의 4가지의 패턴이 있다. 또 대용량의
                    백업 장치를 가진 시스템에서 관리를 간단히 하기 위하여 모든 OS의 화일
                    시스템을 / 의 이하에 배치하는 것도 가능 하다.
                  /usr
                    인스톨 하는 소프트웨어 클라스에 따라 필요한 사이즈가 변한다. 내용 중에
                    윈도우 시스템의 /usr/openwin를 포함 하는가, 별도의 슬라이스에 위치 시키
                    는가에 따라 크게 다를수 있다.
                  /var
                    유저의 관리 방침에 따른다. 별도의 파티션에 하지 않아도 운영이 가능하다
                  /export
                    OS 서버의 경우 클라이언트의 댓수, 각각의 클라이언트에 할당 하는 루트
                    화일 시스템, 스왑의 사이즈에 따라 결정 한다. /export/root, /export/swap,
                    /export/exec등으로 분할 하는 경우도 있다.
                  /home
디폴트로 /home 디렉토리는 오토 마운트가 사용 하기 위하여 홈 디렉토리로/export/home이 사용 된다.
                  /opt
                    패키지 구성에 따른다.
                  swap
                    Solaris 2.x의 스왑 사이즈는 실 메모리와 스왑 영역의 합계가 어플리케이션이사용 하는 가상 메모리의 사이즈 이상으로 결정 한다. Solaris 2.6의 경우,
메모리와 스왑 영역의 합계 사이즈가 최저로 64MB, 윈도우 환경을 사용 하는
경우는 128MB 이상 으로 한다. Custom JumpStart에는 화일 시스템에 필요한
사이즈를 산출 하여 남은 영역 으로 부터 이하의 사이즈를 최대치로 스왑 영역이
확보 된다.
                  /tmp
UNIX 화일 시스템으로 루트 화일 시스템에 포함 된다. tmpfs 타입을 지정하여
메모리 베이스의 화일 시스템 이다.(디폴트) /var/tmp 등에 심볼릭 링크 한다.
10. OS의 인스톨 방법
               1) 신규 인스톨 절차
                  신규 인스톨을 하는 경우, Solaris 2.6에는 2개의 유틸리티로 부터 선택 가능하다.
                  * 윈도우 베이스의 인스톨 프로그램
                  * Solaris Web Start
                  신규 인스톨은 Solaris 2.6을 2 배속 CD-ROM 드라이브를 사용하여 SS20에
                  인스톨 하는 경우에 약 40분 정도이다. 보다 고속의 CD-ROM 드라이브나
                  네트워크 경유로 인스톨 하는 경우에는 단축이 가능하다.
                  새로운 디스크에 OS를 인스톨 하거나 이전의 OS의 정보를 사용 하지 않고
                  인스톨하는 경우 인스톨시에 "초기옵션"을 선택 한다.
               2) Solaris 2.6의 대화식 인스톨 프로그램을 사용 하는 경우
                  ok boot cdrom
               3) Solaris Web start를 사용 하는 경우
                  ok boot cdrom - browser
11. 인스톨 상태의 확인
               1) 인스톨 관련 정보를 표시하는 코맨드
                  CDE와 OpenWindows 환경에서 메뉴로 부터 "Workstation 정보"를 선택하여 GUI상에서 시스템에 관한 기본적인 정보를 확인한다. /usr/openwin/bin/wainfo 코맨드를 실행 하는 것도 가능하다.
소프트웨어의 설정에 대하여 개별적인 정보를 얻고자 하는 경우에 다음과 같은
                  코맨드가 이용 가능하다.
                  * HOST 이름
                              # uname -n    : whiteeye
                              # hostname    : whiteeye
                              # showrev     : Hostname: whiteeye
                              # sysdef      : whiteeye node name (NODE)
                  * OS의 종류, 버젼
                              # uname -s    : SunOS
                              # uname -r    : 5.6
                              # uname -v    : Generic
                              # showrev     : Release:  5.6
                                               Kernel version:   SunOS 5.6 Generic August 1998
                              # sysdef      : 5.6 release (REL)
                                               SunOS system name (SYS)
                                               Generic version (VER)
                  * 파티션 구성
                              # df -k       : Filesystem kbytes used avail capacity Mounted on
                                               /dev/dsk/c0t3d0s0 38383 19392 15161 56% /
                                               ...........
                  * 패치 정보
                              # showrev -p  : Patch:  101331-03 Obsoletes:  Packages:  SUNWcsu.7
                                               11.5.0,REV=2.0.18,PATCH=35
                                               ........
                  * 로드 되어 있는 모듈
                              # sysdef      : * Loadable Objects
                                               strmod/bufmod
                                               strmod/connld
                                              ......
                  * 소프트웨어 패키지 구성
                              # pkginfo     : system      AXILvplr       Axil platform links
                                               system      AXILvplu       Axil usr/platform links
                                               ..............
                  네트워크에 관한 정보는 다음과 같은 코맨드가 이용 가능하다.
                  * IP Address, NetMask, Broadcast Address
                              # ifconfig -a : inet 129.158.153.162 netmask ffffff00 broadcast 120.158.153.255
하드웨어의 구성 요소에 관한 상세한 정보는 다음과 같은 코맨드가 이용 가능하다.
                  * 아키텍처 타입
                              # prtconf     : System Configuration: Sun Microsystems sun4m
                              # arch -k     : sun4m
                  * Workstation 모델
                              # prtconf  : SUNW,SPARCstation-5
                              # prtconf -vp : ......
                                                      model: 'SUNW,501-2572'
                                                      clock-frequency: 0510ff40
                                                      name: 'SUNW,SPARCstation-5'
                              # dmesg       : root nexus = SUNW,SPARCstation-5
                  * CPU 타입
                              # dmesg       : cpu0:  SUNW,UltraSPARC (upaid 0 impl 0x10 ver
                                                      0x22 clock 143 MHz)
                              # prtconf -vp :    ....
                                                      sparc-version: 00000008
                                                      mask_rev: 00000020
                                                      device_type: 'cpu'
                                                      name: 'FMI,MB86904'
                              # ok cpu-info : VPU FMI,MB86904 Rev. 2.0: 85Mhz
                         (EEPROM 코맨드)
                  * 메모리 용량
                              # dmesg       : mem = 32768k (0x2000000)
                              # prtconf     : Memory size: 32 Megabytes
                  * 시리얼 포트 디바이스
                              # dmesg       : zs0 at obio0: obio 0x1000000 sparc ipl 12
                                                      zs0 is /obio/zs@0,1000000
                              # sysdef      : zs, instance #0
                                                      zs, instance #1
                  * 디스크
                              # dmesg       : sd3 at esp0: target 3 lun 0
                                                      sd3 is /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/
                                                      esp@5,8800000/sd@3,0
                              # sysdef      : sd, instance #2 (driver not attached)
                                                      sd, instance #3
                  * 프레임 버퍼
                              # prtconf     : cgsix, instance #0
                              # prtconf -F  : /iommu@f,e0000000/sbus@f,e0001000/cgsix@2,0
                              # dmesg       : cgsix0 at sbus0: SNus slot 3 00 SBus level 5 sparc ipl 9
                                                      cgsix0 is /iommu@0,10000000/sbus@0,10001000/cgsix@3,0
                                                      cgsix0: screen 1152x900, single buffered, 1M mappable, rev 11
                              # sysdef      : cgsix, instance #0
Root 디바이스와 Swap 디바이스 등의 정보는 /etc/vfstab 화일을 확인 하거나 다음의 코맨드의 이용이 가능 하다.
                  * Root 디바이스
                              # dmesg       : root on /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/
                                                      esp@5,8800000/sd@3,0:a fstype ufs
                  * Swap 디바이스
                              # dmesg       : dump on /dev/dsk/c0t3d0s1 size 131532K
                              # swap -l     : swapfile dev swaplo blocks free
                                                      /dev/dsk/c0t3d0s1 32,25 8 263080 209312
                              # sysdef      : swapfile dev swaplo blocks free
                                                      /dev/dsk/c0t3d0s1 32,25 8 263080 209312
                  * 시스템 보드 구성의 정보
                              # prtdiag(Sun4d, Sun4u 아키텍처만 가능)
               2) 시스템 화일의 설정
                  시스템의 기본적인 설정은 다음의 시스템 화일을 보면 이해할수 있다.
 
                  * /etc/passwd        : 등록된 유저정보       : Copy하여 사용하는 경우 root만 허용
                    /etc/shadow        :
                  * /etc/group         : 등록된 그룹 정보      :
                  * /etc/default/*     : 환경설정의 정보       : 유저에 대한 디폴트 환경 설정
                    /etc/skel/*        :
                  * /etc/vfstab        : 화일 시스템 구성      :
                  * /etc/nsswitch.conf : 네임 서비스           : 서버의 서비스를 받는 경우에 클라이언트로 설정 필요
                    /etc/resolv.conf   : DNS 클라이언트의 설정 : DNS를 사용하는 경우
                    /etc/defaultdomain : NIS의 도메인 이름     : NIS를 사용하는 경우
                  * /etc/hosts         : 호스트 정보           : loghost등의 일부 변경이 필요한 경우가 있음
                  * /etc/nodename      : 노드 이름             :
                  * /etc/defaultrouter : 디톨트 라우터의 설정  : 환경에 따라 그대로 사용 가능
                  * /etc/services      : 네트워크 서비스의     : 어플리케이션에 의존
                    /etc/rpc           : 등록                  :
                  * /etc/sendmail.cf   : 메일 시스템 설정      : 그대로 사용 가능
                    /etc/aliases       :                       :
                  * /etc/rc?.d/*       : Daemon의 추가, 설정   :
                    /etc/init.d/*      :                       :
                  * /etc/system        : OS의 parameter        :
               3) 로그 화일 : /var/sadm/system/logs/install_log
                  OS의 인스톨 개시부터의 로그 정보가 화일에 기록 되어 있다. 이 화일에는 이하의 내용이 있다.
                  * 화일 시스템의 구성
                  * 인스톨된 패키지의 종류
                  * 인스톨된 소프트웨어의 총용량
                  * 부트 디바이스
               4) 로그 화일 : /var/sadm/system/logs/sysidtool.log
                  OS를 인스톨할 때에 새로운 시스템에 관한 몇가지의 정보를 입력 한다. 이것은 sysidtool라고 하는 일련의 프로그램에 따라 자동적으로 처리 된다. sysidtool의 로그 정보가 화일에 기록 된다.
                  * Ethernet의 인터페이스 이름
                  * 인스톨시에 설정한 IP 어드레스
                  * 인스톨시에 설정한 Netmask의 값
                  * 타임존
                  * 선택한 네임 서비스의 종류
               5) 소프트웨어의 로그 화일 : /var/tmp/*log*
                  소프트웨어 중에 /var/tmp 디렉토리에 독자의 로그 화일을 작성하는 것이 있다.
                  * AdminSuite_install_log
                  * SunSoft_CDE1.0.1_pkgadd.log.날짜
                  이들의 인스톨 로그 화일은 기본적으로 인스톨 과정에서 발생하는 문제를 기록하기 위해서 작성 된다.
 
문) PCI bases system 에서의 Parallel Printer port
1. PCI based system들(현재 Ultra 30, 450, 5, 10, 60)의 Parallel port는
   이전의 기계의 /dev/bpp0 대신에 /dev/ecpp0를 사용한다.
2. 또한 ecpp driver patch를 인스톨 하여야 한다.
   (104605 for 2.5.1 and 105741 for 2.6)
 
문) Root Password 복구
root password를 잊어버려 root로 login이 않되는 경우에는 OS CD를 사용하여
아래와 같이 복구를 할 수 있다. 만약 OS CD를 갖고있지 않다면 복구할 방법이
없다.
1. 시스템을 down 시키고 OS CD를 CD-ROM drive에 넣는다.
   root로 login을 할수 없으므로 시스템을 재부팅 시키기 위해서는 keyboard에서
   "stop" key와 "a" key를 동시에 눌러서 시스템을 PROM mode(ok prompt 상태)
   로 전환한다
2. 아래와 같이 CDROM 을 이용하여 single-user mode로 부팅한다
   ok  boot cdrom -sw
3. Bourne shell prompt(#)가 나타나면, /로 사용하던 disk device를 /mnt로 mount
   한다. /로 사용하던 disk device가 /dev/dsk/c0t0d0s0인 경우 아래와 같이 한다.
   # mount -F ufs -o rw /dev/rdsk/c0t0d0s0 /mnt
4. 위와 같이 하면 기존에 /etc directory에 있던 shadow 화일이 /mnt/etc/shadow로
   존재하게 되며,  이 화일을 vi로 열어서 root에 정의되어 있는 password부분을
   지운다.
               # vi /mnt/etc/shadow
               root:vBrrOh8AIqYV6:6445::::::
             ^^^^^^^^^^^^^ 이 부분을 지운다
        변경후
 
               # cat /etc/mnt/shadow
               root::6445::::::
5. 위와 같이 한후 시스템을 재부팅 하면  root로 password 없이 login가능하다.
 
문) cdrom mount 하기
cdrom을 driver에 삽입하면 Volume Management Daemon인 "vold" process에 의해
cdrom이 자동 mount 되지만, vold process가 운영 중이 아니거나 다른 이유로
인하여 cdrom이 자동 mount 되지 않으면 아래의 명령으로 mount 한다.
1. vold daemon이 운영중인 경우
   "volcheck"  명령을 실행하여 vold daemon이 cdrom을 mount 하도록 한 후 df 명령
   으로 cdrom이 mount 되었는지 확인한다.
              % /bin/volcheck
        % df -k
2. volcheck 명령으로 mount가 되지 않는경우
   아래와 같이 "mount" 명령을 사용한다.
              # /etc/mount -F hsfs -o ro /dev/dsk/c0t6d0s0 /cdrom
   CD Driver는 기본적으로 /dev/dsk/c0t6d0s0 device를 사용한다.
 
문) 한글 사용과 관련된 환경 설정
한글 사용을 위해 지정하여야할 환경변수와 관련 화일들은 아래와 같다.
   1. /etc/default/init : 시스템에서 사용되는 Language를 아래와 같이 지정한다
               LANG=ko ;한글과 영문을 사용하는 경우
               LANG=C               ;영문만 사용하는 경우
   2. .cshrc, .profile : 각 user 별로 사용할 Language를 정의 하고, terminal 환경
                         을 지정한다.
               - csh을 사용하는 경우 .cshrc 화일에 아래와 같이 정의
                 setenv LANG ko
                 stty cs8 -istrip -parenb
               - sh 또는 ksh을 사용하는 경우 .profile 화일에 아래와 같이 정의
                 LANG=ko
               export
               stty cs8 -istrip -parenb
   3. 환경 설정 확인
      % env | grep LANG
      LANG=ko
 
      % /bin/stty -a|grep cs8
      -parenb -parodd cs8 -cstopb -hupcl cread -clocal -loblk -crtscts
                     ^^^^^
      % /bin/stty -a|grep istrip
      -ignbrk brkint ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -iuclc
                                           ^^^^^^^
 
문) Power Manager
Solaris 2.6에서는 "powerd" daemon이 실행되어 일정 시간동안 작업을 하지 않으면
시스템이 자동 down되도록 지정할 수 있다. 이 Power Manager는 OS를 설치하는 과정
에서 enable/disable 할수 있으며, OS를 설치 한 후에도 아래의 관련 화일들을 이용
하여 구동할 수 있다.
1. Starting Script
   powerd daemon은 시스템이 booting되는 과정에서 /etc/rc2.d/S85power 스크립트가
   실행되면서 pmconfig 명령에 의해 구동된다.
   Power Manager 기능을 사용하지 않으려면 /etc/rc2.d/S85power 화일을 다른 이름
   의 화일로 move 시킨다.
2. Configuration File
   Power Management를 위한 configuration 화일은 /etc/power.conf 이며 pmconfig
   명령에 의해 참조 된다.
   System down에 관한 사항은 아래와 같이 지정할 수 있다.  
   #Auto-Shutdown          Idle(min)       Start/Finish(hh:mm)     Behavior
   autoshutdown            30              9:00 9:00               shutdown
   위와 같이 지정하면 30분 동안 시스템이 사용되지 않으면 시스템이 down 된다.
   powerd daemon이 구동중이라 하더라도 시스템이 down되지 않게 power.conf 화일에
   지정하려면 아래와 같이 4번째 항목에 "noshutdown" 으로 지정한다.
   #Auto-Shutdown          Idle(min)       Start/Finish(hh:mm)     Behavior
autoshutdown            30              9:00 9:00               noshutdown
 
 
 
 
 
 
 
 
문) floppy diskette을 UNIX format하여 mount 하는 방법
1. floppy diskette을 drive에 넣고 아래와 같이 fdformat 명령을 실행한다.
   # fdformat -U -b "label-name"
   Formatting 1.44 MB in /vol/dev/rdiskette0/no_name
   Press return to start formatting floppy.
   ..................................................................
   #
   위의 명령중 각 option 의 내용은 아래와 같다.
               -U : floppy diskette이 이미 mount 된 경우라도 umount하여 format한다.
               -b : diskette의 label 이름을 지정하기 위한 option이다
               "label-name" : diskette에 지정할 label 이름이다.
                              이 이름은 floopy diskette 을 mount하였을때 생기는 실제
                              mount point(/floppy/"label-name")의 이름이 된다.
2. format 이 정상적으로 끝나면 "newfs" 명령을 실행하여 filesystem을 만든다.
   # newfs /dev/rdiskette0
   만약 위의 명령을 실행했을때 아래와 같이 error message가 발생하면 volume manager
   daemon인 "vold" 를 종료시킨 후 다시 newfs 명령을 실행한다.
              # newfs /dev/rdiskette0
                  /dev/rdiskette0: Device busy
              # ps -ef|grep vold
                root   267     1  0  11월 28 ?        0:02 /usr/sbin/vold
                      ^^^^^
                      vold process id
              # kill 267
              # newfs /dev/rdiskette0
                  newfs: construct a new file system /dev/rdiskette0: (y/n)?
              위와 같이 new file system을 만들것인지 물어보면 "y"와 "retunrn" key를 친다.
3. newfs가 정상적으로 끝나면 "vold" process가 실행중인지 확인한 후, 실행중이
   아니면 vold를 실행한다.
   # ps -ef|grep vold
    root  8321     1  1 17:26:20 ?        0:00 /usr/sbin/vold
   위와 같이 결과가 나오지 않으면 아래와 같이 명령을 실행한다.
   # /etc/init.d/volmgt start
   volume management starting.
4. "volcheck" 명령을 실행하여 floppy diskette을 mount한후 "df" 명령으로 mount가
   되었는지 확인한다.
   # volcheck
   # df -k
   파일시스템           K바이트    사용    가용   용량    설치지점
  /dev/dsk/c0t0d0s0    1813958  696114 1063426    40%    /
  /proc                      0       0       0     0%    /proc
  fd                         0       0       0     0%    /dev/fd
  /vol/dev/diskette0/"label-name"
                        1263       9    1128     1%    /floppy/"label-name"
  위의 결과중 "label-name"은 diskette을 format 할때(fdformat) 지정한 label
name 이다.
 
문) swapfile 추가하기
1. "df -k" 명령을 사용하여 추가하고 싶은 swap file 크기 만큼의 free space를 가지고
   있는 file system이 있는지 확인한다.
             % df -k
                  파일시스템           K바이트    사용    가용   용량    설치지점
               /dev/dsk/c0t0d0s0     962582  779074   87258    90%    /
               /proc                      0       0       0     0%    /proc
               fd                         0       0       0     0%    /dev/fd
               /dev/dsk/c0t0d0s3     865774  731198   48006    94%    /opt
               swap                   67664    8408   59256    13%    /tmp
               /dev/dsk/c0t1d0s3    8316189  933423 6551156    13%    /doc
               /dev/dsk/c0t2d0s3    8316189 2529292 4955287    34%    /export
2. 위의 결과에 따라 /export file system에 50M의 swap file을 추가 한다면,
   root 로 login하여 아래와 같이 한다.
              # cd /export
              # /usr/sbin/mkfile 50m new-swap-file
                                     ^^^^^^^^^^^^^^ -> 새로운 swap file의 이름
              # /etc/swap -a
3. 위와 같이 한후 "swap -l" 명령으로 새로 만든 swap file이 추가되었는지 확인한다.
               # swap -l
               swapfile             dev  swaplo blocks   free
               /dev/dsk/c0t0d0s1   32,1      16 410384 371216
               /export/new-swap-file  -       16 102384 102384
4. 새로 추가한 swap file이 시스템 rebooting 후에도 사용되게 하려면 아래와 같은 
   내용을 /etc/vfstab에 추가한다.
              # vi /etc/vfstab
                /export/new-swap-file    -               -    swap    -    no    -
 
문) 시스템 기종과 설치가능한 OS 버전
다음 설명중 OS 버젼 4.1.X는 "4.1.1, 4.1.2, 4.1.3을 나타내며 4.1.3_U1* 과 
"4.1.3C**"는 포함하지 않는다.
SYSTEM  NAME (or model)  ARCH    (MINIMUM) OS RELEASES SUPPORTED***
-----------------------------------------------------------------
4/15    Classic          sun4m   4.1.3C, 4.1.3_U1, 4.1.4, 5.1 -> 5.7
4/20    SLC              sun4c   4.1, 4.1.X, 4.1.3_U1, 4.1.4, 5.4 -> 5.7
4/25    ELC              sun4c   4.1.x, 4.1.3_U1, 4.1.4, 5.0 -> 5.7
4/30    LX               sun4m   4.1.3C, 4.1.3_U1, 4.1.4, 5.1 -> 5.7
4/40    IPC              sun4c   4.1, 4.1.x, 4.1.3_U1, 4.1.4, 5.0 -> 5.7
4/50    IPX              sun4c   4.1.x, 4.1.3_U1, 4.1.4, 5.0 -> 5.7
4/60    SS1              sun4c   4.1, 4.1.x, 4.1.3_U1, 4.1.4, 5.0 -> 5.7
4/65    SS1+             sun4c   4.1, 4.1.x, 4.1.3_U1, 4.1.4, 5.0 -> 5.7
4/75    SS2              sun4c   4.1.x, 4.1.3_U1, 4.1.4, 5.0 -> 5.7
4/1xx   Cobra            sun4    4.1, 4.1.x, 4.1.3_U1, 4.1.4, 5.1****, 5.2 -> 5.4
4/2xx   Sunrise          sun4    4.1, 4.1.x, 4.1.3_U1, 4.1.4, 5.1****, 5.2 -> 5.4
4/3xx   Stingray         sun4    4.1, 4.1.x, 4.1.3_U1, 4.1.4, 5.1 -> 5.4
4/4xx   Sunray           sun4    4.1, 4.1.x, 4.1.3_U1, 4.1.4, 5.1 -> 5.4
4/6xx   Galaxy 41,51     sun4m   4.1.3, 4.1.3_U1, 4.1.4, 5.1 -> 5.5.1
4/6xx   " "   41MP,512MP sun4m   5.1 -> 5.5.1
SS4     Perigee          sun4m   4.1.4, 5.4 -> 5.7
SS5     Aurora           sun4m   4.1.3_U1 Ver B, 4.1.4, 5.3 Ed II or >, 5.4->5.7
SS10    20,30,40,41,51   sun4m   4.1.3, 4.1.3_U1, 4.1.4, 5.1 -> 5.7
SS10    402MP,41MP,512MP sun4m   5.1 -> 5.7
SS20    Kodiak           sun4m   4.1.3_U1 Ver B, 4.1.4, 5.3 Ed II or >, 5.4->5.7
SS240   Voyager          sun4m   5.3 Ed II or >, 5.4 -> 5.7
SS1000  Scorpion         sun4d   5.2 -> 5.7
SC2000  Dragon           sun4d   5.2 -> 5.7
SS11    Ultra 1(140,170) sun4u   5.5 -> 5.7
SS12    Ultra 1(E)       sun4u   5.5 HW 1/96 -> 5.7
SC11    UltraServer 1    sun4u   5.5 -> 5.7
SC12    UltraServer 1(E) sun4u   5.5 HW 1/96 -> 5.7
Ultra1  Neutron          sun4u   5.5 -> 5.7
Ultra1E Electron         sun4u   5.5 HW 1/96 -> 5.7
Ultra2  Pulsar           sun4u   5.5.1 -> 5.7
UE3000  Duraflame        sun4u   5.5.1 -> 5.7
UE4000  Campfire         sun4u   5.5.1 -> 5.7
UE5000  Camfire rack     sun4u   5.5.1 -> 5.7
UE6000  Sunfire          sun4u   5.5.1 -> 5.7
UE10000 Starfire         sun4u1  5.5.1 -> 5.7
Ultra5                   sun4u   5.5.1 H/W 11/97, 5.6 H/W 3/98, 5.7
Ultra10                  sun4u   5.5.1 H/W 11/97, 5.6 H/W 3/98, 5.7
Ultra30                  sun4u   5.5.1 H/W 4/97 -> 5.7
Ultra60                  sun4u   5.5.1 H/W 11/97, 5.6 H/W 3/98, 5.7
UE250                    sun4u   5.5.1 H/W 11/97 (see FE Hbk), 5.6 H/W 5/98, 5.7
UE450                    sun4u   5.5.1 H/W 4/97 -> 5.7
Ultra450                 sun4u   5.5.1 H/W 11/97 -> 5.7
UE3500                   sun4u   5.5.1 H/W 11/97, 5.6 H/W 3/98, 5.7
UE4500                   sun4u   5.5.1 H/W 11/97, 5.6 H/W 3/98, 5.7
UE5500                   sun4u   5.5.1 H/W 11/97, 5.6 H/W 3/98, 5.7
UE6500                   sun4u   5.5.1 H/W 11/97, 5.6 H/W 3/98, 5.7
* OS 버젼 "4.1.3_U1 Version A"는 "4.1.3"과 "4.1.3C"를 통합한 것이며, "4.1.3_U1 Version B"
  는 SuperSparc module version 3.5 이상의 시스템을 지원하기 위한 것이다.
** 4.1.3C는 4/15와 4/30 만을 지원한다.
*** Solaris와 SunOS 버젼의 상관관계는 아래와 같다.
    Solaris 1.0    =  SunOS 4.1.1
    Solaris 1.0.1  =  SunOS 4.1.2
    Solaris 1.1    =  SunOS 4.1.3
    Solaris 1.1.1A =  SunOS 4.1.3_U1 Version A*
    Solaris 1.1.1B =  SunOS 4.1.3_U1 Version B
    Solaris 1.1.2  =  SunOS 4.1.4
    Solaris 2.0    =  SunOS 5.0
    Solaris 2.1    =  SunOS 5.1
    Solaris 2.2    =  SunOS 5.2
    Solaris 2.3    =  SunOS 5.3
    Solaris 2.3.2  =  SunOS 5.3 Edition II
    Solaris 2.4    =  SunOS 5.4
    Solaris 2.5    =  SunOS 5.5
    Solaris 2.5.1  =  SunOS 5.5.1
    Solaris 2.6    =  SunOS 5.6
    Solaris 7      =  SunOS 5.7
 
문)  Solaris 2.x에서 kernel을 새로 만드는 방법
Solaris 2.x의 kernel은 1.x와는 달리 loadable module로 되어 있기 때문에 새로운
device가 추가 또는 제거되어도 kernel을 새로 compile하지 않고, 단지 시스템을
reconfigure 하도록 rebooting만 하면 된다.
시스템을 reconfigure 하여 booting하는 방법은 아래와 같다.
1. "/" 다렉토리에 "reconfigure" 화일을 만든후 시스템을 reboot 한다.
               # touch /reconfigure
               # reboot
               또는
               # touch /reconfigure
               # init 0
               ok boot
2. 시스템을 down 시키고 나서 boot 명령에 "-r" 옵션을 주고 부팅한다.
               # init 0
               ok boot -r
3. 아래와 같은 옵션을 주고 "reboot" 명령을 사용하여 시스템을 rebooting한다.
               # reboot -- -r
 
문) Solaris 1.x에서 kernel을 새로 만드는 방법
Solaris 1.x에는 /usr/kvm/sys/`/usr/bin/arch -k`/conf/의 kernel
configuration 화일이 있으며 새로운 kernel을 만들기 위해서는  이 화일의 내용을
수정한뒤 새로운 kernel(vmunix)을 컴파일해야 한다.
예를들어 `/usr/bin/arch -k` 명령을 수행한 결과가 "sun4m"이고 현재 사용하는
kernel 이름이 "GENERIC-KOR" 라면 /sys/sun4m/conf/GENERIC-KOR 화일을 수정하면
된다. 그러나 이 화일을 직접 수정하지 말고 다른 이름의 화일로 복사한뒤, 이
새로운 화일을 수정하는 것이 좋다.
현재 사용하고 있는 kernel 이름은 /etc/motd 화일에서 확인할 수 있다.
               % cat /etc/motd
               Sun Microsystems Inc.   SunOS 4.1.3  GENERIC-KOR August 1997
위의 결과에서 보면 OS version 다음에 보여지는 GENERIC-KOR가 현재 사용하는
kernel의 이름이다.
kernel을 다시 만드는 작업은 아래와 같이 하며 반드시 root로 login하여야 한다.
 
               # cd /usr/kvm/sys/`/usr/bin/arch -k`/conf/
               # cp GENERIC-KOR GENERIC-KOR-TAPE
               # vi GENERIC-KOR-TAPE
                 새로 추가할 사항이나 변경할 사항을 적는다
               # config GENERIC-KOR-TAPE
               # cd ../GENERIC-KOR-TAPE
               # make
               # mv /vmunix /vmunix.org
               # mv vmunix /vmunix
               # /etc/reboot
만약 위의 작업후 시스템을 새로운 kernel을 이용하여 rebooting하는데 문제가
생기면 아래와 같이하여 기존에 사용하던 kernel로 다시 single user mode로
booting 한후 기존에 사용하던 kernel을 다시 원래대로 복구시킨다.
               > boot vmunix.org -s
               # mv /vmunix /vmunix.new
               # ln /vmunix.org /vmunix
               # /etc/reboot
 

문)  Sendmail(version 8.8.8+) 구성하기
1. Solaris 2.6까지 OS에 포함되어 있는 sendmail의 version은 8.6으로 현재 Internet
   상 에서 많이 사용되고 있는 8.8.x version에 비하여 그 기능과  보안에 있어 많은
   문제점을 가지고 있다.
   이를 보완하기 위해 OS version이 Solaris 2.x인 경우 recommand patch를 설치하면
   새로운 버젼의 sendmail(8.8.8+SUN)이 설치되며, Solaris 7에는 기본적으로 sendmail
   8.9.1 버젼이 설치되어 있다..
   이 새로운 버젼에서 제공되는 sendmail.cf 화일은 기존의 것과 많은 차이가 있으며
   메일을 발신/수신하기 위하여 아래와 같이 구성한다.
2. /etc/hosts 화일
   /etc/hosts 화일에 hostname을 정의 할때 반드시 아래와 같이 hostname.domainname
   도 alias name으로 같이 정의를 한다.
              # cat /etc/hosts
                  210.123.99.21   cat               cat.sun.co.kr loghost
                                                    ^^^^^^^^^^^^^
3. /etc/mail/sendmail.cf 화일
   sendmail.cf 화일에는 외부로 송신되는 메일이 mailhost."domain-name"를 거쳐
   보내 지도록 DS 변수에 아래와 같이 정의되어 있다.
               # "Smart" relay host (may be null)
               DSmailhost.$m
   만약 외부로 보내지는 메일이 특정 메일 서버를 거쳐 보내져야 한다면 위의 DS 부
   분을 실제 메일 서버로 지정한다.
        # "Smart" relay host (may be null)
        DSmailserver-name.domain-name
   그러나 외부로 보내지는 메일이 DNS에 설정된 MX record에 의해 바로 전송되도록
   지정하고 싶으면 위에 정의된 DS 부분을 주석처리 한다.
        # "Smart" relay host (may be null)
        #DSmailhost.$m
4. /etc/mail/sendmail.cw 화일
   이 화일을 만들어 그 안에 시스템에서 받을 메일 주소(hostname, alias name)를 넣는다.
   만약 username@domainname의 형태로 보내지는 메일도 수신하려면 아래와 같이 정의한다.
              # vi /etc/mail/sendmail.cw
              cat
                  cat.sun.co.kr
                  sun.co.kr
5. Mail Relay 하기
   Sendmail 8.8.8+ 에서는 외부(다른 시스템)로 부터  Relay 되는 메일을 차단하도록
   하는 기능이 있다. 이 기능을 사용하려면, 아래의 Rule을 /etc/mail/sendmail.cf
   화일에서 Rule Set이 정의되는 처음 부분에 추가한다. 아래의 내용중 빈칸은
   "space-bar"대신 반드시 "tab"을 사용하여야 한다.
               LOCAL_CONFIG
               FR-o /etc/sendmail.cR
               LOCAL_RULESETS
               Scheck_rcpt
               # anything terminating locally is ok
               R< $+ @ $=w >           $@ OK
               R< $+ @ $=R >           $@ OK
               # anything originating locally is ok
               R$*                     $: $(dequote "" $&{client_name} $)
               R$=w                    $@ OK
               R$=R                    $@ OK
               R$@                     $@ OK
               # anything else is bogus
               R$*                     $#error $: "550 Relaying Denied"
   그러나 같은 도메인내의 client(PC)들로 부터 보내지는 메일을 relay 하도록 하고 싶은
   경우에는 /etc/sendmail.cR화일을 만들어 아래와 같이 domainname, network address 또는client의 IP address를 등록한다.
   IP address를 지정시는  반드시 "[" 와 "]"안에 IP address를 적는다.
       # vi /etc/sendmail.cR
       sun.co.kr
       210.123.99
       [201.123.345.10]
       [203.234.123.1]
       위와 같이 정의한 후 sendmail daemon 을 re-start 시킨다.
       sun.co.kr 처럼 도메인을 지정할 경우에, relay하고 싶은 호스트명이 DNS에 등록되어 있어야 한다. 예를 들어,
       tiger.sun.co.kr 에서 들어 오는 메일을 relay하려면, tiger.sun.co.kr이 DNS에
       등록되어 있어야 한다.
6. 위에 기술된 내용 이외에 특별한 요구 사항이 있을 때에는  sendmail.cf화일을 직접
   수정하지 말고 /usr/lib/mail/README 화일의 내용을 참조하여 직접 m4 명령을 사용하여
   sendmail.cf화일을 compile하여 사용한다.
   예) 메일을 보낼때 header의 From: 부분이 hostname은 보이지 않고 From: username@domainname의 형태로 되게 하고 싶은경우.
       # cd /usr/lib/mail/cf
       # cp main-v7sun.mc my.mc
                                     ^^^^^^
                                       임의의 화일로
       # vi my.mc
       my.mc 화일에 아래의 두 라인을 추가한다.
       MASQUERADE_AS($m)dnl
       FEATURE(masquerade_envelope)dnl
       # /usr/ccs/bin/m4 ../m4/cf.m4 my.mc > my.cf
       # cp my.cf /etc/mail/sendmail.cf
       sendmail daemon을 restart 한다.
       위와 같이하여 sendmail.cf 화일을 만들면 일반 사용자들이 외부 도메인에 있는
       사용자에게 메을을 보내면 From 부분이 From: username@domain과 같이 나타난다.
       그러나 root에서 메일을 보낼경우에는 기존처럼 From:name@hostname.domainanme의 형태로 보여진다.
      
       만약 root에서 메일을 보낼때도 hostname이 보여지지 않게 하려면 sendmail.cf
       화일에서 "CE root" 라고 정의된 부분을 없앤다.
7. Sendmail Daemon 살리기
   # /usr/lib/sendmail -bd -q1h
     -bd : daemon이라는 것을 명시
     -q1h : Queue interval 지정
            mail 전송시 error가 나면 /usr/spool/mqueue 디렉토리에 쌓이게 되는데
            여기에 쌓인 메일을 재 전송하는 주기를 정하는 것으로 1시간이면 "q1h",
            30분이면 "q30m" 이라고 지정하면 된다.
8. 3. 메일 전송 테스트
   -메일에는 /bin/mail과 /bin/mailx의 두가지 버젼이 있는데 /bin/mailx가
    기능상 사용하기 편하게 되어있으므로 이것을 사용하는 것이 좋다.
   -테스트
        % /bin/mailx -v 상대방전자메일주소
        위와같이 하면 메일이 전송되는 과정이 보여지는데 이 경우 제일 마지막에
        "sent"라고 나오면 정상적으로 배달이 된것이다.
        예) hsbyun이라는 사용자가 pink.sun.co.kr 이라는 시스템에서
            root@kum.kaist.ac.kr로 메일을 보내는 경우
            % /bin/mailx -v root@kum.kaist.ac.kr
            Subject: test
            test mail
            .
            EOT
            % root@kum.kaist.ac.kr... Connecting to
            kum.kaist.ac.kr via ether...
            Trying 128.134.1.1...  connected.
            220 kum.kaist.ac.kr Sendmail 4.1/KUM-0.1 ready at Fri, 2 Apr 93 14:2
5:38 KST
            >>> HELO pink.sun.co.kr
            250 kum.kaist.ac.kr Hello pink.sun.co.kr pleased to meet you
            >>> MAIL From:
            250 ... Sender ok
            >>> RCPT To:
            250 ... Recipient ok
            >>> DATA
            354 Enter mail, end with "." on a line by itself
            >>> .
            250 Mail accepted
            >>> QUIT
            221 kum.kaist.ac.kr delivering mail
            root@kum.kaist.ac.kr... Sent
 
문)  Sendmail(version SMI-8.6) 구성하기
SunOS의 전자메일은 sendmail에 의해서 운영되며 sendmail은 메일의 라우팅과 forwarding그리고 aliasing 등을 지정하여 전자메일이  원활히 전달 되도록 한다. 이 글에서는Solaris 상에 설치되어 있는 Sendmail의 설치와 운영에 관해서 알아본다.
1. 설치전 확인사항
   -hostname이 등록되어 있는지 확인
        # hostname
        #
    위와 같이 아무것도 나오지 않으면 /etc/hostname.{ethernet-interface} 화일에
    hostname을 등록한다.
    "ethernet-interface"가 "le0"인 경우에 /etc/hostname.le0 화일을 확인한다.
    예) # cat /etc/hostsname.le0
        pink
        #
   -/etc/hosts 화일에 hostname이 아래와 같은 형태로 등록되어야 한다.
        IP-address      hostname        alias-name
    예) 147.6.4.65        pink          mail pink.sun.co.kr
2. SunOs 상에 있는 Sendmail의 설치
  ** /etc/mail/main.cf 화일을 /etc/mail/sendmail.cf 화일로 복사 한다.
               # cp /etc/mail/main.cf /etc/mail/sendmail.cf
  2.1 /etc/mail/sendmail.cf 화일 수정
   -사용 변수
        Dw, Cw : hostname을 정의 하는 부분
                         hostname을 두개이상 사용하고 이 이름 모두로 메일을 받고
                         싶은경우 Cw에 정의한다.
             예) Dwpink
                 Cwpink mail
        Dm, Cm : domain name을 정의 하는 부분
                        domain name을 두개이상 사용하고 이 이름모두로 메일을 받고
                         싶은경우 Cm에 정의한다.
             예) Dmsun.co.kr
                 Cmsun.co.kr sun.com
        DM : 사용하는 Mailer를 지정하는 부분으로 보통 같은 도메인에서 메일을
             보낼경우에는 "ether"를 사용하고 외부 도메인에도 메일을 보낼 경우
             에는 "ddn" 을 사용한다
             예) DMether
                 DMddn
        DR : default mail relay host를 지정하는 부분
            가입한  ISP(Internet Service Provider)에 문의 하여 mail relay
                   host를 확인한다.
             예)DRmail.kornet.nm.kr
        Dj : hostname과 domainname을 지정
             예) Dj$w.$m
   - /etc/mail/sendmail.cf 화일 수정 예
        ############################################################
        #
        #       Sendmail configuration file for "MAIN MACHINES"
        #
        #       You should install this file as /etc/sendmail.cf
        #       if your machine is the main (or only) mail-relaying
        #       machine in your domain.  Then edit the file to
        #       customize it for your network configuration.
        #
        #       See the manual "System and Network Administration for the Sun
        #       Workstation". Look at "Setting Up The Mail Routing System" in
        #       the chapter on Communications.  The Sendmail reference in the
        #       back of the manual is also useful.
        #
        #       @(#)main.mc 1.17 90/01/04 SMI
        #
        ###     local info
               # delete the following if you have no sendmailvars table
               Lmmaildomain
               # my official hostname
        Dwpink
               Cwpink
        Dmsun.co.kr
               Cmsun.co.kr
        # You have two choices here.  If you want the gateway machine to identify
        # itself as the DOMAIN, use this line:
        #Dj$m
        # If you want the gateway machine to appear to be INSIDE the domain, use:
        Dj$w.$m
        # if you are using sendmail.mx (or have a fully-qualified hostname), use:
        #Dj$w
               # major relay mailer
               DMddn
               # major relay host
               DRmail.kornet.nm.kr
               CRmail.kornet.nm.kr
               #################################################
    - mail을 보낼때 DR에 지정된 mail relay host를 거치지 않고 DNS에 정의된 mail
      exchanger(MX)를 이용해 direct로 메일을 보내고 싶은 경우에는 아래와 같이
      sendmail.cf화일의  약 400 ~ 405번 라인의 내용을 변경한다.
               변경전
               # Replace following with above to only forward "known" top-level domains
               R$*$*           $#$M    $@$R $:$1$4     user@any.domain
               # if you are on the DDN, then comment-out both of the the lines above
               # and use the following instead:
               #R$*$*          $#ddn $@ $2.$3 $:$1$4   user@any.domain
               변경후
        # Replace following with above to only forward "known" top-level domains
               #R$*$*           $#$M    $@$R $:$1$4     user@any.domain
        # if you are on the DDN, then comment-out both of the the lines above
        # and use the following instead:
        R$*$*          $#ddn $@ $2.$3 $:$1$4   user@any.domain
   2.2 Sendmail Daemon 살리기
        #/usr/lib/sendmail -bd -q1h
                -bd : daemon이라는 것을 명시
                -q1h : Queue interval 지정
                       mail 전송시 error가 나면 /usr/spool/mqueue 디렉토리에
                       쌓이게 되는데 여기에 쌓인 메일을 재 전송하는 주기를
                       정하는 것으로 1시간이면 "q1h", 30분이면 "q30m"
                       이라고 지정하면 된다.
3. 메일 전송 테스트
   -메일에는 /bin/mail과 /bin/mailx의 두가지 버젼이 있는데 /bin/mailx가
    기능상 사용하기 편하게 되어있으므로 이것을 사용하는 것이 좋다.
   -테스트
        # /bin/mailx -v 상대방전자메일주소
        위와같이 하면 메일이 전송되는 과정이 보여지는데 이 경우 제일 마지막에
        "sent"라고 나오면 정상적으로 배달이 된것이다.
        예) hsbyun이라는 사용자가 pink.sun.co.kr 이라는 시스템에서
            root@kum.kaist.ac.kr로 메일을 보내는 경우
            # /bin/mailx -v root@kum.kaist.ac.kr
            Subject: test
            test mail
            .
            EOT
            # root@kum.kaist.ac.kr... Connecting to
            kum.kaist.ac.kr via ether...
            Trying 128.134.1.1...  connected.
            220 kum.kaist.ac.kr Sendmail 4.1/KUM-0.1 ready at Fri, 2 Apr 93 14:25:38 KST
            >>> HELO pink.sun.co.kr
            250 kum.kaist.ac.kr Hello pink.sun.co.kr pleased to meet you
            >>> MAIL From:
            250 ... Sender ok
            >>> RCPT To:
            250 ... Recipient ok
            >>> DATA
            354 Enter mail, end with "." on a line by itself
            >>> .
            250 Mail accepted
            >>> QUIT
            221 kum.kaist.ac.kr delivering mail
            root@kum.kaist.ac.kr... Sent6?/xmp>
 
 
 
문) Root(/) 화일 시스템 복구
root(/) 화일 시스템이 손상되어 시스템 부팅이 않되는 경우 backup 받아 놓은
data를 사용하여 아래와 같이 복구 할수 있다.
1. 시스템을 down 시키고 OS CD를 CD-ROM drive에 넣는다.
2. 아래와 같이 CDROM 을 이용하여 single-user mode로 부팅한다
   ok  boot cdrom -sw
3. Bourne shell prompt(#)가 나타나면, /로 사용하던 disk device에 새로운 화일
   시스템을 만든다. /로 사용하던 disk device가 /dev/dsk/c0t3d0s0인 경우 아래와
   같이 한다.
   # newfs /dev/rdsk/c0t3d0s0
4. 새로운 root file system을 fsck명령을 사용하여 점검한다.
   # fsck /dev/rdsk/c0t3d0s0
5. root file system을  /a로 mount한다.
   # mount /dev/dsk/c0t3d0s0 /a
6. root 화일 시스템을 backup 받아놓은 tape을 tape drive에 넣고 아래의 명령을
   실행하여 restore한다.
   # cd /a
   # ufsrestore rvf /dev/rmt/0
7. restore가 끝나면 "restore symbol table"을 지우고 새로만든 root partition을
   unmount 한다.
   # rm restoresymtable
   # cd /
   # umount /a
8. fsck 명령을 사용하여 새 root partition을 다시한번 점검한다.
   # fsck /dev/rdsk/c0t3d0s0
9.아래의 명령을 사용하여 bootblock을 설치한다.
  # cd /usr/platform/`uname -i`/lib/fs/ufs (Solaris 2.5 이상 버젼인 경우)
  # cd /usr/lib/fs/ufs (Solaris 2.4 이전 버젼인 경우)
  # installboot bootblk /dev/rdsk/c0t3d0s0
10. 시스템을 재 부팅한다.
    # reboot
 
문) Disk quota 지정하는 방법
예) /data3 file system에대하여 각 사용자에게 quota를 할당하고 싶은 경우
1. /etc/vfstab 수정.
 
               /dev/dsk/c0t1d0s6       /dev/rdsk/c0t1d0s6      /data3  ufs   1  yes rq
    /etc/vfstab에 위와 같이 마지막 항목을 "rq"로 지정한다.
2. quota를 사용하고 싶은 화일시스템의 mouting point에 가서 다음의 명령어를 실행한다.
               # cd /data3
               # touch quotas
               # chmod 600 quotas
3. 각 사용자별로 quota량을 지정한다.
               # edquota user-id
               fs /data3 blocks (soft = 100, hard = 100) inodes (soft = 100, hard = 110)
   block은 1KB단위.
   soft의 한계가 넘으면, 경고메세지가 출력되고, hard한계를 넘으면 file creat가
  수행이 되지 않음.
   위와 같이 quota를 지정한 경우 /data3 화일 시스템에 사용자의 disk 사용량이 100KB를 넘어서면 경고 메세지가 출력되고 110KB에 달하면 더이상 /data3 화일 시스템에 화일을 만들수 없으며, owner가 user-id로 되어있는 화일의 갯수도 100개가 넘어서면 경고 메세지가 출력되고, 또한  111개 이상의 화일은 만들 수 없다.
4.한 사용자의 quota를 다른 사용자에게 copy하는 경우
    예)  사용자 aa와 같은 quota를 사용자 bb에게 할당하려면
               # edquota -p aa bb
5. 현재 사용자가 사용하고 있는 quota 양을 알아보려면
# quota -v user-id
6. 시스템을 재 부팅시하지 않고  quota enable이 되게 하려면 아래와 같이 실행 한다.
               # sh /etc/init.d/ufs_quota start
   disable하려면
               # sh /etc/init.d/ufs_quota stop
7. man page 참조
              quota, edquota, checkquota, repquota, quotaon, quotaoff
 
문) Solaris 2.6에서 원격 프린터 지정하기
Solaris 2.6에서는 admintool을 이용하여 remote printer를 지정하려 하면 error가
나며, 지정할 수 없다(admintool bug임). 이를 대신하여 명령어로 remote printer를
지정하려면 아래와 같이 한다.
    # lpsystem -t bsd printer_server_name
    # lpadmin -p printer_name -s printer_server_name -I any
    # lpadmin -d printer_name               <-- default printer로 지정할때.
 
 printer_server_name 이 morning이고,
     printer_name이 kitten 이며 이를 system default printer로 지정하고 싶으면,
               # lpsystem -t bsd morning
               # lpadmin -p kitten -s morning -I any
               # lpadmin -d kitten
위와 같이 한후 admintool에서 지정한 printer가 등록되어 있는지 확인한다.
 
문) 각 사용자가 속한 group의 최대수 증가시키기
1. 한 사용자가 속할수 있는 group의 수는 OS 상에서 아래와 같이 /usr/include/sys/param.h
   화일에 정의 되어 있는 것처럼 ngroup_max 변수에 의해 16으로 제한된다.
               /*
               * These define the maximum and minimum allowable values of the
               * configurable parameter NGROUPS_MAX.
               */
               #define NGROUPS_UMIN    0
               #define NGROUPS_UMAX    32
               /*
               * NGROUPS_MAX_DEFAULT: *MUST* match NGROUPS_MAX value in limits.h.
               * Remember that the NFS protocol must rev. before this can be increased
               */
               #define NGROUPS_MAX_DEFAULT     16
2. 이를 늘려주기 위해서는 아래와 같이 /etc/system화일에 지정한후 시스템을 rebooting한다.
               set ngroups_max_default = 20
   /etc/system 화일에 지정할수 있는 최대 값은 32로 제한되어있다.
3. Important note
  이 변수의 값은 되도록이면 변경하지 않을 것을 권유한다.
  이 변수의 값이 변경되면 NFS를 사용함에 있어 영향을 미칠수 있다.
 
문) cron job 정의하기
1. cron 명령은 지정된 날짜와 시간에 일정 작업을 주기적으로 수행하기 위해 사용되
   며 각 사용자별로 /var/spool/cron/crontabs 디렉토리에 사용자 ID와 같은 이름의
   crontab 화일을 만들어 cron job을 지정할 수 있다.
   cron 명령은 시스템이 부팅되면서 /etc/rc2.d/S75cron 스크립트에 의해서 daemon
   형태로 수행된다.
  
2. 각 사용자 별로 crontab 화일을 만드는 방법은 아래와 같이 "crontab -e" 명령을
   실행하면 된다.
              % crontab -e
   위와 같이 명령을 실행하면 "vi"  editor mode로 들어가 crontab 화일을 수정할수
   있게 되는데,  만약 "vi" mode로 들어가지 않으면 "EDITOR" 환경변수를 vi로 변경
   후 crontab 명령을 다시 수행한다.
        2.1 csh을 사용하는 경우
           % setenv EDITOR vi
           % crontab -e
        2.2 sh이나 ksh을 사용하는 경우
           $ EDITOR=vi
           $ export EDITOR
           $ crontab -e
3. crontab 화일의 내용을 정의 하는 format은 아래와 같다.
   분  시  일  월  요일   실행할 명령
              분 : 0-59
              시 : 0-23
              일 : 1-31
              월 : 1-12
                  요일 : 0-6( 0: 일요일)
   예) 매주 일요일 오전 3:15에 /var 디렉토리에 있는 core 화일을 지우는 작업
            15 3 * * 0 find /var -name core 2>/dev/null |  xargs rm -f
       매월 1일 오후 6시에 시스템 down message 보내기
            0 18 1 * * wall "System Will be down"
4. /etc/cron.d/cron.allow 화일이나 /etc/cron.d/cron.deny 화일을 이용하여 시스템
   관리자는 각 사용자별로 crontab 화일에 대한 access 권한을 제한 할 수 있다.
   4.1 crontab을 access 할 수 있는 사용자
       - /etc/cron.d/cron.allow 화일이 존재하는 경우, 그 화일 안에 지정된 사용자
       - /etc/cron.d/cron.allow 화일이 없는 경우, /etc/cron.d/cron.deny 화일
         안에 지정되지 않은 사용자
   4.2 crontab을 access 할 수 없는 사용자
       - /etc/cron.d/cron.allow 화일이 존재하는 경우, 그 화일 않에 지정되지 않은
         사용자
       - /etc/cron.d/cron.allow 화일이 없는 경우, /etc/cron.d/cron.deny 화일에
         지정된 사용자
        
       - /etc/cron.d/cron.allow와 /etc/cron.d/cron.deny 화일이 모두 없는 경우,
         root를 제외한 모든 사용자
    4.3 OS가 설치되면 기본적으로 /etc/cron.d/cron.deny이 생성되고 그 안에 아래의
        사용자들이 지정된다.
        daemon
               bin
               smtp
               nuucp
               listen
               nobody
               noaccess
               /etc/cron.d/cron.allow와 /etc/cron.d/cron.deny 화일에 사용자를 지정할 때
               는 위와 같이 한줄에 한명씩 사용자를 지정한다.
5. cron에 관련된 환경은 /etc/default/cron 화일에 정의 할 수 있다.
   % cat /etc/default/cron
   CRONLOG=YES
   PATH=/usr/bin:/usr/ucb:
 
문) 가상터미널 갯수 늘리기(login 사용자수 늘리기)
[Q] 가상 터미널(ptys) 갯수 늘리기(login 사용자수 늘리기)
[A] /etc/system 화일에 아래의 내용을 추가하고 시스템을 rebooting 한다.
    # vi /etc/system
        set pt_cnt=128 ; 128개로 늘리고 싶을때.
        set npty=128
    시스템 재 부팅시 -r option을 사용하여 kernel이 reconfigure 되도록 한다.
   # reboot -- -r
 
문) 새로운 디스크 설치하기
1. root로 로그인한 후 아래와 같은 명령어를 사용하여 시스템을 다운시킨다.
             # init 0
             또는
             # halt
2. 시스템의 전원을 끄고 새 디스크를 연결한다.
3. 시스템의 전원을 켜고 "stop" key와 "a" key를 동시에 늘러 ok 상태로 시스템을
   내린 후 아래의 명령을 사용하여 리부팅 한다.
               ok boot -r
4.  시스템이 부팅된후 root로 로그인 하여 아래와 같이 format 명령을 실행한다.
               # format
    format명령어를 실행하면 시스템에 연결된 하드디스크가 0번 부터 선택할수 있도
    록 나열되어 보여 진다. 새로연결한 디스크 번호를 선택한후 enter키를 친다.
5.  아래와 같이 format> prompt가 보여지면 "partition"이라고 친후 enter키를 친다.
               format> partition
6.  prompt가 partition>으로 변경되면, print를 실행하여 현재 디스크의 용량을 확인
    한다.
                   partition> print
               Current partition table (unnamed):
               Total disk cylinders available: 2036 + 2 (reserved cylinders)
               Part      Tag    Flag     Cylinders        Size            Blocks
                 0 unassigned    wm       0               0         (0/0/0)          0
                 1 unassigned    wu       0               0         (0/0/0)          0
                 2     backup    wm       0 - 2035     1002.09MB    (2036/0/0) 2052288
                 3 unassigned    wm       0               0         (0/0/0)          0
                 4 unassigned    wm       0               0         (0/0/0)          0
                 5 unassigned    wm       0               0         (0/0/0)          0
                 6 unassigned    wm       0               0         (0/0/0)          0
                 7 unassigned    wm       0               0         (0/0/0)          0
    print결과에서 2번 part가 전체 디스크의 용량을 보여 주며, 위의 결과에서 보면
    전체 디스크 용량은 1002.09MB이고 2036개의 cylinder를 가지고 있음을 알수 있다
7. 사용할 slice(part)와 각 slice에 할당할 디스크 사이즈를 결정하고 아래와 같이
   선택을 한다.
   전체 디스크 용량을 2개의 slice로 나누고 4과 5번 slice를 사용하고자 할때;
               partition> 4
               Part      Tag    Flag     Cylinders        Size            Blocks
                 4 unassigned    wm       0               0         (0/0/0)          0
               Enter partition id tag[unassigned]:
               Enter partition permission flags[wm]:
               Enter new starting cyl[0]: 0
               Enter partition size[0b, 0c, 0.00mb]: 1018c
               partition> print
               Current partition table (unnamed):
               Total disk cylinders available: 2036 + 2 (reserved cylinders)
 
                              Part      Tag    Flag     Cylinders        Size            Blocks
                 0 unassigned    wm       0               0         (0/0/0)          0
                 1 unassigned    wm       0               0         (0/0/0)          0
                 2     backup    wm       0 - 2035     1002.09MB    (2036/0/0) 2052288
                 3 unassigned    wm       0               0         (0/0/0)          0
                 4 unassigned    wm       0 - 1017      501.04MB    (1018/0/0) 1026144
                 5 unassigned    wm       0               0         (0/0/0)          0
                 6 unassigned    wm       0               0         (0/0/0)          0
                 7 unassigned    wm       0               0         (0/0/0)          0
               partition> 5
               Part      Tag    Flag     Cylinders        Size            Blocks
                 5 unassigned    wm       0               0         (0/0/0)          0
               Enter partition id tag[unassigned]:
               Enter partition permission flags[wm]:
               Enter new starting cyl[0]: 1018
               Enter partition size[0b, 0c, 0.00mb]: 1018c
               partition> print
               Current partition table (unnamed):
               Total disk cylinders available: 2036 + 2 (reserved cylinders)
               Part      Tag    Flag     Cylinders        Size            Blocks
                 0 unassigned    wm       0               0         (0/0/0)          0
                 1 unassigned    wm       0               0         (0/0/0)          0
                 2     backup    wm       0 - 2035     1002.09MB    (2036/0/0) 2052288
                 3 unassigned    wm       0               0         (0/0/0)          0
                 4 unassigned    wm       0 - 1017      501.04MB    (1018/0/0) 1026144
                 5 unassigned    wm       1018 - 2035   501.04MB    (1018/0/0) 1026144
                 6 unassigned    wm       0               0         (0/0/0)          0
                 7 unassigned    wm       0               0         (0/0/0)          0
8. partition 이 끝나면 label을 실행 한다.
               partition> label
               label 작업을 계속 할 것인지를 물어 보면 "yes" 라고 치고
               label 작업이 다 끝나면 "quit" 을 2번 쳐서 format 상태에서 빠져 나온다.
9.  아래와 같이 newfs를 실행하여 UNIX filesystem을 새 디스크의 각 slice에 만든다 
               # newfs /dev/rdsk/c#t#d#s#
               "c#t#d#s#" 은 새 디스크의 각 slice에 해당하는 디바이스 이름을 쓴다.
 
               새 디스크가 coltroller 0에 연결되어 있고 targer 번호 0을 사용하고 있다면
        위의 format에의해 생성된 디스크 device는 c0t0d0s4와 c0t0d0s5가 된다.
10. newfs 작업이 끝나면 새 filesystem을 mount하여 사용한다.
        ** 명령어를 이용하여 filesystem을 mount할때 :
        # mount  -F ufs /dev/dsk/c#t#d#s#
        ** /etc/vfstab을 사용하여  mount 할때에는 아래와 같이 vfstab에 정의한 후, 
         /dev/dsk/c#t#d#s# /dev/rdsk/c#t#d#s#  ufs 2 yes -
                  아래의 명령을 사용한다.
              # mount
    시스템이 rebooting된 후에 자동 mount되게 하려면 /etc/vfstab에 정의해야 한다. 
9. 위의 모든 작업이 끝나면 아래 명령어를 사용하여 새 filesystem이 mount되에
   있는지 확인한다.
               # df -ket
 
문) Solaris 2.5.1에서의 installboot 명령어 사용법
1. OS CD로 부팅후 CD로 부터  bootblock을 disk로 복사하여 설치 하려면 아래와 같이
   installboot 명령을 실행 한다.
    ok boot cdrom -sw
    # installboot /cdrom/export/exec/sparc.Solaris_2.5.1 \   
     /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c0txd0s0
    위의 명령중 마지막 항목인 /dev/rdsk/c0txd0s0는 bootblock을 설치할 디스크의 device이름을명기한다. 일반적으로 "/" 화일 시스템은 target 0인 디스크의 0번 slice에 만들기 때문에 bootblock이 install 될 device는 /dev/rdsk/c0t0d0s0가 되지만 다른 target 번호를 사용하는 디스크에 bootblock을 설치할 경우에는 이에 맞는 device이름을 적어준다.
2. backup 받았던 data를 restore한후 bootblock을 다시 설치 하려면 아래와 같은 명령을 사용한다.
controller 1번에 연결된 target 0, slice 0의 disk에 설치 하려면 아래와 같이 installboot
명령을 실행 한다.
    # installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c1t0d0s0
 

반응형

'OS > SOLARIS' 카테고리의 다른 글

스왑용량 늘리기  (0) 2006.06.17
기술문서-솔라리스 OS 2  (0) 2006.06.16
시스템 시간 동기화 하기  (0) 2006.05.24
message queue  (0) 2005.12.23
[펌] 커널 파라메터의 수정  (0) 2005.12.23
Posted by [PineTree]