odm 커맨드로 dummy adapter 만들기.

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

답글 남기기

Your email address will not be published.