Filesystem 만들기

새 디스크를 붙일 때 disksetup 명령어를 사용하는데, 보통 이때에 파일시스템을 만들어 버린다. 그러나 기존에 사용하던 파일시스템을 변경하고자 할때에는 mkfs란 명령어를 사용하여 파일시스템 종류를 변경시킬 수 있다. 파일시스템을 새로 만들면 사용하고 있던 데이터 구조가 변경되는 관계로 모든 데이터가 사용할 수 없게 되므로 반드시 데이터를 백업 받아 두어야 한다.

mkfs: vxfs 파일시스템

가장 일반적으로 vxfs 파일시스템을 만드는 형식은 다음과 같으며 다른 파라미터 값들은 안 주어도 디폴트로 적용된다.
# mkfs [-F vxfs] [-o specific_options] special size
-F vxfs 파일시스템을 vxfs 타입으로 한다는 의미이다.
-o bsize= 블록 크기를 주는 곳으로 디폴트는 1024이다. 2048,4096,8192 값을 줄 수
있다. 이 값은 파일시스템상에서 파일들에 대한 블록 크기이다. 큰 값을 줄수록
I/O 속도는 조금 향상되나 디스크 낭비가 보다 크다.
special 블록 디바이스에 대한 슬라이스 명을 준다.
size size는 prtvtoc 명령어로 정보를 보았을 때 맨 우측에 나타난 각 슬라이스
에 대한 length 값을 주면 된다.
[#] mkfs –F vxfs –o bsize=4096 /dev/dsk/c0b0t0d0s1 32768:

현재의 파일 시스템을 구성하는 데 사용된 명령어를 “-m” 옵션을 이용하면 알 수 있다.
[#] mkfs –F vxfs –m /dev/dsk/c0b0t0d0s1
mkfs -F vxfs -o ninode=65536,bsize=1024,version=4,inosize=256,logsize=1024,nola4

mkfs: ufs 파일시스템

형식은 vxfs의 경우와 같으나 옵션 사용이 조금 다르다.
[#] mkfs [-F ufs] [-o specific_options] special size
-F ufs ufs 파일시스템으로 만들라는 의미이다.
-o bsize= 블록 크기를 4096이나 8192가 사용되며 디폴트는 4096 이다.
cgsize= 실린더 그룹당 디스크 실린더의 수로, 1에서 32 값이 사용된다.
Cylinder group < 3/4 MB : 디폴트는 16
3/4 MB <Cylinder group < 1.5 MB : 디폴트는 12
Cylinder group > 1.5 MB : 디폴트는 8
cgsize 값을 적게 줄수록 inode 수가 증가한다. 수십 기가바이트의 파일시스템에서
지나치게 inode 수를 많이 만들면 fsck 명령어가 제어하는 한계가 있다. 부팅할 때
자동으로 파일시스템을 검사하는데 실패를 하게 되어 파일시스템에 깨어지므로
조심하여야 한다. 특별한 경우가 아니면 이 옵션은 사용하지 않는다.
special 블록 디바이스에 대한 슬라이스 명을 준다.
size size는 prtvtoc 명령어로 정보를 보았을 때 맨 우측에 나타난 각 슬라이스
에 대한 length 값을 주면 된다.
파일시스템 Troubleshooting

File system full

File system full이 발생하였을 때 find 명령어를 사용하여 필요한 파일을 찾아 조치할 수 있다. 일반 파일시스템이 차거나 루트 파일시스템이 꽉 차면 사용자나 시스템의 사용에 제한을 받는다. 시스템 관리자는 파일시스템이 꽉찬 원인을 찾아 파일을 지우거나 다른 곳으로 이동시켜야 한다. find 명령어를 이용하면 어느 정도 원인을 찾는데 도움이 된다.

find 명령어

아래의 예제에서 처럼, /는 루트 파일시스템을 찾으라는 의미이고 .을 줄때에는 현재 작업 디렉토리 즉 현재의 파일시스템을 기준으로 찾으라는 의미이다.
[#] find / -type f –size +40000 –xdev –print :
40000은 block 수이므로 20MB 이상의 파일을 찾으라

[#/] find path-list expression –print
[#/] find / -type f –size +40000 –xdev –print :
40000은 block 수이므로 20MB 이상의 파일을 찾으라
-xdev 찾을 범위가 리모트가 아닌 현재 시스템 내에만 국한 시킬 때
-name pattern pattern과 일치하는 파일을 찾아라
-user username /etc/passwd에 인증된 사용자 이름으로 등록된 파일
-type (fdl) f : 일반 파일, d: 디렉토리, l: 심볼릭 링크
-mtime n n 일 전에 수정한 파일을 찾을 때; 1은 오늘, 2 는 어제 수정한 파일
-atime n n 일 전에 액세스한 파일을 찾을 때; 1은 오늘, 2 는 어제 액세스한 파일
-size +-n +n : n block보다 큰 파일, -n: n block 보다 작은 파일

파일의 종류에 따라 수정되거나 안될 수도 있는데 이를 확인하기 위해 file 이란 명령어를 사용한다.
표시된 내용 중에서 text라 표시되는 파일들만이 대부분 R/W 가능하다.
[#/] file * : 현재 디렉토리 모두를 표시

특정 명령어를 실행하였는데 원인 모르게 에러가 날 때 그 원인을 찾고자 할 때 유용한 명령어로 truss를 사용한다. 이는 system call과 signal들을 대상으로 trace를 걸 때 사용한다.
[#/] truss [option] command : 현재 디렉토리 모두를 표시
-p process_id “ps –ef” 할 때의 PID 번호를 말한다
-a 각 exec system call에 전달된 argument string들을 보이라
-e 각 exec system call에 전달된 environment string들을 보이라
-f fork된 process들을 trace 걸 때
-t 주어진 call만 trace 걸 때
-o filename 출력을 파일로 보관할 때

[#/] truss –fa –o /tmp/aa find . –print : find에 대한 truss를 걸때
[#/] truss find –f –o /tmp/aa : find에 대한 truss를 걸때

truss 명령어를 사용하여 어떤 에러 메시지가 출력되면, strings란 명령어를 이용하여 binary program내에 특정 텍스트 스트링을 찾는데 유용하다.
[#/] strings [–a] [–o] [-number] filename
#strings –a –10 /usr/bin/mouseadmin

문제 있는 process가 발견되면 kill 명령어로 해당 프로세스를 제거해야 한다. 그러나 zombie같은 process들은 kill로도 제거되지 않는 경우가 많다. 이런 경우는 rebooting 해야지만 제거된다. 일반적으로 zombie 같은 process는 어플리케이션에 bug가 있을 때 주로 생기며 “ps –ef”를 하였을 때 “defunt”로 표시되는 process를 말한다.

#kill –9 pid

kill 이외에도 특정 사용자나 file, file system을 제어하는데 fuser 명령어를 사용해야 할 때도 있다.

기타

Pipes

파이프(pipes)란 말 의미를 생각해 보면 어느 한쪽과 다른 한쪽을 연결시켜주는 역할을 한다. 유닉스에서는 명령들을 서로 연결시켜주는 역할을 한다. 파이프의 기호는 “|” 이다. 수행과정은 파이프의 왼쪽 출력을 받아 파이프 오른쪽의 입력으로 사용하여 처리한다.

사용법

작업 디렉토리에 있는 파일들을 리스트하라는 ls 명령어의 표준 출력을 받아 그 갯수를 알아보자.
[#/]ls | wc -l
45

페이지 단위로 보여주는 more를 이용하면 리스트되는 내용을 쉽게 알아볼 수 있다.
[#] ls –al|more

리스트한 내용을 프린터로 출력하는 방법이다.
[#] ls –al| lp –d prt0

Filter

파이프는 일종의 필터의 한 종류로 기능을 한다. 연속적으로 진행되는 각각의 프로그램이 데이터를 갖고 어떤 연산을 처리한다고 하자. 이때 각 프로그램은 다음 프로그램으로 그 결과를 넘겨주기 전에 데이터를 필터시킨다. 연산들을 파이프처리하기 전에 데이터상에서 연산들을 수행하는 프로그램들을 종종 필터라 부른다.


Redirection

보통 명령어들의 표준 입력은 키보드가 된다. 여기서 입력이 가해지기 때문이다. 그리고 표준 출력은 화면이 될 것이다. 이때 표준 출력을 다른 곳으로 지정할 수 있는데 이를 리다이렉트라 한다. 즉 출력 방향을 재설정해 준다는 의미이다. 그래서 리다이렉션이란 다른 파일로부터 입력을 받거나 혹 출력시키는 방향을 지시한다는 의미로 사용된다.

가령 ls란 명령을 내렸을 때 그 결과가 화면에 표시된다. 그러나 아래와 같이 특정 파일로 저장할 수도 있다. 그러면 명령어의 결과가 화면에 뿌려주는 것이 아니라 /tmp/test.ls란 파일로 저장이 된다.
[#] ls –al > /tmp/test.ls

리다이렉션에는 몇가지 기호를 사용하는데, 리다이렉션 출력( >), 리다이렉션 입력(<), 파일에 추가(>>)가 이용된다.

Redirection Output : >

다음은 ls –al 한 표준 출력을 tmp란 파일의 입력으로 받아들이라는 명령이다. tmp 파일의 내용을 cat 명령어로 보면 크기가 0 바이트임을 알 수 있는데, 이는 처음에 ls –al 했을때 tmp 파일에는 아직 그 결과가 저장되지 않았기 때문이다. 그냥 ls –al 하면 결과 값이 저장되었기 때문이 크기가 잡혀 있다.
$ ls -al>tmp
$ cat tmp
………….
-rw-r--r-- 1 shchoi other 0 Dec 24 13:58 tmp
$ ls –al
………….
-rw-r--r-- 1 shchoi other 509 Dec 24 13:58 tmp

표준 출력을 받아들이는 > 의 오른 쪽에는 디바이스 드라이버 즉 프린터, 터미널, 테이프나 플라피 드라이버 일 수도 있다. 만약 lp1 이란 프린터를 사용하고 있다면 /etc/hosts란 파일 내용을 lp1 프린터로 출력시킬 수 있다. 물론 정상적으로 프린트하려면 ‘lp –d lp1 /etc/hosts’와 같은 방식을 사용하면 된다.
[#] cat /etc/hosts > /dev/lp1

또 banner 명령어를 이용하여 상대 터미널에 장난을 걸 수도 있다. 상대방 터미널은 who란 명령을 내리면 어느것이라는 것을 짐작할 수 있고 그 터미널이 pts010 이라면 아래와 같이 하면 작업 중이던 pts010 사용자는 깜짝 놀랄 수도 있다. vi로 작업중에 화면에 메시지가 뿌려지더라도 <CTRL+ l>하면 정상복구 된다.
[#] banner “Hey, what’s doing?” > /dev/pts010



Redirection Input : <

hello란 파일에 보내고자 하는 내용이 있다고 할 때, root 사용자가 shchoi 사용자에게 mail 명령어로 메시지를 전달해 보자. mail 명령어는 hello 파일을 입력 받아 shchoi 사용자의 터미널로 메시지를 보내게 된다.
[#] mail shchoi < hello


Adding to file : >>


File 특성

File Mode

‘ls –al’을 하였을 때 첫번째 항에는 10개의 문자(-rw-r--r--)가 있는데, 그 중에 맨 앞의 문자는 파일의 특성을 지칭한다.
-rw-r--r-- 1 shchoi other 480 Apr 4 1998 .cshrc

파일의 특성은 다음 중의 하나로 정의될 것이다:
d 파일이 디렉토리이다.
l 파일이 symbolic link이다.
b 파일이 block special file이다.
c 파일이 character special file 이다.
m 파일이 XENIX shared data (memory) file 이다.
p 파일이 fifo (named pipe) special file이다.
s 파일이 XENIX semaphore이다.
- 파일이 regular file 이다

File Permission

파일 사용에 대한 액세스 권한에 관하여 정의한 부분이다. 3 문자씩이 1 셋트로 세 그룹으로 나누어 진다.
rwxrwxrwx

file permission의 속성들에 관하여 알아보자:
r 읽을수 있는 파일
w 기록이 가능한 파일
x 실행이 가능한 파일
- 부여된 퍼미션이 없다.
l 액세스하는데 강제 락킹(mandatory file and record locking)이 발생한다. 그래서 한번에 한 사용자
만이 파일을 액세스 할 수 있다.
t 디렉토리에 있는 sticky bit를 설정한다. Sticky bit가 디렉토리에 설정되었을 때, 그
디렉토리에 있는 파일은 그 파일 소유자나 root 만이 삭제 할 수 있다.

세 그룹으로 구성되는데, 첫부분 3 문자는 사용자(user), 두번째 3 문자는 그룹(group), 마지막 세 문자는 다른 사용자(other)를 위한 부분이다.
-rw-r--r-- 1 shchoi dba 480 Apr 4 1998 test

가령 파일이 위와 같다면, test란 파일에 대하여 사용자는 shchoi이며 그룹은 dba에 속해 있다. 퍼미션과 관련하여, 사용자 shchoi는 test란 파일에 대해 읽고 쓸수 있는 권한은 있으나 실행시킬 권한은 없다(rw-). 그룹 dba중 shchoi 사용자를 제외한 dba 그룹에 속한 사용자는 이 파일에 대해 읽을 수 있는 권한만 있고 다른 권한은 없다(r--). 마지막으로 다른 사용자들은 읽을 수 있는 권한만 있다(r--). 만약 권한이 없는 사용자가 파일을 수정하려면 “permission denied”란 메시지를 보게 될 것이다.

Wildcard 사용

디렉토리나 파일 조작에 와일드 카드라는 특수한 문자를 이용하면 편리할 때가 있다.
? 단일 문자
* 임의의 문자 그룹
[ ] 하이픈(-)을 이용하여 문자들이나 범위를 표시

사용 예를 들어 보자.
현재 디렉토리에서 f로 시작하는 모든 파일을 리스트하라.
[#] ls –al f*

현재 디렉토리에서 k로 끝나는 모든 파일을 리스트하라.
[#] ls –al *k

현재 디렉토리에서 ? 갯수 만큼된 모든 파일을 리스트하라.
[#] ls –al ???

현재 디렉토리에서 file로 시작하고 끝이 1에서4로된 파일들을 리스트하라.
[#] ls –al file[1-4]

현재 디렉토리에서 s나 t로 시작하고 file이란 이름으로된 모든 파일을 리스트하라.
[#] ls –al [st]file




File 압축

파일들을 압축하면 파일을 전송하거나 백업 받을 때 그 데이터 량이 줄어들어 시간이 절약되어 효율적인 관리와 운용이 된다. 관련된 명령어들로는 compress, uncompress, zcat등이 있다.

compress 명령어

단순히 compress 명령어를 이용할 때에는 파일 한 개만 압축한다. uncompress도 압축을 풀지만 compress의 옵션 –d를 이용하면 압축을 풀 수도 있다. 해당 파일 이름에 대문자 Z를 가진 확장명 이름으로 생기며 원본 파일은 없어지고 압축된 파일 이름으로만 존재한다. 가령 menu란 파일을 압축한다고 하여보자.
[#] ls –al menu
-rw-r--r-- 1 shchoi other 1167 Dec 23 18:22 menu
[#] compress menu
[#] ls –al menu
-rw-r--r-- 1 shchoi other 708 Dec 23 18:22 menu.Z

임의의 디렉토리 밑에 있는 파일들 전체를 압축하고 할 때에는 wildcard 문자 *를 이용하면 가능하나 임의의 디렉토리밑에 있는 또다른 디렉토리가 있다면 이 디렉토리들은 압축하지 못한다. 여기에 있는 파일들만 압축한다면 압축하는 의미가 없을 것이다. compress 명령어는 디렉토리를 압축하지 못하는 예를 들어보자. 그러면 아래와 같이 에러가 발생한다.
[#] ls –al
drwxr-xr-x 4 shchoi other 96 Dec 28 15:00 file1
[#]compress file1
UX:compress: INFO: file1: -- not a regular file: unchanged

한 디렉토리밑에 있는 모든 파일과 디렉토리들을 압축하려면 tar나 cpio 명령어를 이용하여 한 개의 파일로 만들어 버린후에 압축한다면 가능하다. 지금부터 하는 작업은 test1 디렉토리밑에 있는 파일들과 디렉토리들을 압축한다고 하여보자.
$ test1> ls -al
drwxr-xr-x 2 shchoi other 96 Dec 28 14:59 subfile1
drwxr-xr-x 2 shchoi other 96 Dec 28 15:00 subfile2

다음은 tar를 이용하여 통 파일로 만들어 보자. .tar나 .cpio 확장명은 안 붙여도 이상은 없으나 나중에 무슨 포멧으로 만들었는지를 알아보기 위해 사용한 포멧명을 붙여주는 것이 좋다. 다음 tar와 cpio 각각에 대해 통파일로 만들어 보았다. 통파일 이름은 임의의 특성있는 이름으로 주면 된다. 그리고 마지막에 통파일로 만든 후에 위에서 언급한 한 개의 파일을 압축하는 방식을 사용하면 된다.

$ tar cvf tcomp.tar *
a subfile1/ 0 tape blocks
a subfile1/cake 1 tape block
a subfile2/ 0 tape blocks
a subfile2/hello 1 tape block
$ ls -al
drwxr-xr-x 2 shchoi other 96 Dec 28 14:59 subfile1
drwxr-xr-x 2 shchoi other 96 Dec 28 15:00 subfile2
-rw-r--r-- 1 shchoi other 20480 Dec 28 15:11 tcomp.tar
$ compress tcomp.tar
$ ls –al tcomp*
-rw-r--r-- 1 shchoi other 1616 Dec 28 15:11 tcomp.Z

$ find . -print|cpio -ocvB >tcomp.cpio
.
subfile1
subfile1/cake
subfile2
subfile2/hello
10 blocks
$ ls -al
total 12
drwxr-xr-x 4 shchoi other 96 Dec 28 15:21 .
drwxr-xr-x 3 shchoi other 1024 Dec 28 15:02 ..
drwxr-xr-x 2 shchoi other 96 Dec 28 14:59 subfile1
drwxr-xr-x 2 shchoi other 96 Dec 28 15:00 subfile2
-rw-r--r-- 1 shchoi other 5120 Dec 28 15:21 tcomp.cpio
$ compress tcomp.cpio
$ ls –al tcomp*
-rw-r--r-- 1 shchoi other 500 Dec 28 15:21 tcomp.cpio.Z

위의 결과를 비교해 보면 tar에 비해 cpio가 압축률이 더 좋음을 알 수 있다. 압축이 되면 파일 끝에 Z 확장명이 붙음을 알 수 있다. 압축을 푸는 방법은 다음과 같이 –d 옵션을 이용하고 압축된 파일 이름을 적어 주면 된다. 압축된 파일을 원하는 장소나 디렉토리로 이동시킨후 다음과 같은 방법으로 tar나 cpio 각각에 대해 압축을 풀어주면 된다.
$compress –d tcomp.tar.Z
$tar xvf tcomp.tar

$ compress –d tcomp.cpio.Z
$ cpio -icduvB < tcomp.cpio
.
subfile1
subfile1/cake
subfile2
subfile2/hello
10 blocks



uncompress 명령어

uncompress나 compress –d 명령어나 같은 결과를 얻는다. 사용하는 방법은 다음과 같다.

$ compress –d tcomp.cpio.Z
$ uncompress tcomp.cpio.Z

zcat 명령어

이 명령어도 압축을 푸는데 사용한다. 아래와 같이 cpio로 압축되어 있는 파일을 풀어보자.
$ ls –al tcomp*
-rw-r--r-- 1 shchoi other 501 Dec 28 16:11 tcomp.cpio.Z
$ zcat tcomp.cpio|cpio -icdvB
.
subfile1
Existing "subfile1/cake" same age or newer
subfile2
Existing "subfile2/hello" same age or newer
10 blocks

$ ls –al tcomp*
-rw-r--r-- 1 shchoi other 1619 Dec 28 16:15 tcomp.tar.Z
$ zcat tcomp.tar.Z|tar xvf -
x subfile1/, 0 bytes, 0 tape blocks
x subfile1/cake, 73 bytes, 1 tape block
x subfile2/, 0 bytes, 0 tape blocks
x subfile2/hello, 18 bytes, 1 tape block
2. psradm 명령어

간혹 여러개의 CPU의 튜닝을 원할시가 종종 있다.
그렇게 하려면 CPU 하나 하나 별로 튜닝을 해야 하는데 psradm명령어로
CPU의 상태를 Enable Disable할수 있다.

에제를 들어 설명 하겠다.

# psrinfo
0       on-line   since 11/06/01 02:23:05
2       on-line   since 11/05/01 13:01:57

두 CPU on-line mode라는 것을 확인 할수가 있다.
0번 ID 의 CPU를 잠시 off-line으로 바꿔 보자 ...
이렇게 하면 된다.

# psradm -f 0
# psrinfo
0       off-line  since 11/06/01 02:25:35
2       on-line   since 11/05/01 13:01:57

0번 CPU가 off-line으로 바뀐것을 알수 있다.
그럼 0번 CPU를 on-line으로 바꾸어 보자.

# psrinfo -n 0
# psrinfo
0       on-line  since 11/06/01 02:25:35
2       on-line   since 11/05/01 13:01:57

0번 CPU가 on-line 상태로 바뀐것을 확인 할수가 있듯이 psradm 명령어는
시스템 CPU 성능을 테스트 할때 많이 사용됨을 알수 있다.

썬 서버 지원 LCD모니터를 검색하다보니 많은 해상도 변경법들이 나와있었다.

그것들에 대해 필자가 마지막 최종버전을 내놓겠다.

일단 해상도에는 eeprom (ok prompt)와 Xwindow를 들수있다.



먼저 eeprom에서의 해상도 변경법을 들겠다.

ok printenv

라는 명령어를 치게 되면 eeprom의 파라미터들이 나오게 된다. 여기서 해상도 변경을 위한 부분은

output-device=screen

input-device=keyboard

이 두 부분이다.

여기서 screen은 기본 디폴트 해상도 1152x900x66의 해상도를 나타낸다.

일단 ok mode에서 해상도를 변경한다면 리부팅이 필요하다. 어차피 서비스도 중지가 된상태니 관계 없을것이다.

input의 경우는 종종 OS 올리면서 엔지니어분들이 ttya로 작업하시는 분들이 있다.

하지만 input-device가 키보드로 되어있지 않다면 ttya로 빠져서 eeprom의 화면이 안나오게 된다.

(키보드 꽂혀있을경우 Xwindow는 디스플레이됨)


변경법


ok setenv output-device screen:r1280x1024x60

ok setenv input-device keyboard


ok reset-all


이러면 eeprom의 해상도가 변경되고 디바이스 정보들이 올라오는 것이 보일것이다.


두번째 Xwindow 해상도 변경법


Xwindow는 그래픽카드에서 그 해상도는 핸들링한다.

그래서 OS가 부팅된 뒤에 그래픽 카드별로 설정을 해줘야한다.

root의 로그인 부탁한다.


그래픽카드 확인법


# prtconf -F


로 현재 콘솔 프레임 버퍼 디바이스를 출력하는 명령어로 디바이스 드라이버가 안올라오거나 활성화 되어있지 않은경우 (시리얼로 빠진경우)에는

Console output device is not a frame buffer

라는 메세지가 나오게 된다.


이 명령어로 그래픽 카드확인후 해상도를 변경해보자.


그래픽 카드별 명령어


ffb => ffbconfig

m64 => m64config

gfxp => GFXconfig

XVR-100 => fbconfig

csgi => 명령어 없음,eeprom 과 쉘로 변경해야한다.


그럼 이 명령어들로 현재 그래픽 카드 해상도는 확인해보자. 그래픽카드는 XVR-100으로 가정한다.


# fbconfig -prconf


이 명령어로 현재 Xwindow해상도를 확인한다.





이렇게 해상도 를 확인했다면...
현재 그래픽 카드가 인식한 모니터와 이 모니터에서 가능한 해상도 값이 나오게 된다.
위에는 회색으로 된 칸에 있는 내용이다.
여기서 변경 가능한 해상도 값이 안나오거나 내가 꼭 변경할 해상도 값이 안나온다면
http://sunsolve.sun.com 에서 현재 그래픽 카드의 최신 드라이버를 설치 한다.
patch이므로 쉽게 확인이 가능할것이다.
만약 잘 모르시겠다면 메일로 문의가 가능하다.ㅋㅋㅋ
필자도 먹고 살아야 하므로 영업적인 마인드에서 글 한구석에 이런 글을 남기는게 참 아쉽다.
이제 변경을 해보자.
# fbconfig -res 1280x1024x60
여기서 now옵션을 뒤에다 줄수 있다. 하지만 필자는 비추한다.
현재 그래픽 해상도와 틀리다면 화며이 깨지고 로그아웃이나 화면 재생이 불가능하게 될때도 있기 때문이다.
그래도 now옵션을 줬다면 그리고 예상대로 화면때문에 당장 제대로된 화면을 볼수 없다면
어차피 커어서는 터미날 안에 존재하므로.
이 명령을 실행한다.
# pkill -1 Xsession
이렇게 하면 Xsession을 재 시작 화면을 볼수 없다.
이렇게 하고도 Xwindow가 안올라올수 있다.
그렇다면 이때는 텔넷으로 접속을 하거나 시리얼로 붙어야 한다.
어느때나 리부팅은 항상 제일 빠른 길이다. ㅋㅋ
리부팅을 하지 않고 할수 있는 방법이 있다.
이 글의 가장 중요한 점, 키포인트, 핵심, 노하우가 될수있겠다.
일단은 하드웨어적으로 마우스 붙어있나 확인해보자.
Xwindow는 마우스가 핸들링 한다.
Xwindow에서 마우스가 없다면 무슨 필요가 있는가? 그렇지 않은가? 아니라고 하면 할말은 없다.
암튼 그렇기 때문에 Xwindow가 올라오지 않는다.
마우스도 잘 붙어있다면
Telnet으로 접속을 한다.
/usr/dt/bin/dtlogin stop
/usr/dt/bin/dtlogin start
으로 dt데몬을 다시 재 시작한다. 이렇게 해서도 안올라 온다면
/etc/rc2.d/S99dtlogin stop
/etc/rc2.d/S99dtlogin start
으로 다시 한번 재 시작을 한다.
이렇게 하면 리부팅을 할 필요 없이 시스템의 해상도를 변경할수있다.
이렇게 해서도 안된다면 곧바로 메일을 쓰도록 해라.
한시가 급하다면 메인 프로필에 있는 사이트로 가서 전화를 해라.
ssoon " 쑨 "을 찾으면 될것이다. ㅋㅋㅋ
K  eyboard ( 키보드 )
V  ideo ( 비디오 )
M ouse ( 마우스 )
그 단순하면서 어려운 해답을 쉽게 찾을 것이다.
[1] 기능

이 명령어는 시스템의 크래쉬 덤프(Crash dump) 환경 설정을 위하여 사용한다.
시스템의 크래쉬는 예기치 않은 이벤트(event)로 인하여 시스템에서 발생하는 치명적인 장애라 할 수 있다.
이때 장애를 일으키는 원인을 찾기 위해서는 시스템의 장애 발생 시점에서의 각종 상황을 이해해야 한다.
CPU에서 실행이 되어지는 프로세스는 무엇이고, 메모리에 있던 프로세스는,
각종 캐시에 있던 내용등에 대해서 상세한 정보가 필요하다.
이러한 정보들은 항상 메모리에 흔적이 남아 있다.
크래쉬 덤프란 이 메모리의 내용을 파일로서 받기 위한 방법이라 할 수 있다.

[2] 형식
  /usr/sbin/dumpadm  [ -nuy ]  [ -c content-type ]  [ -d dump-device ]
                     [ -m min k | min m | min% ] [ -s savecore-dir]
                     [ -r root-dir ]


[3] 상세 설명

dumpadm 프로그램은 시스템에서 크래쉬 덤프 기능을 설정하기 위한 시스템 어드민 명령어이다.
크래쉬 덤프는 잘못된 시스템 에러가 발생 하였을 때, 시스템의 물리적인 메모리의 내용을 디스크로 복사한다.
OS의 치명적인 에러가 발생할 때, 콘솔 창에는 에러에 대하여 메시지가 상세히 출력된다.
OS는 물리적 메모리의 내용을 사전에 정의된 덤프 디바이스(dump device-일반적으로 로컬 디스크 파티션을 사용한다.)에
쓰기를 함으로써 크래쉬 덤프는 활성화 되어진다. 덤프 디바이스는 dumpadm에 의하여 설정되어 진다.
OS의 에러는 OS의 버그(bug)에 의할 수 있으며, 디바이스 드라이버나, 로드러블(loadable) 모듈, 하드웨어의 실패 등이 있을 수 잇다. 1
이러한 경우가 발생 하였을 때, 크래쉬 덤프는 지원하는 엔지니어가 문제를 분석을 할 수 있는 정보 등을 제공한다.
시스템 크래쉬는 savecore 라는 유틸리트를 부팅하는 동안에 자동으로 실행 하여, 덤프 디바이스로부터
크래쉬 덤프를 복구한다. 이때 복구는 사용자의 파일 시스템에 unix.X, vmcore.X
형식의 파일로 쓰기를 실행한다.
X는 10진 양의 정수로서, 처음 생성이 되면 0, 두 번째 생성이 되면 1 등의 번호를 순서적으로 갖게 된다.
저장되어지는 디렉토리는 dumpadm에 의하여 설정되어 진다.
기본적으로는 /var/crash/server_name이 된다.

기본적으로 덤프 디바이스는 스왑(swap) 파티션으로 설정되어 있다.
스왑 파티션은 OS에서 가상 메모리을 내용을 백업 저장하기 위하여 예약된 디스크의 파티션이다.
그러나, 덤프 하기 위하여 있는 데이터는 덮어쓰기가 되어버릴 수 있으므로 영구적이지 못하다.

다음은 아무런 옵션 없이 dumpadm 을 실행한 결과이다.
# dumpadm
        Dump content: kernel pages
        Dump device: /dev/dsk/c0t0d0s1 (swap)
 Savecore directory: /var/crash/cyber
   Savecore enabled: 예

옵션 없이 실행을 하게 되면, dumpadm은 크래쉬 덤프를 위하여 현재 시스템에 설정 되어 있는 내용을 출력한다.
위 결과의 내용은 다음과 같다.
덤프를 할 내용은 “kernel”이고, 현재 덤프 디바이스는 /dev/dsk/c0t0d0s1(swap)이고,
나중에 파일로서 저장되어지는 디렉토리의 경로는 /var/crash/cyber이며,
savecore는 시스템 부팅 시 자동으로 하게끔 enable 상태로 되어 있다.

[4] 옵션

 
[표1] dumpadm 명령어의 옵션
-c content-type- 덤프 되어지는 덤프 내용
    -content-type
    kernel     커널 메모리 페이지만 덤프
    all     모든 메모리 페이지를 덤프
-d dump-device- 덤프 디바이스는 절대 경로
- /dev/dsk/cNtNdNsN 형식으로 기술처음에 시스템이 구성될 때 dumpadm은      swap을 기본 디바이스로 사용하고 있으며, 그대로 사용하는 것이 일반적이다.
-m min k | min m | min%- 현재의 savecore를 할 디렉토리를 가지는 파일 시스템의 공간이 부족할 경우 프리 공간(free space) 범위 내에서만 생성이 되도록 설정

min 은 다음의 인수를 가진다.
    k     Kbyte 단위로 파일 저장
    m     Mbyte 단위로 파일 저장

          - %은 minfree 값이 savecore 디렉토리를 포함하는 파일 시스템이 현재 전체크기의 주어진 퍼센트(%)로서 계산되어진다.
-n시스템 리부팅 시에 자동으로 savecore를 실행하지 않는다.(거의 사용하지 않음)
-r root-dirdumpadm이 생성하는 상대적인 경로는 /(root)에서 찾는다. 기본적으로 /로 설정 되어 있으므로, 변경을 하지 않는다.
-s  savecore-dirsavecore 유틸리트에 의하여 저장되어지는 디렉토리의 절대적인 경로를 표시한다. 기본 경로는 /var/crash/server_name이며, 시스템 관리자는 이를 여가 많은 다른 파일시스템의 디렉토리로 변경 할 수 있다.
-u/etc/dumpadm.conf 파일을 강제적으로 업데이트하기 위한 옵션이며, 시스템이 리부팅(rebooting) 되어 질 때, veore 시작 스크립트에 의해서만 사용되어진다.
-y시스템 리부팅 시에 자동으로 savecore를 실행한다. 기본적으로 설정되어 있는 옵션




[5] 예제

예제1] 덤프 디바이스의 변경
# dumpadm -d /dev/dsk/c0t1d0s7
        Dump content: kernel pages
        Dump device: /dev/dsk/c0t1d0s7 (dedicated)
        Savecore directory: /var/crash/cyber
        Savecore enabled: 예


이때 /dev/dsk/c0t1d0s7 파티션은 마운트되어 사용하는 파일 시스템이 아니어야 한다.

예제2] savecore 디렉토리 변경
# dumpadm -s /home88/lsi
       Dump content: kernel pages
       Dump device: /dev/dsk/c0t0d0s1 (swap)
       Savecore directory: /home88/lsi
       Savecore enabled: 예

savecore할 디렉토리가 /var/adm/cyber에서 /home88/lsi로 변경되었다.
이후 save 유틸리트는 크래쉬 덤프 파일들을 /home88/lsi 디렉토리로 저장할 것이다.

[6] /etc/dumpadm.conf 파일
이 파일은 dumpadm 명령어에 의해서 크래쉬 덤프에 대한 내용이 변경이 될 경우 자동으로 업데이트 되어진다.
예를 들어, 다음과 같이 savecore 디렉토리를 변경하면, 이 파일의 내용도 다음과 같이 바뀌게 된다.

# dumpadm -s /home88/lsi
       Dump content: kernel pages
       Dump device: /dev/dsk/c0t0d0s1 (swap)
       Savecore directory: /home88/lsi
       Savecore enabled: 예

# more /etc/dumpadm.conf
#
# dumpadm.conf
#
# Configuration parameters for system crash dump.
# Do NOT edit this file by hand -- use dumpadm(1m) instead.
#
DUMPADM_DEVICE=/dev/dsk/c0t0d0s1
DUMPADM_SAVDIR=/home88/lsi
DUMPADM_CONTENT=kernel
DUMPADM_ENABLE=yes

그리고, 크래쉬 덤프를 위하여 사용하는 디바이스는 /dev/dump 라는 디바이스 파일을 이용한다.
이 어드민 명령어는 Soalris 7이상에서만 지원이 됩니다.

* 출처 : http://blog.empas.com/vision22c/1027356
[개요]
IPMP 기능 이해
IPMP 관련 화일및 명령어 이해
IPMP 설정 및 테스트


[설명]
솔라리스 8부터 새로이 추가된 기능중 하나인 IPMP(IP MultiPathing)는
솔라리스의 core package인 SUNWcsr에 포함되어 있다.
IPMP는 하나의 시스템이 여러개의 NIC(Network Interface Card)를  사용할때
네트웍 카드들을 그룹핑을 하여서 그중 하나의 네트웍 카드가 failure 되었을때
이를 검사하여 정상적인 네트웍 카드로 failover해주는 기능이다.
그러므로써 네트웍 서비스를 제공하는데 있어서 네트웍 카드의 장애로 생기는
네트웍 장애 문제를 극복할 수 있는 안정적인 환경을 구성해 줄 수 있다.
또한 failback 기능을 가지고 있는데 이는 장애가 발생한 네트웍 카드를 복구한 후
관리자가 메뉴얼하게 네트웍 카드의 설정을 하지 않아도 자동으로 이전 설정으로 돌려주는 기능이다.
IPMP 설정 방법으로는 크게 두가지가 있다. Standby NIC를 가지는 환경과 그렇지 않은 환경이다.
Standby NIC란 네트웍 서비스를 일반적으로 하지 않는 NIC를 하나 설정하여
실제 서비스중인 NIC의 failover에 집중적으로 책임을 지는 인터페이스이다.
이것이 Standby NIC를 가지고 IPMP를 설정하는 것이다.
Standby NIC를 가지지 않는 환경이란 그룹에 있는 NIC들이 네트웍 서비스를 각각 하고 있다가 
그룹내 NIC 하나가 failure가 발생하면 남아있던 정상의 NIC로 failover하는 것이다.
IPMP를 설정하는데 있어서 Standby를 갖는냐 갖지 않는냐의 가장 큰 차이는
failover를 할 수 있는 대상 NIC 차이이다.
Standby NIC는 Standby가 아닌 다른 NIC의 failover를 제공하지만 반대는 할 수 없다.
즉, Standby가  아닌 NIC는 Standby NIC의 failure에 대해 failover를 하지 않는다.
Standby NIC가 없이 NIC들을 모두 active path로 잡아주는 환경은 그룹에 있는
NIC들이 어떤것이든 서로를 failover하며 서비스 해 줄 수 있다.
아래의 Lab에서는 Standby NIC를 두는 IPMP 환경 설정과 그렇지 않는 설정에 대해 설명할것이다.


IPMP 구현 관련 명령어와 파일

1. in.mpathd : IPMP의 main control daemon이다. NIC를 그룹핑하는 Ifconfig 명령어를 실행하면 
실행하는 프로세스로써 그룹내에 있는 네트웍 카드가 failure가 발생했는지 검사하여
정상적인 네트웍 카드를 failover를 시켜주고 failback을 시켜주는 프로세스이다.
이때 in.mpathd가  failover, failback을 하기위해 (NIC를 테스트하기 위해) 사용하는
logical interface가 필요한데 이것이  test interface이다. test interface는 failover하지 않는다.
단지 테스트를 위한 virtual interface이다.
참고로 Standby interface는 test interface 형태로만 설정한다.
하지만 그룹내 NIC들이 모두  active한 환경이라면(즉 Standby NIC를 가지지 않는 설정) NIC들은
public한 ip address와 test를 위한 ip address 모두를 갖도록 설정해야한다.

2. /etc/default/mpathd : in.mpathd의 configuration file이다.
예를 들어 in.mpathd가 그룹내 NIC들의 failover를 체크할 시간 간격을 정의하는
파라메터등을 설정하는 화일이다.

3. ifconfig : 너무나 잘 알고 있듯이 네트웍 카드 설정을 해주는 명령어이다.
예를 들어 ip address나 netmask등을 설정해주는 명령어이다.
그러한 기본 기능뿐만이 아니라 IPMP를 설정시에도 그룹을 지정하거나 테스트 NIC를 설정하는데 사용된다.
IPMP 설정에 관련있는 ifconfig 명령어들의 옵션이나 아규먼트 몇 가지를 살펴보자.
group : IPMP failover를 할 그룹을 설정한다.
deprecated -failover : test interface 에 설정하는 옵션
addif : test interface 이면서 active path 를 가지고 있으면서 test interface를 add 하기 위해
사용하는 아규먼트
standby : active path를 갖지 않는 standby test interface 를 설정하는 아규먼트

Implementation
아래의 구현 내용은 IPMP를 설정하는 방법으로 첫째로 standby를 사용하지 않고 두 NIC가
모두 active하게 서비스를 할 수 있는 상태로 만든후 failover, failback을 하는 내용이다.
두번째 구현의  내용은 standby를 사용하는 테스트의 예이다.

1. Standby 없이 dual active path 의 IPMP설정 및 확인
[설정]
host1#eeprom local-mac-address?
local-mac-address?=false
host1# eeprom local-mac-address?=true

--> 각 interface의 ethernet address를 달리 설정하기 위한
eeprom parameter를 true로 설정

host1# eeprom local-mac-address?
local-mac-address?=true 
host1# ifconfig ge0 unplumb
host1# ifconfig ge1 unplumb
host1# ifconfig ge0 plumb 192.168.0.86 group testgrp2 up

host1# ps -ef|grep mpath
root 477 1 0 17:18:09 ? 0:00 /sbin/in.mpathd

host1# ifconfig ge0 addif 192.168.0.87 deprecated -failover up
---> test interface 설정 . Created new logical interface ge0:1

host1# ifconfig -a
lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ge0: flags=1000843 mtu 1500 index 6
inet 192.168.0.86 netmask ffffff00 broadcast 192.168.0.255 3
groupname testgrp2
ether 8:0:20:c0:ff:ec
ge0:1: flags=9040843
mtu 1500 index 6
inet 192.168.0.87 netmask ffffff00 broadcast 192.169.0.255

host1# ifconfig ge1 plumb 192.168.0.88 group testgrp2 up
host2# ifconfig ge1 addif 192.168.0.89 deprecated -failover up
--> test interface설정 . Created new logical interface ge1:1

host1# ifconfig -a
lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ge0: flags=1000843 mtu 1500 index 6
inet 192.168.0.86 netmask ffffff00 broadcast 192.168.0.255
groupname testgrp2
ether 8:0:20:c0:ff:ec
ge0:1:
flags=9040843
mtu 1500 index 6
inet 192.168.0.87 netmask ffffff00 broadcast 192.168.0.255
ge1: flags=1000843 mtu 1500 index 7
inet 192.168.0.88 netmask ffffff00 broadcast 192.168.0.255
groupname testgrp2
ether 8:0:20:c0:ff:ec
ge1:1:
flags=9040843
mtu 1500 index 7
inet 192.168.0.89 netmask ffffff00 broadcast 192.168.0.255


Failover 테스트
다른 호스트 host2 로부터 192.168.0.88 번으로 ping을 날리고 host1은 그러는 중간에
ge1에 장애를 일으켰다. lab에서는 네트웍 포트를 뽑아버렸다
host2# ping -s 192.168.0.88
PING 192.168.0.88: 56 data bytes
64 bytes from host1 (192.168.0.88): icmp_seq=0. time=0. ms
64 bytes from host1 (192.168.0.88): icmp_seq=1. time=0. ms
64 bytes from host1 (192.168.0.88): icmp_seq=2. time=0. ms
64 bytes from host1 (192.168.0.88): icmp_seq=3. time=0. ms
64 bytes from host1 (192.168.0.88): icmp_seq=4. time=0. ms
64 bytes from host1 (192.168.0.88): icmp_seq=5. time=0. ms
.
.
.
64 bytes from host1 (192.168.0.88): icmp_seq=14. time=0. ms
64 bytes from host1 (192.168.0.88): icmp_seq=15. time=0. ms

위의 결과에서 보듯이 중간에 잠시 멈추는 부분이 보이는데 이때 host1의 ge1이 장애를 일으켰다.
하지만 잠시 시간이 흐른 후 계속 ping 이 잘 진행되는 것을 확인할 수 있다.
host1에서 IPMP설정에 의해 failover가 되는 것이다.
이러한 테스트는 ge0에 장애를 일으켜도 마찬가지로 ge1으로 failover 된다.
그럼 host1쪽의 failover된 환경을 확인해 보자.


host1# ifconfig -a
lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ge0: flags=1000843 mtu 1500 index 6
inet 192.168.0.86 netmask ffffff00 broadcast 192.168.0.255
groupname testgrp2
ether 8:0:20:c0:ff:ec
ge0:1:
flags=9040843
mtu 1500 index 6
inet 192.168.0.87 netmask ffffff00 broadcast 192.168.0.255
ge0:2: flags=1000843 mtu 1500 index 6
inet 192.168.0.88 netmask ffffff00 broadcast 192.168.0.255
ge1: flags=19000842
mtu 0 index 7
inet 0.0.0.0 netmask 0 groupname testgrp2
ether 8:0:20:c0:ff:ec
ge1:1:
flags=9040843
mtu 1500 index 7
inet 192.168.0.89 netmask ffffff00 broadcast 192.168.0.255



Failback 테스트
ge1을 복구한 후 얼마 지나지 않아 자동으로 failback 하는 것을 확인할 수 있다.
아래의 내용은 failback을 한 후의 host1의 네트웍 카드 설정을 보면 이전 상태로
돌아가 있는 것을 확인할 수 있다


host1# ifconfig -a
lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ge0: flags=1000843 mtu 1500 index 6
inet 192.168.0.86 netmask ffffff00 broadcast 192.168.0.255
groupname testgrp2
ether 8:0:20:c0:ff:ec
ge0:1:
flags=9040843
mtu 1500 index 6
inet 192.168.0.87 netmask ffffff00 broadcast 192.168.0.255
ge1: flags=1000843 mtu 1500 index 7
inet 192.168.0.88 netmask ffffff00 broadcast 192.168.0.255
groupname testgrp2
ether 8:0:20:c0:ff:ec
ge1:1:
flags=9040843
mtu 1500 index 7
inet 192.168.0.89 netmask ffffff00 broadcast 192.168.0.255

/etc/hostnanme. 설정 내용
# cat /etc/hostname.hme0
192.168.10.215 broadcast + netmask + up group test  \
addif 192.168.10.216 -failover  deprecated netmask + broadcast + up
# cat /etc/hostname.hme1
192.168.10.217 broadcast + netmask + up group test  \
addif 192.168.10.218 -failover  deprecated netmask + broadcast + up
# isainfo ―v
64-bit sparcv9 applications
32-bit sparc applications

*** 조재구 강사님의 다음OS SCHOOL에서 퍼온 글입니다. ***


현재 모니터의 해상도를 바꿔 주는 방법입니다.
이 방법은 m64B 라는 그래픽 카드의 설정 방법입니다.

1. m64 그래픽 카드가 존재 하는지 확인 합니다.

[/]# prtconf | grep  -i  m64
SUNW,
m64B, instance #0        <==  이시스템은 m64B 그래픽 카드를 인식하고 있습니다.

2. 카드가 존재하면 커널 모듈이 있는지 확인합니다.
[/]# modinfo | grep m64
51  1027acd1  b6b8  202  1  m64 (m64.c 8.20 Jul 30 2001 12:11:41)

3. 아래의 명령으로 현재 카드에 설정 정보를 확인 합니다.
[/]# m64config  -dev  /dev/fb  -propt

--- OpenWindows Configuration for /dev/fb ---
OWconfig: machine
Video Mode: not set          <==  화면크기정보를 보여줌
Depth: not set                   <==  화면의 색상 (8bit or 24bit)

4. 현재 시스템이 사용할 수 있는 크기와 Hz 확인합니다.
(%%참고로 아래 출력된 결과물은 < 가로픽셀X세로픽셀Xhz >로 표시 됨 )

[/]# m64config -dev /dev/fb  -res \?
Valid values for  -res  option are:
720x400x70 [2]
720x400x85
640x480x60
640x480x67 [2]
640x480x72
640x480x75
800x600x56
800x600x60
800x600x72
800x600x75
832x624x75 [2]
1024x768x87 [2]
1024x768x60
1024x768x70
1024x768x75
1280x1024x75
1024x768x85 [1]
800x600x85 [1]
640x480x85 [1]
1280x1024x60 [1]
1152x900x66
1152x900x76
1280x1024x67
1600x1280x76 [1]
1920x1080x72 [1]
1280x800x76 [1]
1440x900x76 [1]
1600x1000x66 [1]
1600x1000x76 [1]
1920x1200x70 [1]
1280x1024x85 [1]
1280x1024x76 [3]
1152x864x75 [1]
1600x1200x75 [1]
1600x1200x60 [1]
1024x768x85 [1]
800x600x75
640x480x85 [1]
vga
svga
1152
1280
800x600
1024x768
1280x1024
1152x900
1600x1280 [1]
1920x1080 [1]
1600x1000 [1]
1920x1200 [1]
1600x1200 [1]

Notes:
[1] monitor does not support this resolution.
[2] card does not support this resolution.
[3] current resolution.

(% 바로 위의 출력내용중에
[1] 이면 설정할 모드는 모니터에서 지원하지 않음.
[2] 이면 m64B 카드(비디오 카드) 에서 지원하지 않음.
[3] 현재 설정되어 있는 모드임
아무런 내용이 없으면 설정이 가능한 모드임 )


==> 위의 출력된 내용에서 현재 시스템에 설정되어있는 정보는 1280x1024x76
이며 해상도를  800X600X75 로 바꿔봅니다.

5. 해상도를 설정 합니다.

[/]# m64config  -dev  /dev/fb  -res  800x600x75

6. 시스템을 rebooting 합니다.

[/]# reboot

7. 시스템이 부팅후 정상적으로 설정 되었는지 확인 합니다.

[/]# m64config -dev /dev/fb -propt
--- OpenWindows Configuration for /dev/fb ---
OWconfig: machine
Video Mode: 800x600x75
Depth: not set

---------------------- 해상도 변경법 2번째 글 -------------------------------------
1. VGA 카드 종류 확인
# prtconf -F
/SUNW,ffb@2,0:ffb0

2. vga 카드 관련 명령어 확인
# ls -l /usr/sbin/*config
lrwxrwxrwx 1 root root 9 2002년 8월 29일 /usr/sbin/GFXconfig -> pgxconfig*
-r-sr-xr-x 1 root bin 61508 1999년 12월 9일 /usr/sbin/afbconfig*
-r-xr-xr-x 1 root bin 27928 2000년 1월 6일 /usr/sbin/auditconfig*
-r-xr-xr-x 1 root bin 18968 2000년 3월 30일 /usr/sbin/bdconfig*
-r-xr-xr-x 1 root bin 184 2001년 5월 25일 /usr/sbin/dhcpconfig*
-rwxr-xr-x 7 root sys 71064 2001년 9월 13일 /usr/sbin/drvconfig*
-r-xr-xr-x 1 root bin 13552 2001년 6월 28일 /usr/sbin/fbconfig*
-r-sr-xr-x 1 root bin 58980 1999년 12월 9일 /usr/sbin/ffbconfig*
-r-r-sr-xr-x 1 root bin 28832 2001년 8월 15일 /usr/sbin/m64config*
-r-sr-xr-x 1 root bin 89780 2001년 8월 15일 /usr/sbin/pgxconfig*
-> 뭐 대충 보면 pgxconfig 라든지 m64config ffbconfig 등과 같은 명령이 그래픽 관련 명령입니다.
-> 여기서 ffb 그래픽 카드 사용하므로 ffbconfig 명령을 사용해야 합니다.
-> 보통은 m64config 를 사용하더군요

3. 현재 해상도 확인
# ffbconfig -prconf
--- Hardware Configuration for /dev/fbs/ffb0 ---
Type: double-buffered FFB2+ with Z-buffer
Board: rev 2 (Horizontal)
PROM Information: @(#)ffb2p.fth 2.9 98/07/14
FBC: version 0x3241906d
DAC: Brooktree 9070, version 1 (Pac2)
3DRAM: Mitsubishi 130b, version 2
EDID Data: Not Available
Monitor Sense ID: 7 (Unknown monitor type, defaulting to Sun 19" monitor)
Monitor possible resolution: 1152x900x66
Current resolution setting: 1152x900x66

현재 1152x900x66 으로 설정되어 있습니다.

4. 해상도 변경
# ffbconfig -res 1024x768x60
#

5. 적용하기
방법1) CDE 환경을 로그 아웃하고 재로그인 한다
방법2) /etc/init.d/dtlogin 을 재시작한다(stop/start)

5. 해상도 변경시 주의점
- 위에서 보다시피 possible resolution 이 1152x900x66 으로 한정되어 있는데..
그 이상의 해상도로 설정하면 화면자체가 안나올수 있습니다.
- 일반적으로 가능한 해상도 안에서 변경하면 정상적으로 나옵니다.
- 해상도 설정시에 아무런 메시지가 없으면 정상적으로 적용 가능한거고
지원하지 않으면 강제로 설정하겠느냐는 메시지가 나옵니다.
(별로 권장하지 않습니다)

6. 해상도 변경후 장애처리 방법
- 해상도 변경후 화면이 안먹으면 콘솔로 로그인을 할수가 없습니다.
- 이때는 telnet으로 로그인해서 m64config or ffbconfig 명령으로 해상도를 재설정하고
/etc/init.d/dtlogin 을 재시작하면 정상적으로 되돌아옵니다

문서 작성 : CSU 최재혁
# luxadm prob  <- 엔클르주 네임 확인
       Found Enclosure:
       SUNWGS INT FCBPL   Name:FCloop   Node WWN:508002000017ced0   Logical Path:/dev/es/ses0
      
       Found Fibre Channel device:
         Node WWN:50020f200000b55e  Device Type:Disk device
          Logical Path:/dev/rdsk/c1t1d0s2
# luxadm disp FCloop   <- 디스크 슬롯확인
      
                       SUNWGS INT FCBPL
                        DISK STATUS
       SLOT   DISKS             (Node WWN)
       0      On (O.K.)         20000004cf3b81bf
       1      On (O.K.)         20000004cf207d09
       2      On (O.K.)         20000004cf20bfa3
       3      On (O.K.)         20000004cf20eca7
       4      On (O.K.)         20000004cf20853f
       5      On (O.K.)         20000004cf20c90e
       6      On (Login failed)
       7      On (Login failed)
       8      On (Login failed)
       9      On (Login failed)
       10     On (Login failed)
       11     On (Login failed)
                       SUBSYSTEM STATUS
       FW Revision:9224   Box ID:0
         Node WWN:508002000017ced0   Enclosure Name:FCloop
       SSC100's - 0=Base Bkpln, 1=Base LoopB, 2=Exp Bkpln, 3=Exp LoopB
           SSC100 #0:    O.K.(9224/ 3FA5)
           SSC100 #1:    O.K.(9224/ 3FA5)
           SSC100 #2:    Not Installed
           SSC100 #3:    Not Installed
                 Temperature Sensors - 0 Base, 1 Expansion
                 0:23
                       1Not Installed
       Default Language is USA English, ASCII
== 만약 0번디스크가 장애 났을 경우
       # luxadm remove_device FCloop,s0
               Device DISK10 removed
               Drive in Box Name "FCloop" slot 0
               Logical Nodes being removed under /dev/dsk/ and /dev/rdsk:
               Logical Nodes being removed under /dev/dsk/ and /dev/rdsk:
               c1t12d0s0
               c1t12d0s1
               c1t12d0s2
               c1t12d0s3
               c1t12d0s4
               c1t12d0s5
               c1t12d0s6
               c1t12d0s7
# luxadm insert_device FCloop,s0
       The list of devices which will be inserted is:
       1: Box Name "FCloop" front slot 0
       Please enter 'q' to Quit or <Return> to Continue:
       Hit <Return> after inserting the device(s).
               == 물리적 디스크교체 후 엔터 ====

+ Recent posts