60.Unix2008. 11. 3. 13:39
반응형

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

 

새로운 디스크 설치하기

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 –k
 
가상터미널 갯수 늘리기(login 사용자수 늘리기)
[A] /etc/system 화일에 아래의 내용을 추가하고 시스템을 rebooting 한다.
    # vi /etc/system
        set pt_cnt=128 ; 128개로 늘리고 싶을때.
        set npty=128
    시스템 재 부팅시 -r option을 사용하여 kernel이 reconfigure 되도록 한다.
   # reboot -- -r
 

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:

 

각 사용자가 속한 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를 사용함에 있어 영향을 미칠수 있다.

 

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가 등록되어 있는지 확인한다.
 

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

 

 

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

 

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<@$2.$3>$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<@$2.$3>$4   user@any.domain
               변경후
        # Replace following with above to only forward "known" top-level domains
               #R$*<@$*.$+>$*           $#$M    $@$R $:$1<@$2.$3>$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<@$2.$3>$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... Sent

 

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: username@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

 

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

 

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

 

시스템 기종과 설치가능한 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

 

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    -
 

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 이다.
 

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   

 

한글 사용과 관련된 환경 설정

한글 사용을 위해 지정하여야할 환경변수와 관련 화일들은 아래와 같다.
   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 
                                           ^^^^^^^ 

 

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를 사용한다.

 

Solaris 7에서 32/64bit kernel 지정

Solaris 7에서 kernel mode를 32bit 또는 64bit로 지정하기 위해서는 아래와 같이 
boot.conf 화일을 수정한다. 
1. 32bit로 지정하기
   Solaris 2.7에서는 기본적으로 32bit kernel로 지정되어 있고, 이를 확인하기 위
   해서는 /platform/sun4u/boot.conf 화일이 아래와 같이 지정되어 있는지 점검한 
   후 만약 다르게 지정되어 있으면 아래와 같이 수정후 시스템을 rebooting 한다.
               # vi /platform/sun4u/boot.conf
          #ALLOW_64BIT_KERNEL_ON_UltraSPARC_1_CPU=true
2. 64bit로 지정하기
   /platform/sun4u/boot.conf 화일을 아래와 같이 변경한 후 시스템을 rebooting한다.
               # vi /platform/sun4u/boot.conf
          ALLOW_64BIT_KERNEL_ON_UltraSPARC_1_CPU=true
               # reboot

 

Solaris 7(2.7)을 설치하기 위해 필요한 disk space

Solaris 7(2.7)은 설치시 kernel mode를 64bit로 사용할수 있는 library를 선택적으로 
설치할수 있기 때문에 32bit mode와 64bit mode에 따른 각각의 필요한 disk space는 
아래와 같다. 
   - Entire Distribution +OEM으로 설치시 : 32bit - 706MB
                                           64bit - 814MB
   - Entire Distribution으로 설치시      : 32bit - 697MB
                                           64bit - 805MB
   - Developer System Support으로 설치시 : 32bit - 617MB
                                           64bit - 738MB
   - End User System Support으로 설치시  : 32bit - 361MB
                                           64bit - 455MB

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를 /a로 mount
   한다. /로 사용하던 disk device가 /dev/dsk/c0t0d0s0인 경우 아래와 같이 한다. 
   # fsck -y /dev/rdsk/c0t0d0s0
   # mount -F ufs -o rw /dev/dsk/c0t0d0s0 /a
4. 위와 같이 하면 기존에 /etc directory에 있던 shadow 화일이 /a/etc/shadow로
   존재하게 되며,  이 화일을 vi로 열어서 root에 정의되어 있는 password부분을
   지운다.
               # vi /a/etc/shadow
               root:vBrrOh8AIqYV6:6445::::::
             ^^^^^^^^^^^^^ 이 부분을 지운다
        변경후
               # cat /a/etc/shadow
               root::6445::::::
5. 위와 같이 한후 시스템을 재부팅 하면  root로 password 없이 login가능하다.
 

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)
 

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 #0zs, instance #1
                  * 디스크
# dmesg       : sd3 at esp0: target 3 lun 0sd3 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.날짜
                  이들의 인스톨 로그 화일은 기본적으로 인스톨 과정에서 발생하는 문제를 기록하기 위해서 작성 된다.
 

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. 실행된 프로세스들의 정보는 다음과 같이 간단히 알아 볼 수 있다.
               # lastcomm
               ls          root     pts/18         0.01 secs Mon Mar 27 17:25
               ls          root     pts/18         0.01 secs Mon Mar 27 17:25
               ls          root     pts/18         0.02 secs Mon Mar 27 17:25
               startup     root     pts/18         0.01 secs Mon Mar 27 17:25
               rm          root     pts/18         0.01 secs Mon Mar 27 17:25
6. acct를 종료하는 방법은 다음과 같다.
               # /usr/lib/acct/shutacct
7. 참고 문헌
               시스템에 설치된 메뉴얼 페이지를 참고한다.
               acct(1M), acctsh(1M), lastcomm(1)
               예제)
                              man acct

 

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)

 

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

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

 

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

 

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

 

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

 

/ 화일 시스템이 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 화일에서 비정상적인 큰 화일이 있는지 조사한다.

 

백업(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

 

사용자(계정) 등록하기

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
 

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 데이타는 계속 받힌다.
 

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

 

한글이 입출력되지 않으면?

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

CDE: dtmail에 mp 형식을 추가하는 방법

SRDB ID: 12685
개요: CDE: dtmail에 mp 형식을 추가하는 방법
세부 설명:
Solaris 일반 데스크탑 환경 Answerbook 1.0.1에 포함된 Solaris CDE 설치 및 시스템 관리 설명서에서는 다음 방법을 사용해서 $HOME/.dt/types/dtmail.dt에 mp 형식 제어를 추가하도록 설명합니다.
#
# Override default Print action for mailboxes
# ACTION print
{
LABEL           Print
ARG_TYPE        DTMAIL_FILE
TYPE            COMMAND
WINDOW_TYPE     NO_STUDIO
EXEC_STRING     sh -c '                 dtmailpr -p -f %(File)Arg_1% | mp -m -l
|                 dtlp -u %(File)Arg_1%;'
}
그러나 이 방법을 사용해도 추가되지 않습니다! 
무엇이 잘못된 것입니까?
해결 방법 요약:
작업 정의가 잘못되었습니다.
"# ACTION print" 행에서 "#" 기호를 제거해야 합니다.
0. dtmail을 중단하십시오.
1. cp /usr/dt/appconfig/types/C/dtmail.dt ~/.dt/types/
2. $HOME/.dt/types/dtmail.dt 파일을 편집하고 인쇄 작업을 수정하십시오.
## override the Print ACTION
ACTION Print
{
        LABEL           Print
        ARG_TYPE        DTMAIL_FILE
        TYPE            COMMAND
        WINDOW_TYPE     NO_STDIO
        EXEC_STRING     sh -c '                         dtmailpr -p -f
%(File)Arg_1% |                        mp -m -l |                        dtlp
-u %(File)Arg_1%;'
}
3. CDE를 다시 시작하십시오.
4. dtmail을 시작하십시오.
*** Sun은 dtmail과 작업을 사용자 정의하는 기능을 지원하지 않습니다.
*** 이 설명서의 내용은 참고용입니다.
*** 
제품 영역: Windows
제품: CDE
SUNOS 릴리즈: Solaris 2.x
하드웨어: 모든 하드웨어
 

모든 클라이언트가 사용자 암호 없이 로그인하도록 설정하기

SRDB ID: 14816
개요: 모든 클라이언트가 사용자 암호 없이 로그인하도록 설정하기
세부 설명:
모든 클라이언트에 대하여 사용자 암호를 요구하지 않도록 하려면 어떻게 해야 합니까?
그러면 모든 클라이언트가 암호를 입력하지 않고 로그인할 수 있습니다.
해결 방법 요약:
/etc/default/login 파일에서 다음 행에 주석 표시를 하십시오.
PASSREQ=YES
행 앞에 # 기호를 사용하면 주석 표시가 됩니다.
그러면 모든 사용자가 암호를 입력하지 않고 로그인할 수 있습니다.
제품 영역: 시스템 관리
제품: 로그인
SUNOS 릴리즈: Solaris 2.5.1
하드웨어: S10-51

 

rlogin을 실행하면 "protocol error, closed connection" 오류가 발생하는 경우

SRDB ID: 15011
개요: rlogin을 실행하면 "protocol error,  closed connection" 오류가 발생하는 경우
세부 설명:
SunOS 시스템에 대하여 rlogin이 실행되지 않고 다음 오류가 발생합니다.
               "protocol error,  closed connection"
해결 방법 요약:
1. 연결하려는 시스템을 대상으로 in.rlogin에 대한 사용 권한을 확인하십시오. 사용 권한이 다음과 같아야 합니다.
    -r-xr-xr-x  1 root     staff       16384 Jan 20  1994 /usr/sbin/in.rlogind
2. /etc/inetd.conf 파일에서 login 행을 확인하십시오. 다음과 같아야 합니다.
   login               stream             tcp               nowait              root               /usr/sbin/in.rlogind               in.rlogind
제품 영역: 일반 네트워크
제품: 일반 서비스
SUNOS 릴리즈: Solaris 1.x
하드웨어: 없음

 

dtlogin을 사용해서 로그인할 때 Solaris 배너 페이지 비활성화하기

SRDB ID: 15717
개요: dtlogin을 사용해서 로그인할 때 Solaris 배너 페이지 비활성화하기
세부 설명:
dtlogin을 사용해서 로그인할 때 Solaris 배너 페이지가 표시되지 않도록 하려면 어떻게 해야 합니까?
해결 방법 요약:
/etc/dt/config/Xservers 파일에 -nobanner 옵션을 추가하는 방법으로는 이 페이지를 비활성화할 수 없습니다.
로그인과 실제 데스크탑 사이에 표시되는 "Welcome to Solaris" 화면은 Xserver 배너가 아니고, Xserver가 이미 실행되어 로그인 화면을 표시하는 것입니다.
이 배너는 /usr/dt/bin/Xsession에서 호출되는 /usr/dt/bin/dthello 프로그램에 의해 표시됩니다.
로그인할 때 다른 프로그램을 실행하려면 /usr/dt/bin/Xsession 파일을 수정해서 dtstart_hello[0] 변수의 설정을 변경해야 합니다. 현재는 "$DT_BINPATH/dthello &"로 설정되어 있습니다.
배너를 완전히 없애려면 dtstart_hello 변수가 있는 행에 주석 표시를 하십시오. 이 행은 다음과 같습니다.
    StartFirst dtstart_hello        # start desktop hello client
자세한 내용은 dthello에 대한 매뉴얼 페이지를 참조하십시오.
제품 영역: Windows
제품: CDE
SUNOS 릴리즈: Solaris 2.5
하드웨어: 모든 하드웨어

 

PS 명령을 실행할 때 터미널을 제어할 수 없다는 오류가 발생하는 경우

SRDB ID: 16374
개요: PS 명령을 실행할 때 터미널을 제어할 수 없다는 오류가 발생하는 경우
세부 설명:
PS 명령을 실행하면 터미널을 제어할 수 없다는 오류가 발생합니다.
truss도 실행되지 않고 "/proc is not proc directory message" 오류가 발생합니다.
해결 방법:
/etc/vfstab에 /proc 항목이 없습니다.
다음과 같은 항목이 있어야 합니다.
/proc       -               /proc               proc               -               no               -
제품 영역: 커널
제품: 일반
SUNOS 릴리즈: Solaris 2.x
하드웨어: 모든 하드웨어
 

"rpc.lockd cannot contact status monitor" 오류 메시지

SRDB ID: 17198
개요: "rpc.lockd cannot contact status monitor" 오류 메시지
세부 설명:
오류 메시지: rpc.lockd cannot contact status monitor
이 오류 메시지는 부팅할 때 표시되고, 시스템이 완전히 부팅된 후에도 계속 나타납니다.
ps -ef 명령을 실행하면 lockd는 실행되고 있지만 statd는 실행되지 않는다고 표시됩니다.
다음과 같은 방법을 사용해 보십시오.
1.  lockd와 statd를 중단하십시오(statd는 실행되지 않음).
2.  /etc/sm*/*의 파일을 삭제(rm 명령)하십시오. 
3.  lockd와 statd를 다시 시작하십시오.
그래도 statd가 시작되지 않습니다!
해결 방법 요약:
/etc/sm.bak에 대한 사용 권한이 잘못되었습니다. 사용 권한이 다음과 같습니다.
----------  2 root          512 May 19 15:10 sm.bak/
statd를 제대로 실행하려면 다음과 같이 하십시오.
1. sm.bak 디렉토리를 삭제하십시오.
2. 다음 사용 권한의 디렉토리를 생성하십시오.
drwxr-s---  2 root          512 May 19 15:10 sm.bak/
이렇게 하면 직접 statd를 시작할 수도 있고 다시 부팅해서 시작할 수도 있습니다.
제품 영역: 일반 네트워크
제품: NFS
SUNOS 릴리즈: Solaris 1.x
하드웨어: 모든 하드웨어
 

Solaris 2.6 시스템에 ftp 연결이 되지 않고 "530 login incorrect" 메시지가 나오는 경우

SRDB ID: 17212
개요: Solaris 2.6 시스템에 ftp 연결이 되지 않고 "530 login incorrect" 메시지가 나오는 경우
세부 설명:
Solaris 2.6 시스템에 ftp로 연결하면 다음 메시지가 나옵니다.
# ftp 
Connected to .
220  FTP server (SunOS 5.6) ready.
Name (:): 
331 Password required for .
Password: 
530 Login incorrect.
Login failed.
Solaris 2.5.1 시스템에 ftp로 연결하면 다음 메시지가 나옵니다.
# ftp 
Connected to .
220  FTP server (UNIX(r) System V Release 4.0) ready.
Name (:): 
530 User  access denied.
Login failed.
두 경우 모두 rlogin과 telnet은 제대로 연결됩니다.
해결 방법 요약:
A1: 표준이 아닌 쉘(즉, tcsh)을 사용하고 있습니다.
표준이 아닌 쉘을 사용할 경우에는 /etc/shells 파일을 작성하고 이 파일에 쉘을 추가해야 합니다. 
 
참고: /etc/shells 파일을 생성하면 이 파일에 있는 쉘만 사용됩니다. 이 파일을 작성할 때 표준이 아닌 쉘과 함께 모든 기본 쉘을 추가하는 것이 좋습니다.
다음은 맨 아래에 있는 표준이 아닌 쉘과 함께 기본 Solaris 쉘을 추가한 /etc/shells 파일의 예입니다.
 %% cat /etc/shells
  /usr/bin/sh  
  /usr/bin/csh 
  /usr/bin/ksh
  /usr/bin/jsh 
  /bin/sh      
  /bin/csh
  /bin/ksh     
  /bin/jsh
  /sbin/sh
  /sbin/jsh
  /usr/local/bin/tcsh
A2: ftp로 연결하려는 시스템의 /etc/ftpusers 파일에 사용자 목록이 있습니다. 이 파일에 항목으로 표시된 모든 사용자는 자동으로 FTP 액세스가 거부됩니다.
A3: /etc/passwd 및 /etc/shadow 파일(또는 NIS나 NIS+ 데이터베이스)에서 ftp로 연결하려는 사용자 항목의 구문이 정확한지 확인하십시오. 구문을 확인하려면 pwck를 실행하십시오.
제품 영역: 일반 네트워크
제품: ftp
SUNOS 릴리즈: Solaris 2.6
하드웨어: 없음

 

lit 도구를 사용하지 않고 컴파일러 사용권을 설치하는 방법

SRDB ID: 17252
개요: lit 도구를 사용하지 않고 컴파일러 사용권을 설치하는 방법
세부 설명:
PatchID 104829를 사용해서 lit를 패치하지 않으면 lit(사용권 설치 도구)에 문제가 있습니다. 즉, 패치를 실행하지 않으면 lit 도구가 사용권 파일에 불필요한 문자를 입력해서 사용권 오류가 발생합니다.
문제를 해결하려면 아래 설명에 따라 영구 사용권을 설정하십시오.
해결 방법 요약:
 
1. 전자 우편으로 사용권 키를 얻으려면 라이센스 센터로 전화를 하십시오.
   라이센스 센터: 1-800-USA-4SUN(3번을 선택한 다음 1번 선택)
2. 사용권 전자 우편을 받았으면 첨부 파일을 저장하십시오. 첨부된 두 개의 파일 중 하나가 사용권 파일입니다. 사용권 파일은 첫 번째 행에 "SERVER .."라는 단어가 있습니다. 또 하나의 첨부 파일은 사용권 대상 제품, 일련번호, 호스트 이름 등에 대한 정보가 있는 "User-Info" 파일입니다. 정확한 첨부 파일을 /tmp/lic로 저장하십시오.
3. 저장된 사용권 파일을 다음 위치에 복사하십시오.
   # cp /tmp/lic /etc/opt/licenses/licenses_combined
   # cp /tmp/lic //SUNWspro/license_dir/sunpro.lic,1
   는 컴파일러를 설치하기 위해 선택한 위치입니다. 기본 위치는 /opt입니다.
   참고: license_dir에 사용권이 있을 경우 이미 sunpro.lic,1 또는 sunpro.lic.X(여기서 X는 번호)라는 파일이 있을 수 있습니다. 사용할 수 있는 다음 번호를 사용해서 파일 이름을 지정해야 합니다.
4. 사용권 관리자를 다시 시작하십시오.
   # cd /etc/opt/licenses
   # ./lmdown -a -c licenses_combined
   (다시 시작하기 전에 사용권 데몬이 중단되었는지 확인하십시오.)
   # ps -ef | grep lmgrd
   # ps -ef | grep suntechd
   (이제 사용권 데몬을 시작하십시오.)
   # /etc/rc2.d/S85lmgrd
5. 다음 명령을 실행하여 사용권 데몬이 모든 사용권을 보고하는지 확인하십시오.
   # ./lmstat -a -c licenses_combined.
   사용권을 받은 각 제품에 대한 사용 정보와 데몬의 상태가 보고되어야 합니다.
6. 이제 다음 방법으로 컴파일러를 사용할 수 있습니다.
   # cd //SUNWspro/bin
   # ./cc -xlicinfo
   구입한 만큼의 사용권에 사용할 수 있는 사용권이 보고되어야 합니다. 보고된 값이 0이면 사용권 관리자가 실행되지 않은 것입니다.
   다음을 실행하여 확인하십시오.
   # touch /tmp/test.c
   # /opt/SUNWspro/bin/cc /tmp/test.c
       "test.c", line 1: warning: empty translation unit
       Undefined                       first referenced
       symbol                             in file
       main                                /opt/SUNWspro/SC4.2/lib/crt1.o
       ld: fatal: Symbol referencing errors. No output written to a.out
   사용권 오류 없이 길이가 0인 파일을 컴파일했습니다.
   컴파일에 실패하면 다음과 같은 메시지가 나옵니다.
       License Error : Cannot connect to the license server (austin)..
        for product(Sun WorkShop Compiler C).
        (License server may not have been started)
       Cannot connect to license server (-15,12:146) Connection refused
       cc: acomp failed for test.c
   이 경우에는 Sun 서비스 전화 1-800-USA-4SUN으로 문의하고 /var/tmp/license_log 파일을 전송할 준비를 하십시오.
패치 ID: 104829
제품 영역: 사용권
제품: FLEXlm
SUNOS 릴리즈: Solaris 2.x
하드웨어: 없음

 

Warning: Cannot convert string "...." to type FontList, using fixed font

SRDB ID: 17310
개요: Warning: Cannot convert string "...." to type FontList, using fixed font
세부 설명:
다른 회사 응용 프로그램을 Sun 시스템에 표시하려고 하면 다음과 같은 오류 메시지가 나옵니다.
Warning: Cannot convert string "...." to type FontList, using fixed font
응용 프로그램이 실행되지만 제대로 표시되지 않습니다. 
왜 이런 문제가 발생합니까?
해결 방법 요약:
이 오류 메시지는 응용 프로그램이 찾는 글꼴이 없기 때문입니다.
Sun 시스템에서 사용할 수 있는 글꼴이 원격 시스템의 글꼴과 다를 수 있습니다. 표시하려는 응용프로그램에 Sun Xserver에 없는 글꼴이 필요하기 때문에 필요한 글꼴을 제공할 수 없습니다. 이 경우에는 Xserver가 다른 글꼴을 선택해서 응용프로그램에 사용하기 때문에 응용프로그램이 이상하게 표시될 수 있습니다. 또 응용 프로그램이 전혀 실행되지 않을 수도 있습니다.
Sun 시스템이 원격 시스템에 있는 글꼴을 인식하도록 해야 합니다. 다음 두 가지 방법으로 이 작업을 할 수 있습니다.
 
1. 필요한 글꼴이 인식할 수 있는 형식일 경우에는 글꼴을 Sun 시스템으로 복사할 수 있습니다. ( Sun 형식은 font psd를 참조하십시오.)
2. Sun 시스템에서 필요한 글꼴의 이름을 별명으로 지정할 수 있습니다. 응용 프로그램이 찾는 글꼴을 찾을 수 없을 경우 응용 프로그램이 Sun 시스템에 있는 다른 글꼴을 사용하도록 합니다.
   다른 글꼴을 사용하게 하려면 글꼴 디렉토리 중 하나에서 fonts.alias 파일을 편집하십시오. 글꼴 디렉토리 목록을 보려면 xset -q 명령을 실행하십시오. 그 다음에 필요한 글꼴을 파일에 추가하십시오.
   이제 xset fp rehash 명령을 실행하십시오.
   (자세한 내용은 font psd를 참조하십시오.)
제품 영역: Windows
제품: 글꼴
SUNOS 릴리즈: Solaris 2.x
하드웨어: 모든 하드웨어
 

 dbx 내부 오류가 발생하는 이유

SRDB ID: 17324
개요: dbx 내부 오류가 발생하는 이유
세부 설명:
간단한 hello.c 프로그램을 컴파일할 때 디버깅을 위해 -g 옵션을 사용하는데, Workshop 디버거나 명령행 dbx를 사용하려고 하면 다음 오류가 발생합니다.
dbx: internal error: object file ends unexpectedly while reading stabs of hello.c
해결 방법 요약:
다른 컴파일러(예: gcc)를 사용해서 프로그램을 컴파일하고, 이렇게 생성된 실행 파일을 Workshop 디버거나 dbx를 사용해서 디버그할 경우에 이러한 오류가 발생합니다.
"which cc" 명령을 실행해서 /SUNWspro/bin/cc가 표시되지 않으면 다른 컴파일러를 사용하고 있는 것입니다(여기서 는 Workshop 컴파일러가 설치된 위치).
Workshop 컴파일러에서 정확한 경로(즉, //SUNWspro/bin/cc)를 지정하고 -g 옵션을 사용해서 컴파일한 다음, Workshop 디버거나 명령행 dbx를 사용해서 디버그하면 dbx 내부 오류가 발생하지 않습니다.
제품 영역: 프로그래밍
제품: 디버거
SUNOS 릴리즈: 모든 릴리즈
하드웨어: 모든 하드웨어

 

 

다른 회사 소프트웨어의 매뉴얼 페이지가 작동하지 않는 경우

SRDB ID: 17351
개요: 다른 회사 소프트웨어의 매뉴얼 페이지가 작동하지 않는 경우
세부 설명:
다른 회사에서 제공하는 소프트웨어와 매뉴얼 페이지를 로드했습니다. MANPATH에 경로를 추가하고 catman도 실행했습니다. 그러나 명령에 대하여 man을 실행하면 "No manual entry for (the command). no such file or directory."라는 메시지가 나옵니다.
해결 방법 요약:
매뉴얼 페이지 파일의 이름 표기 규칙에 문제가 있습니다. 
/usr/man/man1의 표준 파일 이름은 mem.1인데, 다른 회사에서 제공하는 파일의 이름은 mem.1T입니다. "T" 때문에 문제가 발생한 것입니다. "T"를 삭제하거나 "T"를 "t"로 변경하면 매뉴얼 페이지가 작동합니다. 대문자 "T"를 사용하면 문제가 발생합니다.
제품 영역: 모든 영역
제품: 모든 제품
SUNOS 릴리즈: Solaris 2.5.1
하드웨어: 모든 하드웨어

 

sendmail: unqualified host name/unable to qualify my own domain name

SRDB ID: 18391
개요: sendmail: unqualified host name/unable to qualify my own domain name
세부 설명:
SendMail 8.8을 사용해서 전송하면 다음 메시지가 나옵니다.
  sendmail[694]: My unqualified host name (lawlor.) unknown; sleeping for retry
  sendmail[694]: unable to qualify my own domain name (lawlor.) -- using short name
해결 방법 요약:
다음은 sendmail 버전에 대한 표입니다.
        Solaris                         sendmail
        ========================================
        7                               8.9.1b      
        2.6                             8.6
        2.6 + 105395-05 이상            8.8.8
        2.5.1                           8.6
        2.5.1 + 103594-18 이상          8.8.8
        기타 + 최신 패치                8.6
 
Solaris 7로 업그레이드하거나 최신 sendmail 패치를 사용하여(또는 sendmail 패치가 포함된 권장 패치 세트를 적용) 2.5.1/2.6을 패치하면 이런 문제가 발생합니다.
Sendmail 8.8을 사용해서 전송하려면 완전한 호스트 이름을 지정해야 하기 때문에, 로컬 도메인 이름을 알 수 있습니다.
여러 가지 방법을 사용한 후에 실패하면 다음 메시지를 표시합니다.
  sendmail[694]: My unqualified host name (lawlor.) unknown; sleeping for retry
  sendmail[694]: unable to qualify my own domain name (lawlor.) -- using short name
첫 번째 메시지를 표시한 다음 네임 서비스에 장애가 있다고 판단해서(즉, 네트워크 네임 서비스를 초기화하는 중) 60초 동안 대기했다가 두 번째 행을 표시합니다. 1분 후에 두 번째 메시지가 표시되고, sendmail은 도메인 이름을 확인하지 못하고 계속 진행합니다.
가장 간단한 방법(권장)은 /etc/hosts에 완전한 호스트 이름을 지정하고, /etc/nsswitch.conf에 "files"를 첫 번째로 지정하는 것입니다. 예를 들어 다음과 같이 하십시오.
  /etc/nsswitch.conf:
  hosts: files nisplus dns
  /etc/hosts:
  192.9.9.100               www www.sun.com
/etc/nsswitch.conf에 있는 첫 번째 네임 서비스가 "files"이면 표시된 첫 번째 네임 서비스가 완전한 호스트 이름을 반환해야 합니다.
Sendmail이 NIS/NIS+ 도메인 이름(/etc/defaultdomain에 설정된)을 사용할 수 있습니다. 이 경우에는 첫 번째 구성 요소를 제거하십시오. 예를 들어, 다음과 같이 하십시오.
  hotline.uk.sun.com -> uk.sun.com
Solaris 7에는 완전한 호스트 이름이 구성되었는지 확인해서 알려주는 /usr/lib/mail/sh/check-hostname 스크립트가 있습니다. 2.5.1/2.6에 사용할 수 있는 버전을 구하려면 아래 웹 사이트를 참조하십시오.
참고:
  Sendmail은 sendmail.cf 파일을 처리하기 전에 위의 작업을 실행하기 때문에 $m을 설정해도 메시지가 취소되거나 지연되지 않습니다.
자세한 내용은 다음 웹 사이트를 참조하십시오.
  http://www.sendmail.org/sun-specific
제품 영역: 일반 네트워크
제품: 메일
SUNOS 릴리즈: 없음
하드웨어: 없음

 

이중 헤드 표시를 사용하거나 두 번째 프레임 버퍼에 CDE를 실행하는 방법

INFODOC ID: 11669
개요: 이중 헤드 표시를 사용하거나 두 번째 프레임 버퍼에 CDE를 실행하는 방법
세부 설명:
다음 방법으로 이중 헤드(하나의 X 표시, 2개의 화면) CDE 구성을 작성하십시오.
1. 루트 권한으로 /usr/dt/config/Xservers를 /etc/dt/config/Xservers에 복사하십시오.
   * 먼저 /etc에 디렉토리를 만들어야 할 수도 있습니다.
2. /etc/dt/config/Xservers 사본에서 마지막에 있는(주석 표시가 없는)
   :0 Local local@console /usr/openwin/bin/Xsun :0
   행을 다음과 같이 변경하십시오. 
   :0 Local local@console /usr/openwin/bin/Xsun :0 -dev /dev/fb0 -dev /dev/fb1
   * Xsun 옵션에 대한 자세한 내용은 "Xsun" 매뉴얼 페이지를 참조하십시오.
   * 이 행의 장치가 시스템 구성과 일치하는지 확인하십시오.
3. 시스템을 다시 부팅하거나 CDE를 종료하고 명령에서 로그인한 다음 dtlogin을 종료했다가 다시 시작하십시오.
(참고: Solaris 2.6 이상 버전에서는 두 화면에 프론트 패널이 표시되지 않습니다. Solaris 2.7(CDE 1.3)의 경우에는 각 화면에 따로 프론트 패널이 표시됩니다.)
제품 영역: Windows
제품: CDE
SUNOS 릴리즈: Solaris 2.x
하드웨어: 모든 하드웨어

 

루트 파일 시스템 복원

INFODOC ID: 11881
개요: 루트 파일 시스템 복원
세부 설명:
루트 파일 시스템을 복원하려면 어떻게 해야 합니까?
다음 루틴을 사용하면 신속하게 파일 시스템을 복원할 수 있습니다. 이 절차에서는 ufsdump를 사용하여 루트 파일 시스템을 저장했다고 가정합니다. 또 이 설명서에서는 루트 파일 시스템이 c0t3d0s0에 있다고 가정합니다.
1. Solaris CD-ROM을 CD-ROM 드라이브로 로드하십시오.
2. 단일 사용자 모드에서 CDROM으로 부팅하십시오.
   ok  boot cdrom -s
3. BOURNE 쉘 프롬프트가 나오면 루트 파일 시스템의 파티션을 새로 설정하십시오(필요할 경우).
   a. 드라이브 파티션을 설정하려면 "format" 명령을 사용하십시오.
   b. 파일 시스템을 생성하려면 "newfs /dev/rdsk/c0t3d0s0" 명령을 사용하십시오.
 
4. 새 루트 파일 시스템을 확인하십시오.
   # fsck /dev/rdsk/c0t3d0s0
5. /a 마운트 포인트에 루트 파일 시스템을 마운트하십시오.
   # mount /dev/dsk/c0t3d0s0 /a
6. 먼저 새 루트 파일 시스템으로 이동해서 복원을 시작하십시오.
   a.  cd /a
   b.  ufsrestore rvf /dev/rmt/0
7. 복원이 완료되면 복원 기호 테이블을 제거하고 새 파일 시스템의 마운트를 해제하십시오.
   a. rm restoresymtable
   b. cd /
   c. umount /a
8. 새 루트 파티션을 한 번 더 확인하십시오.
   # fsck /dev/rdsk/c0t3d0s0
9. 부트 블록을 설치하십시오.
   # Solaris 2.4 이하 버전의 경우:
     a. cd /usr/lib/fs/ufs
     b. installboot bootblk /dev/rdsk/c0t3d0s0
   # 2.5, 2.5.1 또는 2.6의 경우:
     a. cd /usr/platform//lib/fs/ufs 
     b. 을 가져오려면 uname -i 명령을 입력하십시오. 더 쉽게 작업을 하려면 다음과 같이 cd 명령에 포함시키십시오.
              * cd /usr/platform/`uname -i`/lib/fs/ufs
               * 명령 앞뒤에 역따옴표를 사용해야 합니다.
     c. installboot bootblk /dev/rdsk/c0t3d0s0
10. 시스템을 다시 부팅하십시오.
    # reboot
참고: 다른 파일 시스템의 파티션(usr, var 등)을 복원하려면 CDROM으로 부팅한 후에 단계 3-8을 수행하십시오.
적용 대상: 하드웨어, 운영 체제/Solaris/Solaris 2.x

 

named pipe의 최대 크기

INFODOC ID: 11899
개요: named pipe의 최대 크기
세부 설명:
named pipe의 최대 크기는 얼마나 됩니까?
 
간단히 대답하면 크기에 제한이 없습니다. 자세한 내용은 아래를 참조하십시오.
/usr/include/limits.h 및 /usr/include/sys/param.h 파일에 
다음과 같은 부분이 있습니다.
#ifndef PIPE_BUF               /* max # bytes atomic in write to a pipe */
#define               PIPE_BUF       5120
#endif      /* PIPE_BUF */
#ifndef PIPE_MAX               /* max # bytes written to a pipe in a write */
#define               PIPE_MAX       5120
#endif      /* PIPE_MAX */
위 주석의 설명처럼 한 번에 최대 5120 바이트까지 pipe에 기록할 수 있습니다. 따라서 두 개의 프로그램이 동일한 pipe에 기록할 경우, 한 번에 5120 바이트 이상의 정보를 기록하려고 하면, 여러 기록 작업의 데이터가 나눠질 수 있습니다. 즉, A 프로그램이 한 번의 기록으로 5200 바이트를 기록하려고 요청하면 A 프로그램의 데이터 5120 바이트를 기록하고 B 프로그램의 데이터 50 바이트를 기록한 다음 A 프로그램의 데이터 80 바이트를 기록할 수 있습니다.
프로그램이 항상 각 기록 작업에서 5120 바이트 이하의 데이터를 기록할 경우, 다른 프로그램이 기록하는 데이터가 나눠지지 않습니다. 물론 하나의 프로그램이 pipe에 기록할 경우에는 문제가 되지 않습니다.
제품 영역: 커널
제품: 시스템 호출
SUNOS 릴리즈: Solaris 2.x
하드웨어: 모든 하드웨어

 

두 번째 하드 디스크 추가 및 구성

INFODOC ID: 13127
개요: 두 번째 하드 디스크 추가 및 구성
세부 설명:
다음은 Solaris 2.x x86에 사용할 두 번째 하드 디스크를 추가하고 구성하는 절차입니다.
먼저 하드웨어 제조업체 지시에 따라 하드 디스크를 설치하십시오. SCSI 대상 번호, 종단 장치, 전원 등과 같은 기본 사항을 확인하십시오. IDE 드라이브일 경우에는 마스터 또는 슬레이브를 결정하십시오.
드라이브가 설치되어 작동하는 것이 확인되면 부트 해석기에서 "b -sr" 옵션을 사용해서 Solaris 2.x x86으로 부팅하십시오. Solaris 2.x x86이 단일 사용자 모드로 부팅되고 새 하드 디스크에 대해 /dev/dsk/* 항목이 생성됩니다. 이 항목이 생성되지 않으면 Solaris 2.x x86이 드라이브를 인식하지 못하는 것입니다. 그러면 따로 검사를 해야 합니다.
다음에는 새 드라이브에 fdisk 파티션을 생성해야 합니다.
# format
- 다음과 같은 메뉴가 나옵니다.
AVAILABLE DISK SELECTIONS:
       0. c1t0d0 
          /pci@0,0/pci9004,8178@3/cmdk@0,0
       1. c1t1d0 
          /pci@0,0/pci9004,8178@3/cmdk@1,0
       2. c1t2d0 
          /pci@0,0/pci9004,8178@3/cmdk@2,0
Specify disk (enter its number): 
- 새 드라이브에 해당하는 번호를 입력하십시오. 다음 메뉴가 나옵니다.
FORMAT MENU:
        disk       - select a disk
        type       - select (define) a disk type
        partition  - select (define) a partition table
        current    - describe the current disk
        format     - format and analyze the disk
        fdisk      - run the fdisk program
        repair     - repair a defective sector
        label      - write label to the disk
        analyze    - surface analysis
        defect     - defect list management
        backup     - search for backup labels
        verify     - read and display labels
        save       - save new disk/partition definitions
        inquiry    - show vendor, product and revision
        volname    - set 8-character volume name5
        quit
format> 
- fdisk 옵션을 선택하십시오. (참고: SPARC용 Solaris 2.x에 이 옵션이 없습니다.) 드라이브에 파티션이 없으면 다음과 같은 메시지가 나옵니다.
The recommended default partitioning for your disk is:
  a 100% "SOLARIS System" partition. 
이것을 선택하려면 "y"를 누르십시오. 다른 파티션을 생성하려면 "n"을 누르십시오. 그러면 "fdisk" 프로그램에서 다른 파티션을 선택할 수 있습니다. 
- 전체 드라이브를 Solaris 2.X x86에 사용하려면 'y'를 입력하십시오. 그러면 format 메뉴로 돌아갑니다. 'n'을 선택하면 fdisk 메뉴가 나옵니다.
             Total disk size is 4073 cylinders
             Cylinder size is 540 (512 byte) blocks
                                           Cylinders
      Partition   Status    Type      Start   End   Length    %
      =========   ======    ========  =====   ===   ======   ===
 
THERE ARE NO PARTITIONS CURRENTLY DEFINED
SELECT ONE OF THE FOLLOWING: 
     1.   Create a partition
     2.   Change Active (Boot from) partition
     3.   Delete a partition
     4.   Exit (Update disk configuration and exit)
     5.   Cancel (Exit without updating disk configuration)
Enter Selection: 
- Solaris FDISK 파티션을 생성하려면 1을 선택하십시오. 이것은 Solaris 슬라이스 파티션(또는 파일 시스템)과 다릅니다. 종료하고 저장하려면 4를 선택하십시오. format 메뉴는 되돌아갑니다. 그 다음에 파티션(슬라이스)을 선택하십시오.
PARTITION MENU:
        0      - change `0' partition
        1      - change `1' partition
        2      - change `2' partition
        3      - change `3' partition
        4      - change `4' partition
        5      - change `5' partition
        6      - change `6' partition
        7      - change `7' partition
        select - select a predefined table
        modify - modify a predefined partition table
        name   - name the current table
        print  - display the current table
        label  - write partition map and label to the disk
        quit
partition> 
- 기본 슬라이스 크기를 표시하려면 print를 입력하십시오.
Current partition table (default):
Total disk cylinders available: 4070 + 2 (reserved cylinders)
Part      Tag    Flag     Cylinders        Size            Blocks
  0       root    wm       3 -  245       64.07MB    (243/0/0)   131220
  1       swap    wu     246 -  731      128.14MB    (486/0/0)   262440
  2     backup    wu       0 - 4072        1.05GB    (4073/0/0) 2199420
  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        usr    wm     732 - 4070      880.40MB    (3339/0/0) 1803060
  7 unassigned    wm       0               0         (0/0/0)          0
  8       boot    wu       0 -    0        0.26MB    (1/0/0)        540
  9 alternates    wm       1 -    2        0.53MB    (2/0/0)       1080
partition> 
- 원하는 대로 변경하십시오. 언제든지 '?'를 입력하면 도움말이나 사용법을 볼 수 있습니다. 예를 들어, 큰 루트 파일 시스템이 필요하면 먼저 'usr'(슬라이스 6)과 'swap'(슬라이스 1)을 제거하십시오.
partition> 6
Part      Tag    Flag     Cylinders        Size            Blocks
  6        usr    wm     732 - 4069      880.14MB    (3338/0/0) 1802520
Enter partition id tag[usr]: 
Enter partition permission flags[wm]: 
Enter new starting cyl[732]: 
Enter partition size[1802520b, 3338c, 880.14mb]: 0
                                                 ^
                                                 |
                                  슬라이스 6을 제거하려면 0을 입력
- 슬라이스 1에도 동일한 작업을 하십시오.
partition> 1
Part      Tag    Flag     Cylinders        Size            Blocks
  1       swap    wu     246 -  731      128.14MB    (486/0/0)   262440
Enter partition id tag[swap]: 
Enter partition permission flags[wu]: 
Enter new starting cyl[246]: 
Enter partition size[262440b, 486c, 128.14mb]: 0
- 이제 루트 파일 시스템의 크기를 변경하십시오.
partition> 0
Part      Tag    Flag     Cylinders        Size            Blocks
  0       root    wm       3 -  245       64.07MB    (243/0/0)   131220
Enter partition id tag[root]: 
Enter partition permission flags[wm]: 
Enter new starting cyl[3]: 
Enter partition size[131220b, 243c, 64.07mb]: ?
                                              ^
                                              |
                              사용 가능한 전체 공간을 표시하려면 '?'를 입력
Expecting up to 2196180 blocks, 4067 cylinders, or 1072.35 megabytes
Enter partition size[131220b, 243c, 64.07mb]: 4067c         
                                                ^
                                                |
                                새 크기를 실린더 단위로 입력                    
- 새 슬라이스 구성을 표시하십시오.
partition> print
Current partition table (unnamed):
Total disk cylinders available: 4070 + 2 (reserved cylinders)
Part      Tag    Flag     Cylinders        Size            Blocks
  0       root    wm       3 - 4069        1.05GB    (4067/0/0) 2196180
  1 unassigned    wu       0               0         (0/0/0)          0
  2     backup    wu       0 - 4072        1.05GB    (4073/0/0) 2199420
  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
  8       boot    wu       0 -    0        0.26MB    (1/0/0)        540
  9 alternates    wm       1 -    2        0.53MB    (2/0/0)       1080
partition> 
- 이제 설정을 저장해야 합니다.
partition> label
Ready to label disk, continue? yes
- format 메뉴로 돌아가려면 quit를 입력하십시오. format 메뉴를 종료하려면 quit를 입력하십시오. 이제 ufs 파일 시스템으로 파일 시스템을 포맷해야 합니다. 다음 명령을 입력하면 컨트롤러 1, SCSI 대상 1, 슬라이스 0에 파일 시스템을 생성합니다.
# newfs /dev/rdsk/c1t1d0s0
newfs: construct a new file system /dev/rdsk/c1t1d0s0: (y/n)? y
- 끝으로 새 슬라이스를 마운트하여 검사하십시오.
# mount /dev/dsk/c1t1d0s0 /mnt
# cd /mnt
# df -k .
Filesystem            kbytes    used   avail capacity  Mounted on
/dev/dsk/c1t1d0s0    1028710       9  925831     1%    /mnt
제품 영역: 다른 플랫폼
제품: 구성
SUNOS 릴리즈: Solaris 2.x_x86
하드웨어: Intel X86

 

현재 작업중인 디렉토리를 프롬프트에 표시하는 방법.

INFODOC ID: 14980
개요: 현재 작업중인 디렉토리를 프롬프트에 표시하는 방법.
세부 설명:
KSH의 경우 사용자의 .profile 파일에 다음과 같이 입력하십시오.
   PS1='${PWD##*/}/ > '   # For partial pathname in the prompt.
   PS1='${PWD}/ > '       # For full pathname in the prompt.
---------------------------------------------------------------------------
CSH의 경우 .login 파일에 다음 중 한 가지를 입력하십시오.
   # For hostname and full pathname in the prompt.
   set prompt="`hostname`:$cwd % "
   alias cd 'cd \!*;set prompt="`hostname`:$cwd % "'
또는
   # For just the full pathname in the prompt.
   set prompt="$cwd % "
   alias cd 'cd \!*;set prompt="$cwd % "'
또는
   # For hostname and partial pathname in the prompt.
   set prompt="`hostname`:`basename ${cwd}` % "
   alias cd 'cd \!*;set prompt="`hostname`:`basename ${cwd}` % "'
또는
   # For just the partial pathname in the prompt.
   set prompt="`basename ${cwd}` % "
   alias cd 'cd \!*;set prompt="`basename ${cwd}` % "'
---------------------------------------------------------------------------
BOURNE 쉘의 경우: 
   Bourne 쉘(/bin/sh)에서 pwd로 변경하는 것처럼 PS1 프롬프트에서 변경하려면 계정의 .profile에 cd라는 새 함수를 생성하십시오.
   cd() { chdir $* ; PS1="`pwd` $ "; }
   이 cd 함수가 쉘에 내장된 cd 명령 대신 실행됩니다.
제품 영역: 유틸리티
제품: 쉘 스크립트
SUNOS 릴리즈: 모든 릴리즈
하드웨어: 모든 하드웨어
 

CDE: 화면 전원 관리를 변경하는 방법

INFODOC ID: 15531
개요: CDE: 화면 전원 관리를 변경하는 방법
세부 설명:
화면 보호기 시간 초과는 Xserver(즉, Xsun)의 기능입니다. 기본값은 10분이고 주기도 10분입니다. Xserver 매뉴얼 페이지에 다음과 같은 설명이 있습니다.
     -s minutes
화면 보호기의 시간 초과 시간을 분 단위로 설정합니다. 기본값은 10분입니다.
     -p minutes
        화면 보호기의 패턴 주기를 분 단위로 설정합니다. 기본값은 10분입니다.
     v       화면 보호기의 화면 끄기를 설정합니다. 이것이 기본값입니다.
     -v      화면 보호기의 화면 켜기를 설정합니다.
Solaris 2.6부터는 Xserver의 이 기능이 모니터의 전원 관리도 제어합니다. 모니터 전원을 관리하려면 화면 끄기를 설정해야 합니다. 이 Xserver 값은 로그인한 사용자가 xset 명령이나 CDE 스타일 관리자를 통해 변경할 수 있습니다. 이 설정값은 사용자가 로그인한 후에 CDE 환경에서 변경할 수 있습니다.
CDE 로그인 화면에서 Xserver가 작동하도록 하려면 다음 절차를 실행해야 합니다.
수퍼유저 권한으로,
1. /etc/dt/config/Xservers의 Xsun 행에 다음을 추가하십시오. (이 파일이 없으면 /usr/dt/config에서 복사하십시오.)
               -s  -p 
   전원 관리 기능을 비활성화하려면 -v를 추가하십시오.
   예를 들어, 다음과 같은 행이 됩니다.
:0   Local local_uid@console root /usr/openwin/bin/Xsun :0 -nobanner -s 5 -p 5
2. /etc/dt/config/Xconfig에 다음 행이 있는지 확인하십시오. (이 행이 없으면 /usr/dt/config에서 복사하십시오.)
               Dtlogin*terminateServer:   True
   그러면 사용자가 로그아웃한 후에 Xserver가 다시 시작되기 때문에 단계 1에 있는 Xservers 파일의 설명대로 기본값이 복원됩니다.
3. 구성 파일을 다시 읽도록 X Display Manager, dtlogin을 강제로 실행하십시오.
               /usr/dt/bin/dtconfig -reset
4. 로그 아웃하십시오.
Xserver 값은 로그인한 사용자가 xset 명령이나 CDE 스타일 관리자를 통해 변경할 수 있습니다. 이 설정값은 사용자가 로그인한 후에 CDE 환경에서 기본 CDE 구성이나 사용자 설정으로 변경할 수 있습니다.
제품 영역: Windows
제품: CDE
SUNOS 릴리즈: Solaris 2.6
하드웨어: 모든 하드웨어
 

정렬된 Openwin 작업 공간 배경를 사용자 정의하는 방법

INFODOC ID: 15546
개요: 정렬된 Openwin 작업 공간 배경를 사용자 정의하는 방법
세부 설명:
Solaris 2.3 이상에서 OpenWindows 작업 공간 정렬 배경을 사용자 정의하려면 다음 단계를 따르십시오.
1- 사용할 비트맵이 .xbm 형식인지 확인하십시오.
2- .xbm 파일을 다음 Openwin 패턴 디렉토리로 이동(mv 명령)하십시오.
   /usr/openwin/share/etc/workspace/patterns
   시스템 비트맵 파일이 모두 여기에 저장됩니다.
3- Openwin root 메뉴에서 "Properties..." 옵션을 선택하십시오. Properties 창이 나타납니다.
4- Category가 "Color"로 설정되어 있는지 확인하십시오.
4- "Pattern" 설정을 사용하여 사용자의 이미지를 선택하십시오.
   변경한 내용을 적용하십시오. 그러면 사용자의 OpenWindows 배경이 변경됩니다.
해결 방법 요약:
제품 영역: Windows
제품: OpenWindows
SUNOS 릴리즈: Solaris 2.x
하드웨어: 없음
 

유지 관리 작업 중에 사용자가 로그인하지 못하도록 하는 방법

INFODOC ID: 15788
개요: 유지 관리 작업 중에 사용자가 로그인하지 못하도록 하는 방법
세부 설명:
시스템 유지 관리 작업을 할 때 사용자가 로그인하지 못하도록 할 수 있습니까?
root 사용자로 /etc에 nologin이라는 파일을 생성하십시오.
로그인을 시도할 경우에 확인할 사용자를 이 파일에 입력하십시오.
nologin에 대한 매뉴얼 페이지에는 nologin 파일 사용법에 대한 자세한 설명이 없습니다. 또 Solaris 2.5에는 매뉴얼 페이지가 없습니다.
/etc/nologin 파일이 있을 경우, 사용자의 로그인 이름이 "root"가 아니면 로그인할 수 없습니다. (UID가 0인 다른 사용자도 로그인할 수 없습니다.)
이 기능은 Solaris 1.x 및 Solaris 2.5 이상에서만 사용할 수 있습니다.
해결 방법 요약:
제품 영역: 유틸리티
제품: UNIX 명령
SUNOS 릴리즈: Solaris 2.5
하드웨어: 없음

 

시작 파일을 추가하여 시스템 서비스를 추가하는 방법

INFODOC ID: 16253
개요: 시작 파일을 추가하여 시스템 서비스를 추가하는 방법
세부 설명:
시스템 서비스를 추가하기 위해 시작 파일을 추가해야 할 경우에는 다음 단계를 따르십시오.
1. 시작 파일 추가에 대한 예는 /etc/init.d/README 파일의 설명을 참조하십시오.
2. 기존 시퀀스 번호와 충돌하지 않도록 /etc/rc*d 디렉토리에 있는 시작 파일에 원하는 시퀀스 번호를 지정하십시오. 또 시작하는 서비스가 성공적으로 시작되기 위해 필요한 서비스가 먼저 나오도록 순서를 지정하십시오.
3. 시작 파일을 /etc/init.d 디렉토리에 넣고 시작할 서비스의 실행 레벨에 따라 필요한 /etc/rc*.d 디렉토리에 링크를 생성하십시오.
   # cd /etc/rc3.d
   # ln /etc/init.d/myfs S22myfs
해결 방법 요약:
제품 영역: 시스템 관리
제품: 부팅
SUNOS 릴리즈: Solaris 2.x
하드웨어: 없음

 

프로세스 주소 공간의 최대 크기

INFODOC ID: 16529
개요: 프로세스 주소 공간의 최대 크기
세부 설명:
프로세스 주소 공간의 최대 크기는 얼마나 됩니까?
대답:32비트 제한이 있습니다. 그러나 2.5 이하 버전에서는 한 프로세스의 주소 공간이 2GB로 제한됩니다.
Solaris 2.5.1의 경우, 103640-07 커널 패치로 제한을 수정하면 이론적으로 4GB까지, 실제로는 약 3.7GB까지 확장할 수 있습니다.
Solaris 2.6의 경우, 이론적으로는 4GB까지 프로세스 주소 공간이 확장되지만 실제로는 약 3.7GB로 제한됩니다.
제품 영역: 커널
제품: 일반
SUNOS 릴리즈: Solaris 2.x
하드웨어: 모든 하드웨어
 

부팅 시 CDE 시작을 명령행에서 시작하고 중단할 수 있습니까?

INFODOC ID: 16551
개요: 부팅 시 CDE 시작을 명령행에서 시작하고 중단할 수 있습니까?
세부 설명:
부팅 시 CDE 시작을 명령행에서 시작하고 중단하려면 어떻게 해야 합니까?
일반적으로 시스템을 부팅할 때 로그인 서버(dtlogin)가 자동으로 시작됩니다. 또 명령행에서 로그인 서버를 시작할 수도 있지만 먼저 root 사용자로 로그인해야 합니다.
-- 시스템을 부팅할 때 로그인 서버가 시작되도록 설정하려면 다음 명령을 입력하고 을 누르십시오.
               /usr/dt/bin/dtconfig -e
그러면 S99dtlogin 파일이 사용자의 /etc/rc2.d 디렉토리에 추가됩니다. 시스템을 다시 부팅하면 로그인 서버가 자동으로 시작됩니다.
-- 시스템을 부팅할 때 로그인 서버의 자동 시작을 비활성화하려면 다음 명령을 입력하고 을 누르십시오
               /usr/dt/bin/dtconfig -d
-- 명령행에서 로그인 서버를 시작하려면 다음 명령을 입력하고 을 누르십시오
               /usr/dt/bin/dtlogin -daemon
-- 로그인 서버, Xserver 및 전체 Solaris CDE 데스크탑을 중지시키려면 다음 명령을 입력하고 을 누르십시오
               /usr/dt/bin/dtconfig -kill
-- 명령행 세션 내에서(dtlogin이 실행되지 않아야 함) 다음과 같이 CDE를 시작하십시오.
               setenv XINITRC /usr/dt/bin/Xsession
               openwin
해결 방법 요약:
제품 영역: Windows
제품: CDE
SUNOS 릴리즈: 없음
하드웨어: 모든 하드웨어
 

root 암호를 모를 경우

INFODOC ID: 16786
개요: root 암호를 모를 경우
세부 설명:
다음 단계는 /etc/shadow 파일을 편집해서 root 암호를 고치는 방법입니다.
1)  Solaris 2.x CD-ROM을 CD-ROM 드라이브에 넣으십시오.
2)  드라이브에 CD-ROM이 있으면 stop-a 명령을 실행하십시오. 그러면 시스템이 중단되고 ok 프롬프트가 나옵니다.
3)  ok 프롬프트에서 Solaris 2.x 설치 CD-ROM을 사용해서 단일 사용자 부팅을 실행하십시오.  
      ok  boot cdrom -s
4)  "#" 프롬프트에서 시스템의 부팅 디스크(root 파일 시스템이 있는)를 찾아야 합니다.
    부팅 디스크에는 몇 가지 sun 아키텍처와 여러 가지 시스템 구성이 있습니다. 일반적으로 부팅 디스크는 대부분 컨트롤러 0(c0)에 설치되어 있습니다. 대부분의 경우, SCSI 대상은 3(t3) 또는 0(t0)입니다. Sun 시스템은 유연성이 좋기 때문에 부팅 디스크가 다른 위치에 있을 수도 있습니다. 부팅 장치의 위치를 결정해야 합니다.
    "#" 프롬프트에 다음과 같이 입력하십시오.
    # eeprom boot-device
    "disk" 또는 "disk1"처럼 간단하게 출력되거나 "/iommu/sbus/espdma@4,8400000/...../sd@3,0:a"와 같이 경로가 출력됩니다. 부팅 장치를 확인하십시오. 부팅 장치가 경로 이름인 경우에는(위와 같이) 사용자 설정 부팅 장치의 위치를 찾는 방법을 이 설명서에서 설명하지 않습니다. 그러나 대부분이 구성에서 쉽게 찾을 수 있습니다.
    "format" 명령을 실행하면 사용 가능한 디스크가 모두 표시됩니다.
    #format
    Searching for disks...done
    AVAILABLE DISK SELECTIONS:
           0. c0t0d0 
              /pci@1f,0/pci@1,1/ide@3/dad@0,0
    Specify disk (enter its number):
    여기서 format 명령을 종료하려면 d를 누르십시오.
    이제 시스템에 어떤 디스크가 있는지 알 수 있습니다. boot-device에 "disk"가 표시되고 format에 "c0t0d0"(일부 시스템에서는 "c0t3d0")이 표시되면 부팅 장치입니다. 또 boot-device에 "disk1"이 표시되고 format에 "c0t1d0"이 표시되면 부팅 장치입니다. format에 여러 디스크가 표시될 경우 "eeprom boot-device" 명령을 실행하면 부팅 디스크가 다음과 같이 표시됩니다.
    boot-device        format
    disk               c0t0d0 or c0t3d0 (machine dependant)
    disk1              c0t1d0
    disk2              c0t2d0
    disk3              c0t3d0 or c0t0d0 (machine dependant)
    and so on ....
    다음에는 시스템이 자연스럽게 다운된 것이 아니므로(root 암호가 없을 경우, Stop-a를 입력해서 시스템을 충돌시켜야 함) "fsck"를 실행해서 root 파티션(슬라이스)을 삭제해야 합니다. 또 fsck를 실행하면 슬라이스를 제대로 선택했는지도 확인할 수 있습니다.
    # fsck /dev/rdsk/cXtYd0s0
    여기서 X와 Y는 이전 절차에서 결정됩니다.
    슬라이스 0(s0)에 없는 root 파티션이 있을 수도 있지만 표준 구성은 아닙니다.
    "fsck"의 결과가 다음과 같이 출력됩니다.
    ** /dev/rdsk/c0t0d0s0
    ** last mounted on /
    ** Phase 1 .....
    .....
    두 번째 행, "** Last mounted on /" 명령을 실행하면 root fs 파티션을 정확하게 확인합니다.
    fsck에서 묻는 질문에 모두 "y"를 입력하십시오.
    고칠 항목이 너무 많으면 안됩니다. 그러면 root fs가 손상될 수 있습니다.
    fsck가 종료되면 root 파티션을 마운트할 수 있습니다.
      # mount /dev/dsk/cXtYd0s0 /a
      X와 Y는 fsck 명령의 경우와 동일합니다.
      예:
      # mount /dev/dsk/c0t0d0s0 /a
5)  root 프롬프트에서 다음 명령을 입력하십시오.
      # TERM=sun; export TERM
6)  다음 명령으로 /etc/shadow 파일을 편집하십시오.
       # vi /a/etc/shadow
7)  파일의 첫 번째 행을 수정해야 할 것입니다. 
    첫 번째 행은 다음과 같습니다.   
       root:c3.yAVmYodWsc:6445::::::
    이 행의 첫 번째와 두 번째 콜론 사이의 모든 문자를 삭제해야 할 것입니다. 완료되면 다음과 같이 됩니다.
       root::6445::::::
    문자를 삭제했으면 쓰기 강제 종료를 실행해서 vi를 종료하십시오. 명령 모드에서 다음과 같이 입력하십시오.
        :wq!
    그러면 문서가 종료되고 변경 사항이 저장됩니다.
8)  다음은 파일 시스템 마운트를 해제하는 단계입니다. 다음 명령을 수행하십시오.
        # cd /
       # umount /a                  
9)  마지막 단계는 시스템을 다시 부팅하는 것입니다. 로그인하라는 메시지가 나오면 로그인 이름을 입력하십시오. 자동으로 들어갈 수 있어야 합니다. 그런 다음 root 암호를 변경하십시오.
제품 영역: 시스템 관리
제품: 부팅
SUNOS 릴리즈: Solaris 2.x
하드웨어: 모든 하드웨어
 

CD-ROM으로 부팅할 때 패치를 설치하는 방법

INFODOC ID: 16790
개요: CD-ROM으로 부팅할 때 패치를 설치하는 방법
세부 설명:
1. root 사용자로 777 사용 권한의 임시 디렉토리에 압축된 패치를 풀어 넣으십시오.
2. 다음 명령을 실행해서 CD-ROM으로 부팅하십시오.
               # init 0                             >>>>> 부트 프롬프트로 이동.
               ok boot cdrom -s               >>>>> CD-ROM에서 단일 사용자 모드로 부팅.
3. 시스템이 시작되면 다음 명령을 실행하십시오.
               # df -k
Filesystem                      kbytes             used               avail               capacity               Mounted on  
/proc                              0               0               0               0%                   /proc 
dev/dsk/c0t3d0s0            7019               29534               40595               43%                 / 
/dev/dsk/c0t3d0g6               671222               456804               213673              69%                 /usr 
fd                                    0               0               0               0%                   /dev/fd 
/dev/dsk/c0t3d0sl           55047               11262               43730               21%                 /var 
/dev/dsk/c0t3d0s5          60591               11829               4802               20%                 /opt 
swap                              86116               400               85716               1%                   /tmp
현재 마운트된 파일 시스템이 표시됩니다.
4. /a에 액세스하기 위해 필요한 파일 시스템( /, /var, /opt, 및 /usr)을 마운트하십시오.
               # mount -F ufs /dev/dsk/c0t3d0s0 /a
               # mount -F ufs /dev/dsk/c0t3d0s1 /a/var
               # mount -F ufs /dev/dsk/c0t3d0s6 /a/usr
               # mount -F ufs /dev/dsk/c0t3d0s5 /a/opt
5. 압축을 풀어 넣은 패치가 있는 임시 디렉토리로 이동하십시오.
6. installpatch 스크립트를 실행하거나 -R 옵션을 사용해서 patchadd(2.6 이상) 명령을 실행하십시오. 
# ./installpatch -R /a 또는 # patchadd -R  /a
7. 스크립트가 실행되면 다음과 같이 표시됩니다. 
               # cd / 
               # umount /a 
               # umount /a/usr 
               # umount /a/var 
               # umount /a/opt
다시 부팅하십시오. 
               # init  6
제품 영역: 시스템 관리
제품: 패치 설치
SUNOS 릴리즈: Solaris 2.x
하드웨어: 모든 하드웨어

 

SunOS, Solaris 2.3부터 2.5.1까지 및 Solaris 2.6의 파일 크기 제한

INFODOC ID: 17075
개요: SunOS, Solaris 2.3부터 2.5.1까지 및 Solaris 2.6의 파일 크기 제한
세부 설명:
SunOS와 Solaris 2.3부터 2.5.1까지는 파일 크기를 2GB까지 지원합니다. 파일 안에 자체 오버헤드(inode 정보 등)가 포함되기 때문에 정확한 실제 크기는 2GB가 조금 안됩니다.
Solaris 2.6에서는 "largefile"을 도입해서 "제한을 높였습니다". 2.6의 largefile은 2GB와 1Tb(테라바이트) 사이의 파일을 의미합니다. 1TB가 Solaris 2.6의 파일 크기 제한입니다. 32비트 시스템에서 2GB 이상의 파일은 모두 largefile입니다.
2.6에서는 largefile을 사용해서 "large file aware" 및 "large file safe" 유틸리티를 도입했습니다. 자세한 설명은 largefile(5) 매뉴얼 페이지에 있습니다.
NFS 서버의 기능과 관계없이 아직 Solaris 2.6으로 업그레이드하지 않은 NFS 클라이언트는 2GB 파일 크기 제한보다 큰 파일을 처리하거나 읽을 수 없습니다.
largefile을 사용하기 위해 자세한 설명을 보려면 2.6 시스템 관리 설명서를 참조하거나 http://docs.sun.com 사이트를 방문하십시오.
제품 영역: 시스템 관리
제품: Disk admin
SUNOS 릴리즈: 모든 릴리즈
하드웨어: 모든 하드웨어
 
모든 dtterm이 역상 비디오를 열도록 CDE를 구성하는 방법
INFODOC ID: 17277
개요: 모든 dtterm이 역상 비디오를 열도록 CDE를 구성하는 방법.
세부 설명:
모든 dtterm이 역상 비디오에 열도록 사용자 단위로 CDE를 구성하려면 $HOME/.Xdefaults 파일에 다음 행을 추가하고 CDE를 종료했다가 다시 CDE에 로그인하십시오.
Dtterm*reverseVideo:    true
모든 dtterm에 이 구성을 사용할 경우:
1. /usr/dt/config/C/sys.resources 파일을 /etc/dt/config/C/sys.resources 파일로 복사하십시오.
2. 다음 행을 sys.resources 파일에 추가하고 로그아웃한 다음 다시 로그인하십시오.
   Dtterm*reverseVideo:    true
제품 영역: Windows
제품: CDE
SUNOS 릴리즈: Solaris 2.x
하드웨어: 모든 하드웨어
 
프론트 패널 표시 없이 CDE를 시작하는 방법
INFODOC ID: 17656
개요: 프론트 패널 표시 없이 CDE를 시작하는 방법
세부 설명:
프론트 패널을 표시하지 않고 CDE를 시작하려면 어떻게 해야 합니까?
다음과 같이 설정하면 dtwm 프론트 패널이 표시되지 않습니다. (dtwm은 CDE용 창 관리자입니다.)
    Dtwm*useFrontPanel:      False
$HOME/.Xdefaults 파일에서 이 자원을 설정할 수도 있고, /usr/dt/app-defaults/C/Dtwm 파일에 있는 기존 글로벌 자원을 "True"에서 "False"로 변경할 수도 있습니다. 이것을 설정하려면 /usr/dt/app-defaults/C/Dtwm을 /etc/dt/app-defaults/C로 복사한 다음 복사한 파일을 편집하십시오.
제품 영역: Windows
제품: CDE
SUNOS 릴리즈: Solaris 2.x
하드웨어: 모든 하드웨어

 

CDE에서 마우스 커서 이미지 변경하기

INFODOC ID: 17789
개요: CDE에서 마우스 커서 이미지 변경하기
세부 설명:
CDE 및 다른 모든 창 관리자에서 기본 마우스 커서 이미지를 변경하려면  "/usr/openwin/bin/xsetroot -cursor" 명령을 사용하고, 사용할 커서 비트맵과 커서 마스크 비트맵의 경로를 지정하십시오.
xsetroot 매뉴얼 페이지의 설명:
     -cursor cursorfile maskfile
이 명령을 사용하면 포인터 커서가 창을 벗어날 경우의 이미지를 원하는 대로 변경할 수 있습니다. 커서와 마스크 파일은 비트맵(작은 그림)이므로, bitmap(1) 프로그램을 사용해서 만들 수 있습니다. 마스크의 작동 원리를 이해할 때까지는 마스크 파일을 모두 검정색으로 사용할 것입니다.
CDE 및 다른 창 관리자에서 각 응용 프로그램이 자체 이미지를 사용해서 기본 마우스 커서 이미지를 재정의할 수 있습니다.
/usr/openwin/bin/bitmap 응용 프로그램을 사용하면 자신의 커서와 커서 마스크 비트맵을 그릴 수 있습니다. 이 응용 프로그램에 대한 자세한 내용은 bitmap 매뉴얼 페이지를 참조하십시오.
:
xsetroot -cursor /usr/openwin/share/src/xview/examples/dnd/arrow.bm
/usr/openwin
/share/src/xview/examples/dnd/arrow_mask.bm
제품 영역: Windows
제품: CDE
SUNOS 릴리즈: Solaris 2.x
하드웨어: 모든 하드웨어
 

VxFS 파일 시스템에 대한 할당량을 설정하는 방법

INFODOC ID: 17846
개요: VxFS 파일 시스템에 대한 할당량을 설정하는 방법 
세부 설명:
VxFS에 대한 할당량 설정
1. 파일 시스템의 마운트 포인트에 quotas라는 파일을 지정하십시오.
   #touch /mntpoint/quotas
2. 이 파일 시스템을 사용할 사용자에 대한 할당량 설정을 초기화하십시오.
   #vxedquota username (vi 편집기가 실행되고 할당량 설정이 표시됨)
   fs /mntpoint blocks (soft = 300, hard = 500) inodes (soft = 1000, hard = 2000)
   blocks는 1K 바이트 데이터 블록을 나타내고 inodes는 사용자가 가질 수 있는 inode 수를 나타냅니다(파일당 1 inode, 디렉토리당 1 inode를 가짐).
   soft 제한은 제한에 근접한 사용자에게 경고하는 데 사용되고, hard 제한은 절대적인 제한값입니다.
3. 이 파일 시스템에서 이 할당량 설정을 적용할 다른 사용자를 추가하십시오.
   vxedquota -p user1 user2 user3 user4 user 5 user6 ...
   이 명령을 사용하면 사용자 1에게 설정한 것과 동일한 할당량 제한이 사용자 2-6에게 설정됩니다(/etc/passwd 파일에서 사용자 이름을 원하는 대로 변경).
4. 사용자에 대한 할당량 설정을 확인하십시오.
   #vxquota -v username
5. 파일 시스템에 대한 할당량을 적용하십시오.
   #vxquotaon -v /mntpoint
   이제 할당량이 실행됩니다.
6. 지정된 할당량을 사용해서 파일 시스템을 마운트하도록 /etc/vfstab를 수정하십시오.
   /dev/dsk/c#t#d#s#   /dev/rdsk/c#t#d#s3   /mntpoint   vxfs   1   yes   quota
제품 영역: 번들을 제외한 SunOS
제품: VxFS
SUNOS 릴리즈: Solaris 2.x
하드웨어: 모든 하드웨어
 
 

로그인 전의 배너를 변경하는 방법(telnet, getty)

INFODOC ID: 17883
개요: 로그인 전의 배너를 변경하는 방법(telnet, getty)
세부 설명:
텔넷이나 터미널 세션에서 로그인 프롬프트 전에 자신이 원하는 로그인 메시지가 표시되도록 하려면 /etc/issue 파일만 편집하면 됩니다.
issue(4) 매뉴얼 페이지의 설명:
     /etc/issue 파일에는 로그인 프롬프트로 출력할 알림 메시지나 프로젝트 확인 정보가 포함됩니다. issue는 getty 프로그램을 사용해서 읽은 다음, lines 파일에서 호출되거나 재호출된 터미널에 기록하는 ASCII 파일입니다.
따라서 2.6 시스템에서는 텔넷에 다음과 같이 표시됩니다.
SunOS 5.6
<사용자가 지정한 메시지>
login:
제품 영역: 기타
제품: issue
SUNOS 릴리즈: Solaris 2.x
하드웨어: 모든 하드웨어

 

프레임 버퍼가 8비트 모드로 실행되는지 24비트 모드로 실행되는지 판단하는 방법

INFODOC ID: 17940
개요: 프레임 버퍼가 8비트 모드로 실행되는지 24비트 모드로 실행되는지 판단하는 방법
세부 설명:
프레임 버퍼가 8비트 모드로 실행되는지 24비트 모드로 실행되는지 판단하는 방법.
- #xdpyinfo | more 명령을 실행하십시오.
- "depth of root window:"라고 출력된 부분으로 내려가십시오.
- 표시된 "# planes"가 프레임 버퍼의 실행 비트 모드와 같습니다.
예를 들어, 다음 행은 프레임 버퍼가 24비트 모드로 실행되고 있음을 의미합니다.
 depth of root window:    24 planes
적용 대상: 하드웨어, 운영 체제/Solaris/Solaris 2.x
 

Solaris 7을 64비트 운영 체제로 실행하기

INFODOC ID: 18313
개요: Solaris 7을 64비트 운영 체제로 실행하기
세부 설명:
 
Solaris 7이 32비트 모드로 로드되어 실행되고 있습니다. flashprom 배너는 비활성화되었습니다. 따라서 flashprom을 업데이트하라는 스크립트가 표시되지 않습니다. 부팅할 때 64비트 운영 체제를 실행하려고 합니다.
다음과 같이 하십시오.
flashprom를 업데이트할 수 있도록 하려면 시스템 보드에서 쓰기 방지 점퍼를 옮겨야 합니다. 점퍼를 옮겨서 쓸 수 있게 하려면 해당 설명서를 참조하십시오. 다음 명령을 사용해서 단일 사용자 모드로 운영 체제를 부팅하십시오.
   boot -sw
flashprom 업데이트는 아키텍처에 따라 다릅니다. 업데이트 파일은 /usr/platform/`uname -i`/prom/`uname -i`에 실행 가능한 쉘 스크립트 형태로 되어 있습니다. (이 스크립트는 /etc/init.d/flashprom 스크립트에서 가져올 수 있습니다.)
프롬프트를 표시하려면 다음 스크립트를 실행하십시오.
   /sbin/sh /usr/platform/`uname -i`/lib/prom/`uname -i`
이 스크립트를 실행하면 프롬프트는 업데이트되지만, 64비트 부트 모드를 완료하려면 boot-file을 kernel/sparcv9/unix로 설정해야 합니다. eeprom 명령을 사용하여 OBP 환경 변수를 다음과 같이 설정하십시오.
    eeprom boot-file=kernel/sparcv9/unix
그런 다음 다시 부팅하십시오.
제품 영역: 시스템 관리
제품: 부팅
SUNOS 릴리즈: Solaris 7
하드웨어: 모든 하드웨어

 

SAR에서 자동 데이터 수집을 위한 cron 설정 방법

INFODOC ID: 18442
개요: SAR에서 자동 데이터 수집을 위한 cron 설정 방법
세부 설명:
SAR에서 자동 데이터 수집을 위한 cron 설정 방법
1. 수퍼유저 권한을 받으십시오.
2. vi 편집기에서 /etc/init.d/perf 파일을 여십시오.
다음과 같은 sadc 시작 명령을 찾으십시오. 이 명령이 있으면 행 앞에서 # 기호를 제거하여 주석 표시를 해제하십시오. 이 명령이 없으면 추가하십시오.  
다음 행에서 주석 표시를 제거하십시오.
               #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
 sadc 명령 버전은 카운터가 0으로 설정되는 시간(부팅 시간)을 의미하는 특수 레코드를 기록합니다.
sadc 명령의 출력은 sadd라는 파일에 기록되는데, 여기서 dd는 매일 시스템 작동 레코드로 사용되는 날짜입니다.
3.  vi 편집기에 시스템 crontab 파일을 여십시오.
               /var/spool/cron/crontabs/sys
다음 행을 입력하거나 주석 표시를 제거하십시오.
               0 * * * 0-6 /usr/lib/sa/sa1
               20,40 8-17 * * 1-5 /usr/lib/sa/sa1
첫 번재 항목은 일주일 내내 매시간 계속 /var/adm/sa/sadd에 레코드를 기록합니다.
두 번째 레코드는 작업량이 많은 업무 시간 동안 매시간 두 번씩 /var/aedm/sa/sadd에 레코드를 기록합니다(월요일부터 금요일까지 오전 8시부터 오후 5시 사이에 매시간 20분과 40분에).   필요하면 기본값을 변경하십시오.
4. 시스템을 다시 부팅하면 파일을 다시 읽어서 시작합니다.
적용 대상: 하드웨어, 운영 체제/Solaris/Solaris 2.x
 

Sun Webserver - Servlet 엔진의 heap 크기를 변경하는 방법

INFODOC ID: 18497
개요: Sun Webserver - Servlet 엔진의 heap 크기를 변경하는 방법
세부 설명:
SWS 2.1에서 servlet 엔진의 heap 크기를 변경하려면 어떻게 해야 합니까?
기본 heap 크기는 16 메가바이트입니다.
SWS 2.1에는 Servlet 엔진의 heap 크기를 설정하는 두 가지 구성 변수가 있습니다. 다음 두 변수를 사용해서 이 값을 설정할 수 있습니다.
               server_java_initial_heap_size  
        server_java_max_heap_size      
이 두 변수에 설정되는 값은 바이트 수입니다. 이 변수는 서버 구성 파일에만 나타나기 때문에 GUI를 사용해서 설정할 수 없습니다.
이 파일의 위치에서 위로 올라가서 "서버 블록" 아래에 있는 /etc/httpd/"name_of_server".httpd.conf 파일에 이 변수를 넣으십시오.
변경 사항을 적용하려면 서버를 다시 시작하십시오.
SWS 릴리즈 2.1 이상에만 이 매개변수가 적용됩니다!
제품 영역: 중단되지 않는 네트워크
제품: Sun Web Server
SUNOS 릴리즈: Solaris 2.x
번들을 제외한 릴리즈: 2.1
하드웨어: Sun 4
 

Java WebServer - Servlet을 참조하는 방법

INFODOC ID: 18502
개요: Java WebServer -  Servlet을 참조하는 방법
세부 설명:
Java WebServer에서 Servlet으로 사용할 자바 클래스 파일을 생성했습니다.
Java Web Server가 자바 클래스 파일을 참조할 때 이 파일을 찾도록 하려면 어떻게 해야 합니까?
CLASSPATH 변수가 ".class" servlet 파일의 위치를 지정합니다.
이 변수를 설정할 때는 다음 몇 가지 사항을 고려해야 합니다.
1) 시작할 때 또는 jserv 시작 스크립트에 서버를 지정하지 않으면, 전에 지정한 CLASSPATH 변수의 설정이 Java WebServer에 상속되지 않습니다. 아래에 예가 있습니다.
2) 웹 서버의 "bin" 디렉토리(예: /opt/JavaWebServer1.1.3/bin)에 있는 "httpd.nojre" 스크립트를 사용하면 전에 지정한 CLASSPATH 변수의 설정을 사용할 수 있습니다.
3) CLASSPATH 변수를 명확하게 설정하지 않아도 Java WebServer가 다음 기본 경로에서 .class 파일을 찾도록 설계되어 있습니다.
   Java home 디렉토리(예: /opt/JavaWebServer1.1.3) 아래 다음 디렉토리에서 찾습니다.
                              classes, servlets.
   Java Web Server의 home 디렉토리 아래 "classes" 디렉토리는 기본적으로 존재하는 디렉토리가 아니지만 관리자가 생성할 수 있습니다.
4) 경로의 구성요소가 다른 디렉토리에 대한 링크일 경우, CLASSPATH 변수가 링크를 해석해서 파일을 찾습니다.
5) 참조된 클래스가 다른 클래스를 인스턴스화할 경우에는 이 클래스도 CLASSPATH 변수에 있어야 합니다.
6) CLASSPATH 변수가 설정되면 이 변수에 설정된 디렉토리가 항목 2의 기본 디렉토리에 추가됩니다.
7) "servlets" 또는 "classes" 이외의 클래스 디렉토리 구성요소는 변경한 내용이 동적으로 로드되지 않습니다. 이렇게 다른 디렉토리에 있는 servlet의 변경 사항을 보려면, jserv를 다시 시작하거나 Java Web Server servlet 관리 창에서 직접 클래스를 로드해야 합니다.
아래 예는 /opt/JavaWebServer1.1.3/classes, /opt/JavaWebServer1.1.3/servlets 및/opt/JavaWebServer1.1.3/servlets/test 디렉토리에 액세스할 수 있도록 서버를 시작할 때 클래스 경로를 설정하는 방법입니다.
 
               jserv -classpath "/opt/JavaWebServer1.1.3/servlets/test" &
제품 영역: Java
제품: Java Web Server
SUNOS 릴리즈: Solaris 2.x
하드웨어: 모든 하드웨어

 

crontab 관리 및 사용

INFODOC ID: 3959
개요: crontab 관리 및 사용
세부 설명:
     crontab -e [ username ]                 # edit crontab file
     crontab -l [ username ]                 # list crontab file
     crontab -r [ username ]                 # remove crontab file
    crontab [ filename ]                    # copy to crontab file 
crontab 파일은 사전에 계획된 시간에 사용자 명령을 실행하기 위해 cron에 의해 사용됩니다.
crontab 명령은 지정된 사용자에 대한 crontab 파일을 편집하거나, 표시하거나, 제거하는 데 사용됩니다. root만이 [username] 매개변수를 사용할 수 있습니다.
옵션이나 매개변수 없이 crontab 명령을 실행하면 crontab 파일에 표준 입력을 기록합니다(아래 경고 참조).
crontab 파일의 형식은 다음과 같습니다. 
        Minutes Hours Date Month Day-of-Week command
설명:
        Minutes = [0부터 59까지]
        Hours   = [0부터 23까지]
        Date    = [1부터 31까지]
        Month   = [1부터 12까지]
        Day-of-Week = [0부터 7까지] (0과 7)=일요일, 1=월요일, 
          2=화요일, 3=수요일, 4=목요일, 5=금요일, 6=토요일,
        command = 스크립트 파일 또는 bourne 쉘 파일.
command를 제외한 모든 필드에 와일드 카드 문자(*)를 사용할 수 있고, 필드에 - 기호를 사용해서 범위를 지정할 수 있습니다.
         예:
                30 1 * 2,4,6,8,10,12 3-5 /usr/bin/wall /var/tmp/message 
이 명령은 2개월마다 수요일부터 금요일까지 1시 30분에 wall 명령을 사용해서 시스템의 모든 사용자에게 메시지를 전송합니다.
추가 설명:
경고
실수로 인수를 지정하지 않고 crontab 명령을 입력했을 경우, CTRL-D를 눌러 종료하지 마십시오. 그러면 crontab 파일의 모든 항목이 삭제됩니다. 대신 중지 문자(일반적으로 CTRL-C)를 눌러 종료하십시오.
일반적인 문제/일반적인 해결 방법, 질문/대답:
P: crontab 파일을 편집했지만 계속 실행되지 않습니다.
S: vi와 같은 텍스트 편집기로 직접 crontab 파일을 편집하면 안됩니다. crontab -e 명령을 사용하면 vi를 호출한 다음 변경된 내용을 cron에 알립니다.
P: crontab -e 명령을 사용해서 crontab 항목을 모두 삭제했지만 crontab -l 명령을 실행하면 삭제한 항목이 나옵니다.
S: crontab 파일을 모두 삭제하려면 crontab -r 명령을 사용하십시오. crontab -e 명령은 빈 파일을 처리하지 못하기 때문에 변경된 내용을 업데이트하지 못합니다.
Q: **** 편집기를 사용할 수 있습니까?
A: 예, 환경 변수 EDITOR를 ****으로 설정하면 됩니다.
Q: cron 작업이 중단될 때 전자 우편 메시지를 받는 것은 왜 그렇습니까?
A: 표준 출력 양식이 없기 때문입니다.
   이 메시지를 받지 않으려면 명령을 출력할 장치(/dev/console, /dev/null)나 파일을 지정하십시오.
P: 4.1 이전 시스템을 사용하고 있는데, 가끔 cron 작업이 두 번씩 중단됩니다.
S: 1022379에 대한 패치 100058-01을 전송하십시오.
Q: cron이 정상적으로 실행되고 있는지 확인할 수 있습니까?
A: crontab 파일에 "** * * * date > /dev/console" 항목을 추가하십시오. 그러면 매분마다 콘솔에 날짜가 출력됩니다.
고급 문제:
Q: cron을 사용할 수 있는 사용자를 제한할 수 있습니까?
A: /var/spool/cron/cron.allow 파일을 사용하면 cron 작업을 실행할 수 있는 사용자를 지정할 수 있습니다.
   /var/spool/cron/cron.allow 파일이 없으면 crontab이 /var/spool/cron/cron.deny 파일을 통해 작업을 실행할 수 없는 사용자를 확인합니다.
   두 파일 모두 없으면 root만이 cron 작업을 실행할 수 있습니다.
해결 방법 요약:
제품 영역: 시스템 관리
제품: cron
SUNOS 릴리즈: 4.0, 4.0.3, 4.0.3c, 4.1, 4.1.1, 4.1 PSR
하드웨어: Sun4, Sun3

du와 df가 다른 결과를 표시하는 경우

INFODOC ID: 4083
개요: du와 df가 다른 결과를 표시하는 경우
세부 설명:
"du"와 "df"가 사용된 전체 디스크 공간을 다르게 보고하는 것은 무엇때문입니까?
간단한 설명
다음 세 가지 이유로 du와 df가 서로 다른 대답을 표시할 수 있습니다.
  1. 파일 시스템에 필요한 fsck(1m)이 일정하지 않음.
  2. 파일 시스템에 없는 파일을 열어서 처리.
  3. 데이터가 포함된 디렉토리 마운트 포인트.
자세한 설명
위의 세 가지 가능성을 세부적으로 설명하기 전에 du와 df가 응답을 받는 방법을 알아야 합니다.
 . du는 파일 시스템에서 각 파일의 크기를 차례대로 확인하고 전체 크기를 기억합니다.
 . df는 파일 시스템에 대한 시스템 호출을 작성해서 여러 가지 상세정보를 요청하는데, 그 중 하나가 현재 사용된 디스크 공간입니다.
1. 파일 시스템에 필요한 fsck(1m)이 일정하지 않음.
   파일 시스템이 손상되거나 일정하지 않으면 du와 df가 다를 수 밖에 없습니다. 파일 시스템을 조사하는 프로세스(즉, du)에 의해 확인되는 결과는 실제 파일 시스템(즉, 쿼리 프로세스 df에 반환되는)과 일치하지 않습니다.
   손상되거나 일정하지 않은 파일 시스템은 fsck(1m)를 사용해서 고쳐야 합니다.
2. 파일 시스템에 없는 파일을 열어서 처리.
   실제로 파일과 관련된 디스크 블록을 삭제해도, 파일에 대한 마지막 "참조"가 제거될 때 다시 사용할 수 있도록 설정됩니다. Unix 프로세스가 파일을 열면 해당 파일에 대한 참조 수가 증가합니다. 나중에 파일 시스템에서 파일을 제거하면 프로세스가 파일을 닫을 때까지(close(2) 명령을 사용하든지 프로세스가 종료되든지) 데이터 블록은 사용할 수 있는 상태로 유지됩니다.
   이런 상태에서는 du 프로세스가 파일 시스템에 있는 파일을 확인할 수 없기 때문에 이 파일의 크기를 계산하지 않지만, df(파일 시스템에서 응답을 받는) 프로세스는 파일 시스템에 아직 이 파일이 있다는 것을 확인할 수 있습니다.
   프로세스가 파일을 닫으면(프로세스가 중단되거나 종료되거나 시스템이 다시 부팅되는 경우) 이 디스크 블록이 빈 공간 목록에 포함되므로 du와 df의 결과가 일치합니다.
3. 데이터가 포함된 디렉토리 마운트 포인트.
   파일 시스템은 디렉토리 맨 위에 마운트되기 때문에, 디렉토리 마운트 포인트에 데이터가 있으면 du 프로세스는 이 데이터를 확인할 수 없지만(마운트된 파일 시스템만 확인), 하부 파일 시스템에는 이 데이터에 대한 정보가 계속 유지됩니다. 따라서 df는 사용하고 있는 공간까지 추가해서 보고합니다.
   파일 시스템의 마운트를 해제하면 이 데이터를 확인할 수 있지만, 실행중인 프로세스가 마운트된 파일 시스템을 사용하고 있으면 마운트를 해제할 수 없습니다. 마운트 포인트 디렉토리를 확인하려면 프로세스를 찾아서서 중지시키거나(fuser(1m) 등) 다시 부팅하십시오(단일 사용자 모드에서).
제품 영역: 유틸리티
제품: UNIX 명령
SUNOS 릴리즈: 모든 릴리즈
하드웨어: 모든 하드웨어
Posted by 1010