본 문서는 format 출력 시 원하는 영역의 디스크를 추출하는 방법을 설명한다.
OVMM 에서 디스크 alias 를 생성할때 유용 하다.



- Disk List
[sa-ovs2:~#] format < /dev/null | grep FUJITSU
       2. c0t600000E00D000000000205A100A00000d0 <FUJITSU-ETERNUS_DXL-0000-1.00GB>
       3. c0t600000E00D000000000205A100A10000d0 <FUJITSU-ETERNUS_DXL-0000-1.00GB>
       4. c0t600000E00D000000000205A100A20000d0 <FUJITSU-ETERNUS_DXL-0000-1.00GB>
       5. c0t600000E00D000000000205A100A30000d0 <FUJITSU-ETERNUS_DXL-0000-1.00GB>
       6. c0t600000E00D000000000205A100A40000d0 <FUJITSU-ETERNUS_DXL-0000-1.00GB>
       7. c0t600000E00D000000000205A100A50000d0 <FUJITSU-ETERNUS_DXL-0000-1.00GB>
       8. c0t600000E00D000000000205A100A60000d0 <FUJITSU-ETERNUS_DXL-0000-1.00GB>
       9. c0t600000E00D000000000205A100A70000d0 <FUJITSU-ETERNUS_DXL-0000-1.00GB>
      10. c0t600000E00D000000000205A100A80000d0 <FUJITSU-ETERNUS_DXL-0000-1.00GB>
      11. c0t600000E00D000000000205A100A90000d0 <FUJITSU-ETERNUS_DXL-0000-1.00GB>
                                    (... 중략)
     173. c0t600000E00D000000000205A100870000d0 <FUJITSU-ETERNUS_DXL-0000-10.00GB>
     174. c0t600000E00D000000000205A100880000d0 <FUJITSU-ETERNUS_DXL-0000-10.00GB>
     175. c0t600000E00D000000000205A100890000d0 <FUJITSU-ETERNUS_DXL-0000-10.00GB>
     176. c0t600000E00D000000000205A100900000d0 <FUJITSU-ETERNUS_DXL-0000-10.00GB>
     177. c0t600000E00D000000000205A100910000d0 <FUJITSU-ETERNUS_DXL-0000-10.00GB>
     178. c0t600000E00D000000000205A100920000d0 <FUJITSU-ETERNUS_DXL-0000-10.00GB>
     179. c0t600000E00D000000000205A100930000d0 <FUJITSU-ETERNUS_DXL-0000-10.00GB>
     180. c0t600000E00D000000000205A100940000d0 <FUJITSU-ETERNUS_DXL-0000-10.00GB>
     181. c0t600000E00D000000000205A100950000d0 <FUJITSU-ETERNUS_DXL-0000-10.00GB>
     182. c0t600000E00D000000000205A100960000d0 <FUJITSU-ETERNUS_DXL-0000-10.00GB>
     183. c0t600000E00D000000000205A100970000d0 <FUJITSU-ETERNUS_DXL-0000-10.00GB>
     184. c0t600000E00D000000000205A100980000d0 <FUJITSU-ETERNUS_DXL-0000-10.00GB>
     185. c0t600000E00D000000000205A100990000d0 <FUJITSU-ETERNUS_DXL-0000-1.00GB>


 - 16진수를 비교하여 원하는 영역의 디스크를 추출하는 스크립트
   : 0x0060 보다 크고 0x0090 보다 작은 영역의 디스크 추출

 -- Case#1) ibase 사용
[sa-ovs2:~#] vi disk_select.sh
#!/bin/bash

DISK=`format < /dev/null | grep FUJITSU | awk '{print $2}' | sed -e 's/c0t600000E00D000000000205A1//g' | sed -e 's/0000d0//g'`

START_DISK=`echo "ibase=16; 0060" | bc`
END_DISK=`echo "ibase=16; 0090" | bc`

for D in $DISK;do
        TR=`echo "ibase=16; $D" | bc`
        
        if [[ ${TR} -gt $START_DISK ]] && [[ ${TR} -lt $END_DISK ]];then
                printf "%s\n" $D
        fi
done

 -- Case#2) 16진수가 소문자인 경우(ex. 008f : bc 가 대문자만 지원한다)
 --- sh 또는 bash 에서
[sa-ovs2:~#] vi disk_select.sh
#!/bin/bash

DISK=`format < /dev/null | grep FUJITSU | awk '{print $2}' | sed -e 's/c0t600000E00D000000000205A1//g' | sed -e 's/0000d0//g'`

START_DISK=`echo $((0x0060))`
END_DISK=`echo $((0x0090))`

for D in $DISK;do
        TR=`echo $((0x$D))`
        
        if [[ ${TR} -gt $START_DISK ]] && [[ ${TR} -lt $END_DISK ]];then
                printf "%s\n" $D
        fi
done

 --- bash 에서
[sa-ovs2:~#] vi disk_select.sh
#!/bin/bash

DISK=`format < /dev/null | grep FUJITSU | awk '{print $2}' | sed -e 's/c0t600000E00D000000000205A1//g' | sed -e 's/0000d0//g'`

START_DISK=`echo $((16#0060))`
END_DISK=`echo $((16#0090))`

for D in $DISK;do
        TR=`echo $((16#$D))`
        
        if [[ ${TR} -gt $START_DISK ]] && [[ ${TR} -lt $END_DISK ]];then
                printf "%s\n" $D
        fi
done

 - 실행
[sa-ovs2:~#]sh disk_select.sh
006A
006B
006C
006D
006E
006F
007A
007B
007C
007D
007E
007F
008A
008B
008C
008D
008E
008F
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089

반응형

+ Recent posts