시험환경: 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