| HOME / 정보공유 / AIX 명령어 모음

strload
strload strload 명령 목적 PSE(Portable Streams Environment)를 로드하고 구성합니다. 구문
strload [ -u | -q ] [ -f File ] [ -d List ] [ -m List ]
설명
strload 명령은 드라이버와 모듈을 로드/로드 해제하며 PSE 및 그 종속의 로드 상태를 조회합니다.
디폴트로 strload 명령은 /etc/pse.conf 파일에 따라 PSE를 로드합니다. -f 플래그는 새로운 드라이버가 개발 중인 경우와 같이 관리자가 대체 구성설정 파일을 지정할 수 있습니다. -d 및 -m 플래그는 구성설정 파일에 없는 드라이버 및 모듈을 지정하는 데 사용됩니다. -q 플래그는 참조된 드라이버와 모듈의 시스템 로드 상태(커널 존재)를 보여줍니다.
구성설정 파일
구성설정 파일은 플랫(flat) ASCII, 행 중심의 데이터베이스입니다. 인용문은 #(파운드 기호)로 시작해서 행의 끝까지 계속됩니다. 공백 행은 무시합니다. 각 레코드의 양식은 다음과 같습니다.
attributes filename [argument [node [minor ...] ] ]
필드는 공백 문자나 탭 또는 그 둘 모두로 분리됩니다. 필드 값을 -(대쉬)로 지정하면 디폴트 값을 사용합니다. 필드는 다음과 같이 정의할 수 있습니다.
attributes 로드할 확장자를 설명합니다. 사용할 수 있는 값은 다음과 같습니다.
d
드라이버를 지정합니다.
m
모듈을 지정합니다.
s
노드를 표준(복제가 아님) 장치로 작성합니다.
+
한번 이상 구성설정할 수 있음을 나타냅니다. 확장자 파일 이름이 포함되어 있는 모든 행에 대해서는 이 값을 지정해야 합니다.
filename 확장자가 포함되어 있는 오브젝트 파일을 지정합니다. 로드, 로드 해제 또는 조회할 드라이버 또는 모듈의 파일 이름이 "/"(슬래시)로 시작하면 strload 명령은 파일 이름 필드에 있는 값을 사용합니다. 파일 이름에 "/"가 없으면, strload 명령은 먼저 현재 디렉토리에서 드라이버 또는 모듈의 사본을 찾습니다. 드라이버나 모듈이 현재 디렉토리에 없는 경우, strload는 드라이버 또는 모듈을 /usr/lib/drivers/pse 디렉토리에서 찾습니다.
주: 루트 디렉토리(/)에서 strload 명령을 발행하는 것이 바람직합니다. 로드, 로드 해제 및 조회할 strload 명령은 항상 같은 디렉토리에서 실행되어야 합니다.
커널 확장 로더의 경우, 사용된 경로 이름이 로드, 로드 해제 및 조회할 경로 이름과 같아야 합니다. 이것은 strload가 파일 이름을 결정하는 방법과 연결될 때 문제를 야기할 수 있습니다. strload 명령에 사용된 경로 이름의 모든 바이트는 커널 확장 로더가 사용하는 경로 이름의 해당 바이트와 정확하게 일치해야 하는 데, 이는 커널이 strcmp()로 파일 이름이 일치하는지를 찾기 때문입니다. 모듈 또는 드라이버를 로드 해제하기 위해 strload 명령을 다른 디렉토리에서 실행하면, 다음과 같은 경우가 생길 수 있습니다.
strload 명령이 새로운 현재 디렉토리에서 드라이버 또는 모듈의 사본을 찾을 수 없으면, strload는 /usr/lib/drivers/pse 디렉토리의 드라이버 또는 모듈을 로드 해제하려고 합니다. 그러나 이 경로 이름은 로더가 해당 드라이버 또는 모듈에 대해 기록하는 경로 이름과 같지 않을 수도 있습니다. 경로 이름이 같지 않으면 strload 명령이 실패합니다.
strload 명령이 새로운 현재 디렉토리에서 모듈 또는 드라이버의 또 다른 사본을 찾으면 경로 이름이 동일하게 되고 로더는 로드된 드라이버 또는 모듈을 정확하게 로드 해제합니다. 따라서 strload 명령이 성공해도 그 결과는 사용자가 의도했던 것과 다를 수 있습니다.
예를 들면
다음은 "A"라고도 하는 "spx"를 로드 해제하는 예입니다. 이것은 바람직하지 않습니다.
mkdir /tmp/foo /tmp/bar
cp /usr/lib/drivers/pse/spx /tmp/foo/A
cp /bin/ls /tmp/bar/A
cd /tmp/foo
strload -d A # 현재 디렉토리에서 "A"를 찾았기 때문에
# 로더는 파일 및 경로 이름을
# "A"로 알고 있습니다.
cd /tmp/bar
strload -q -d A # "A"가 현재 디렉토리에 있기 때문에
# "yes"를 보고합니다. /tmp/bar에 있는 파일 "A"가
# /tmp/foo에 있는 동일한 파일 "A"가 아니지만
# 경로 이름에 따라 파일을 식별하기 때문에
# 로더가 주의하지 않는다는 사실을
# 주의해야 합니다.
strload -u -d A # spx("A"라고도 함)를 로드 해제합니다!
다음은 오류 시나리오입니다.
mkdir /tmp/foo2 /tmp/bar2
cp /usr/lib/drivers/pse/spx /tmp/foo2/A
cd /tmp/foo2
strload -d A # 현재 디렉토리에서 "A"를 찾았기 때문에
# 로더는 파일 및 경로 이름을
# "A"로 알고 있습니다.
cd /tmp/bar2
strload -q -d A # "no"라고 대답합니다. "A"와 일치하는 파일 이름이
# /tmp/bar2에 없기 때문에 strload는
# 경로 이름 "/usr/lib/drivers/pse"를
# "A" 앞에 추가합니다. "/usr/lib/drivers/pse/A"를
# 찾을 수 없기 때문에 strload가 "no"라고 대답합니다.
strload -u -d A # 실패- "A"가 없습니다.
다음은 오류 시나리오입니다.
cd /usr/lib/drivers/pse
strload -d spx # 현재 디렉토리에서 "spx"를 찾았기 때문에
# 로더가 파일 및 경로 이름을
# "spx"로 알고 있습니다.
cd /
strload -q -d spx # "no"라고 대답합니다. "spx"에 일치하는 파일 이름이
# "/"에 없기 때문에 strload가 경로 이름
# "/usr/lib/drivers/pse"을 "spx" 앞에
# 추가합니다. "/usr/lib/drivers/pse/spx"가
# 있으므로 strload 로더에게
# "/usr/lib/drivers/pse/spx"를 제공합니다.
# strcmp()은
# "/usr/lib/drivers/pse/spx"와 "spx"가
# 정확하게 일치하지 않기 때문에 실패합니다.
strload -u -d spx # 실패- "spx"가 없습니다.
argument strload 명령에서는 의미가 없습니다. 이 필드는 선택적입니다. 구성설정 루틴 호출시 확장자로 패스됩니다. 그 해석은 해당 확장자에 따라 다릅니다. 디폴트는 filename 필드의 값입니다.
node 작성할 노드의 이름을 지정합니다. 이 필드는 선택적입니다. 이 필드는 드라이버에만 적용되며 드라이버를 로드할 경우 작성된 노드 이름으로 사용됩니다. 작성된 노드는 디폴트로 /dev/filename입니다.
minor 이 드라이버에 대해 작성할 추가 비복제 노드를 지정합니다. 이 필드는 선택적입니다. 노드 이름은 부 번호를 복제 드라이버 노드 이름에 추가하여 만듭니다. 최대한 5개의 부 번호(0-4)를 제공할 수 있으며 각 번호마다 노드가 작성됩니다.
-d 및 -m 플래그는 다음과 같이 명령행에 분명하게 명명하지 않으면 구성설정 파일을 무시하게 합니다.
strload -f /tmp/my.conf -d newdriver
주: -d 및 -m 플래그는 구성설정 파일을 겹쳐쓰지 않습니다. 즉, 구성설정 파일을 사용하여 드라이버 dgb를 로드하면 -d 플래그가 재로드를 시도해도 실패합니다. 구성설정 파일은 -d 및 -m 플래그에 앞서 처리됩니다.
-d 및 -m 플래그에서 List 변수는 하나의 PSE 드라이버 또는 모듈을 포함하는 파일 이름을 쉼표로 분리한 리스트입니다. 구성설정 프로세스는 다음 양식의 행 중 하나를 구성설정 파일에서 찾은 것처럼 진행됩니다.
d filename
m filename
플래그
-d List 로드 또는 로드 해제할 PSE 장치 드라이버를 나열합니다. List 변수는 드라이버 오브젝트 이름을 쉼표로 분리한 리스트를 지정합니다.
-f File PSE를 File 변수가 표시한 파일에 포함되어 있는 구성설정 정보에 따라 구성설정합니다. 디폴트 구성설정 파일은 /etc/pse.conf입니다.
-m List 로드 또는 로드 해제할 PSE 모듈을 나열합니다. List 변수는 모듈 오브젝트 이름을 쉼표로 분리한 리스트를 지정합니다.
-q 확장자의 로드 상태를 보고합니다.
-u 확장자를 로드 해제합니다.
예제
구성설정 파일을 사용하지 않고 PSE(미리 로드하지 않은 경우), dgb 및 ssb 드라이버가 /usr/lib/drivers/pse/ 디렉토리에서 로드하고 aoot 모듈을 현재 디렉토리에서 로드하려면 다음과 같이 입력하십시오.
root# strload -d dgb,ssb -m ./aoot
aoot 모듈만 로드 해제하려면, 다음과 같이 입력하십시오.
root# strload -u -m ./aoot
spx 드라이버가 존재하는지 보려면 다음과 같이 입력하십시오.
root# strload -q -d
spx
없으면 출력은 다음과 같습니다.
spx
: no
다음은 구성설정 파일의 예제입니다.
#example configuration file
d dgb #line 1
d mux - - 0 #line 2
ds foo #line 3
d+ xtiso tcp /dev/xti/tcp #line 4
d+ xtiso udp /dev/xti/udp #line 5
m aoot #line 6
행 1은 dgb 드라이버 확장자를 /dev/dgb라고 하는 복제 장치로 로드합니다. dgb 구성설정 루틴으로 패스한 인수는 dgb입니다.
행 2는 mux 드라이버 확장자를 /dev/mux라고 하는 복제 장치로 로드하고 표준 장치 이름 /dev/mux0을 부 번호 0으로 만듭니다. 최대한 5개의 장치 이름을 0-4의 부 번호로 작성할 수 있습니다.
행 3은 foo 드라이버 확장자를 /dev/foo라고 하는 표준 장치(복제가 아님)로 로드합니다. 부 번호는 0입니다.
행 4와 행 5는 xtiso 드라이버 확장자를 로드하고 한번은 tcp로 한번은 udp로 두 번 구성설정합니다. 작성된 복제 노드는 /dev/xti/tcp와 /dev/xti/udp입니다. xtiso의 구성설정 루틴은 인수 tcp와 udp로 각각 한번씩 두번 호출됩니다.
행 6은 aoot 모듈 확장자를 로드합니다. 노드가 작성되지 않고 구성설정 루틴이 값 aoot를 패스합니다.
파일
/usr/lib/drivers/pse/* PSE 커널 확장이 포함되어 있습니다.
/etc/pse.conf 디폴트 PSE 구성설정 파일입니다.
/usr/sbin/strload strload 명령이 포함되어 있습니다.
관련 정보
slibclean 명령, strerr 명령.