시험환경: AIX 6.1
언제나 그렇듯이, 필요에 의해 dummy device를 만들 필요가 생겼다. 물론, dummy device는 실제로 작동하지는 않는다. 원리는, 만들고자 하는 타입의 adapter의 ODM 정보를 복사하여, dummy adapter 의 ODM 을 만들면 된다.
이 원리를 이용하여, ent0를 복사하여, ent 9 를 만들어 보면,
# lsdev -Cc adapter ent0 Available 05-08 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902) ent1 Available 05-09 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902)
1. ent0의 ODM 정보를 임의의 화일에 저장.
# odmget -q name=ent0 CuDv > ent.txt
# odmget -q name=ent0 CuAt >> ent.txt
# odmget -q name=ent0 CuVPD >> ent.txt
# cat ent.txt
CuDv:
name = "ent0"
status = 1
chgstatus = 2
ddins = "pci/goentdd"
location = "05-08"
parent = "pci5"
connwhere = "8"
PdDvLn = "adapter/pci/14108902"
CuAt:
name = "ent0"
attribute = "busmem"
value = "0xc0120000"
type = "B"
generic = "D"
rep = "nr"
nls_index = 3
CuAt:
name = "ent0"
attribute = "rom_mem"
value = "0xc00c0000"
type = "B"
generic = "D"
rep = "nr"
nls_index = 4
CuAt:
name = "ent0"
attribute = "busintr"
value = "65623"
type = "I"
generic = "D"
rep = "nl"
nls_index = 5
CuVPD:
name = "ent0"
vpd_type = 2
vpd = "*YLU7879.001.DQDPHTZ-P1-T6"
CuVPD:
name = "ent0"
vpd_type = 0
vpd = "▒("
2. 만든 화일에서 ent0를 (만들고자 하는)ent9로 수정한다. 수정하면 아래와 같을 것이다.
# cat ent.txt
CuDv:
name = "ent9"
status = 1
chgstatus = 2
ddins = "pci/goentdd"
location = "05-08"
parent = "pci5"
connwhere = "8"
PdDvLn = "adapter/pci/14108902"
CuAt:
name = "ent9"
attribute = "busmem"
value = "0xc0120000"
type = "B"
generic = "D"
rep = "nr"
nls_index = 3
CuAt:
name = "ent9"
attribute = "rom_mem"
value = "0xc00c0000"
type = "B"
generic = "D"
rep = "nr"
nls_index = 4
CuAt:
name = "ent9"
attribute = "busintr"
value = "65623"
type = "I"
generic = "D"
rep = "nl"
nls_index = 5
CuVPD:
name = "ent9"
vpd_type = 2
vpd = "*YLU7879.001.DQDPHTZ-P1-T6"
CuVPD:
name = "ent9"
vpd_type = 0
vpd = "▒("
3. odm에 새로만든 ent9를 추가하고, 디바이스를 새로 잡는다.
# odmadd ./ent.txt
# cfgmgr
확인하면, 아래와가이 ent9가 생성되었음을 확인 할 수 있다.(참고: 위의 ent.txt 화일에서 status = 1 을 status = 0으로 바꾸면 Available 대신 Defined 로 생성된다)
# lsdev -Cc adapter ent0 Available 05-08 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902) ent1 Available 05-09 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902) ent9 Available 05-08 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902)
시스템을 재부팅 하면, 아래와 같이 Defined 로 바뀐다.
# lsdev -Cc adapter | grep -i ent9 ent9 Defined 05-08 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902)
4. 삭제
삭제는 간단하다. rmdev 커맨드를 사용해서 삭제한다. 만약 지워지지 않는다면, odmdelete 커맨드로 삭제한다.
# rmdev -dl ent9 # odmget CuDv | grep -i ent9 # odmget CuAt | grep -i ent9 # odmget CuVPD | grep -i ent9 # odmget CuDvDr | grep -i ent9
정상적으로 삭제되지 않았을 경우.
# odmget CuDv | grep -i ent9
name = "ent9"
# odmget CuAt | grep -i ent9
name = "ent9"
name = "ent9"
name = "ent9"
# odmget CuVPD | grep -i ent9
name = "ent9"
name = "ent9"
# odmdelete -q name=ent9 -o CuDv
0518-307 odmdelete: 1 objects deleted.
# odmdelete -q name=ent9 -o CuAt
0518-307 odmdelete: 3 objects deleted.
# odmdelete -q name=ent9 -o CuVPD
0518-307 odmdelete: 2 objects deleted.
5. 같은 원리로 fcs9(HBA) 만들어 보기
# lsdev -Cc adapter | grep -i fcs
fcs0 Available 06-08 FC Adapter
# odmget -q name=fcs0 CuDv > fcs.txt
# odmget -q name=fcs0 CuAt >> fcs.txt
# odmget -q name=fcs0 CuVPD >> fcs.txt
# sed -e "s/fcs0/fcs9/g" fcs.txt > fcs9.txt
# odmadd fcs9.txt
# lsdev -Cc adapter | grep -i fcs
fcs0 Available 06-08 FC Adapter
fcs9 Available 06-08 FC Adapter
# rmdev -dl fcs9
Method error (/usr/lib/methods/ucfgcommo):
0514-065 Error getting or assigning a device instance number.
# odmget CuDv | grep -i fcs9
name = "fcs9"
# odmget CuAt | grep -i fcs9
name = "fcs9"
name = "fcs9"
name = "fcs9"
# odmget CuVPD | grep -i fcs9
name = "fcs9"
name = "fcs9"
# odmget CuDvDr | grep -i fcs9
# odmdelete -q name=fcs9 -o CuDv
0518-307 odmdelete: 1 objects deleted.
# odmdelete -q name=fcs9 -o CuAt
0518-307 odmdelete: 3 objects deleted.
# odmdelete -q name=fcs9 -o CuVPD
0518-307 odmdelete: 2 objects deleted.
# lsdev -Cc adapter | grep -i fcs
fcs0 Available 06-08 FC Adapter