LSILogic RAIDのディスク交換をMegaCliを使って行う場合の手順メモ


IBM x3650サーバに入っているLSILogic RAIDカードにて、構成しているディスクが故障したので、ディスクを調達して交換したい。という話があったので、交換手順を確認した。

ついでに一般公開

参考文献
・やっ太郎ブログ:「Megacli64でディスク交換太郎
・チラシの裏的なBlog:「【備忘録】MegaRAIDでのエラーHDD交換手順
・IBM Docs:「2073-720 で障害予知機能 (PFA) イベントを報告する、障害が発生したドライブの取り替え
・Qiita:「HW保守で使いそうなTips 〜ディスク周り〜

(1) コマンドがある場所に移動

標準では /opt/MegaRAID/MegaCli/ にインストールされていて、PATHは通っていないことが多いので、ディレクトリ移動しておくと以降のコマンドが実行しやすい。

# cd /opt/MegaRAID/MegaCli/
#

(2) コマンド名確認

/opt/MegaRAID/MegaCli/に MegaCliもしくはMegaCli64があるかを確認
移行の手順はMegaCliだったものとして記載している

# ls -F

(3) RAID構成の状態を確認

Stateの状態を確認

# ./MegaCli -LDInfo -Lall -aALL

(4) 物理ディスクの状態を確認

# ./MegaCli -PDList -aALL
# ./MegaCli -PD List  -aALL | egrep 'Slot|Firmware state|Inquiry|Enclo'
# ./MegaCli -PD List  -aALL | egrep 'Slot|state|Data|Raw'

「Firmware state」がディスクの状態でFailedとなっているものが壊れている。

そのディスクについての「Enclosure Device ID」と「Slot Number」の値をこの後の手順で使うので記録しておく。

また「Inquiry Data」にあるディスク型番とシリアルが抜いたディスクとあっているかを確認出来るので、それも記録しておく。

(5) 壊れているディスクの場所を確認

壊れているディスクのLEDを点灯させて交換するディスクと、コマンドで指定する「 physdrv 」の指定が一致していることを、スロットのランプを点灯させて確認する。

下記コマンドを実行すると該当ディスクスロットのランプが点灯

# ./MegaCli -Pdlocate start physdrv[Enclosure Device ID:Slot Number] -a0

下記コマンドを実行すると該当ディスクスロットのランプが消灯

# ./MegaCli -Pdlocate stop physdrv[Enclosure Device ID:Slot Number] -a0
たとえば、Enclosure Device IDが252, Slot Numberが2の場合下記の様に実行する。
  # ./MegaCli -Pdlocate start physdrv[252:2] -a0
  # ./MegaCli -Pdlocate stop physdrv[252:2] -a0

(6) 壊れているディスクをオフラインにする

壊れているディスクをオフラインにする。

# ./MegaCli -PDOffline -PhysDrv [Enclosure Device ID:Slot Number] -a0

Enclosure Device IDが252, Slot Numberが2の場合下記の様になる

# ./MegaCli -PDOffline -PhysDrv [252:2] -a0

なお、壊れ方によっては、すでにオフライン扱いになっていて、このコマンドでエラーとなる場合がある。

(7) 欠落マークがついたRAIDがあるか確認する

6でエラーとなっている場合は、下記コマンドを実行した際に 「Array」と「Row」 といった情報が出力される。このArrayとRowの値はあとで使用します。

# ./MegaCli -PDGetMissing -aALL

6がエラーとなっていない場合は、Array/Rowの出力はないと思われます。

また、MegaCliコマンドのバージョンによっては、このオプションが存在せず、エラーとなる場合があるようです。その際はこの手順を飛ばします。

(8) 壊れているディスクに欠落マークを付ける

まだ壊れていることがきちんと認識されていない場合、壊れていることを確定させます。

# ./MegaCli -PDMarkMissing -PhysDrv [Enclosure Device ID:Slot Number] -a0

Enclosure Device IDが252, Slot Numberが2の場合下記の様になる

# ./MegaCli -PDMarkMissing -PhysDrv [252:2] -a0

MegaCliコマンドのバージョンによっては、PDMarkMissingオプションがないようです
その場合はこの手順を飛ばします。

また、6ですでに欠落マークがついたRAIDが認識されている場合もこの手順は不要であるはずです。

(9) 欠落マークがついたRAIDが認識されたことを確認する

欠落マークがついたRAIDが表示されることを確認します。

# ./MegaCli -PDGetMissing -aALL

この出力中の「Array」と「Row」の番号はあとで使用します。
PDMarkMissingオプションが実行できなかった場合、これも実行できない
と思います。その場合は飛ばします。

(10) 壊れているディスクを抜くことをRAIDコントローラに通知します

下記を実行して、指定したディスクを取り外すことをRAIDコントローラに通告します。

# ./MegaCli -PDPrpRmv -PhysDrv [Enclosure Device ID:Slot Number] -a0

下記の様に実行する

# ./MegaCli -PDPrpRmv -PhysDrv [252:2] -a0

なお、たぶん(6)の段階で欠落マークがついているような場合は、このコマンドを実行するまでもなくディスクが完全に壊れている、と認識されて、すでに抜けるような状態になっているようです。

(11) 壊れているディスクを物理的に抜く

(12) 1分ぐらい待つ

ここで待つのは気休めです。

RAIDコントローラの情報更新間隔がよくわからないので入れてますが、たぶん、すぐに実行しても問題ないような気がします・・・

(13) RAID構成/ディスク認識の状態を確認

ディスクの認識を抜いたことにより、RAID構成の状態が変わっているかを確認します。

# ./MegaCli -LDInfo -Lall -aALL

Stateの状態を確認します。(変わるのかどうかは把握していません)

次に、物理ディスクの状態変化を確認します。

# ./MegaCli -PDList -aALL
# ./MegaCli -PD List  -aALL | egrep 'Slot|Firmware state|Inquiry|Enclo'
# ./MegaCli -PD List  -aALL | egrep 'Slot|state|Data|Raw'

先ほど抜いたディスクに関する表示が消えているはずです。

(14) 新しいディスクを入れる

(15) RAID構成/ディスク認識の状態を確認

RAID状態が変わっているかを確認します。

# ./MegaCli -LDInfo -Lall -aALL

Stateの状態を確認します。
また、RAID構成が新しく認識されていたりしないか確認します。(中古ディスクに情報が残っている場合に発生する可能性がある)

交換したディスクが認識されているかを下記のコマンドで確認します。

# ./MegaCli -PDList -aALL
# ./MegaCli -PD List  -aALL | egrep 'Slot|Firmware state|Inquiry|Enclo'
# ./MegaCli -PD List  -aALL | egrep 'Slot|state|Data|Raw'

(16) 再構築が開始されているかを確認する

RAIDコントローラの設定および交換したディスクの状態によっては、ディスクを交換した時点で、自動的に再構築が開始されます。

下記コマンドで状況を確認します。

# ./MegaCli -pdrbld -showprog -physdrv [Enclosure Device ID:Slot Number] -a0

実行例は下記のようになります。

# ./MegaCli -pdrbld -showprog -physdrv [252:2] -a0

再構築が始まっている場合は progressの数値が徐々に増加していくはずです。

(17) RAIDにディスク交換されたことを認識させる

交換したディスクがスペアディスクなどとして認識されなかった場合は、手動で設定します。

# ./MegaCli -PdReplaceMissing -PhysDrv [Enclosure Device ID:Slot Number] -Array0 -row0 -a0

手順7か手順9で確認したArrayとRowの番号を使ってコマンドを実行します。実行例は下記のようになります。

# ./MegaCli -PdReplaceMissing -PhysDrv [252:2] -Array0 -row0 -a0

PDMarkMissingオプションが実行できなかった場合、これも実行できない
と思います。その場合は飛ばします。

(18) 再構築開始

手動で再構築開始を実行する場合は下記コマンドを実行します。

# ./MegaCli -PDRbld -Start -PhysDrv [Enclosure Device ID:Slot Number] -a0


下記の様に実行します。

# ./MegaCli -PDRbld -Start -PhysDrv [252:2] -a0

(19) 再構築状況を確認

再構築の状況を確認します。

# ./MegaCli -pdrbld -showprog -physdrv [Enclosure Device ID:Slot Number] -a0

下記の様に実行します。

# ./MegaCli -pdrbld -showprog -physdrv [252:2] -a0

(20) RAID構成/ディスク認識の状態を確認

RAID状態が変わっているかを確認します。

# ./MegaCli -LDInfo -Lall -aALL

Stateの状態を確認します。おそらくrebuildなどのステータスになっているかと思います。

また、交換したディスクが認識されているかを下記のコマンドで確認します。

# ./MegaCli -PDList -aALL
# ./MegaCli -PD List  -aALL | egrep 'Slot|Firmware state|Inquiry|Enclo'
# ./MegaCli -PD List  -aALL | egrep 'Slot|state|Data|Raw'

Cisco UCSのCIMCにssh接続して設定を行う


Cisco UCSのCisco Integrated Management Controller (CIMC)はWeb管理画面とssh接続によるCLI管理がある。

CIMCについているホスト名は基本的に「サーバ機種名-シリアル番号」となっている。

ホスト名を確認する操作をCLIから行うには、scope:cimc/network以下でdetailを表示する操作になる。

ホスト名# scope cimc/network
ホスト名 /cimc/network # show detail
Network Setting:
    IPv4 Enabled: yes
    IPv4 Address: xxx.xxx.xxx.xxx
    IPv4 Netmask: 255.255.255.0
    IPv4 Gateway: xxx.xxx.xxx.xxx
    DHCP Enabled: no
    DDNS Enabled: yes
    DDNS Update Domain:
    DDNS Refresh Interval(0-8736 Hr): 0
    Obtain DNS Server by DHCP: no
    Preferred DNS: xxx.xxx.xxx.xxx
    Alternate DNS: 0.0.0.0
    IPv6 Enabled: yes
    IPv6 Address: ::
    IPv6 Prefix: 64
    IPv6 Gateway: ::
    IPv6 Link Local: fe80::86b8:xxxx:xxxx:xxxx
    IPv6 SLAAC Address: ::
    IPV6 DHCP Enabled: yes
    IPV6 Obtain DNS Server by DHCP: yes
    IPV6 Preferred DNS: ::
    IPV6 Alternate DNS: ::
    VLAN Enabled: no
    VLAN ID: 1
    VLAN Priority: 0
    Port Profile:
    Hostname: ホスト名
    MAC Address: XX:XX:XX:XX:XX:XX
    NIC Mode: dedicated
    NIC Redundancy: none
    VIC Slot: riser1
    Auto Negotiate: yes
    Admin Network Speed: auto
    Admin Duplex: auto
    Operational Network Speed: 1Gbps
    Operational Duplex: full
ホスト名 /cimc/network #

show detailだといろんな項目が表示されすぎるので、ホスト名だけを取り出すことができないか調べたところ「| grep キーワード」が使えた。

ホスト名 /cimc/network # show detail | grep Hostname
    Hostname: ホスト名
ホスト名 /cimc/network #

ホスト名変更操作は scope:cimc/network にて set hostnameを実行したあと、commitで確定する。

ホスト名 /cimc/network # set hostname 新ホスト名
Create new certificate with CN as new hostname? [y|N] y

ホスト名 /cimc/network *# commit
Changes to the network settings will be applied immediately.
You may lose connectivity to the Cisco IMC and may have to log in again.
Do you wish to continue? [y/N] y

注意点として、ホスト名変更に伴い、Web管理GUIおよびssh接続で使用するSSL証明書で使用するCN(common name)が変更されるため証明書が作成されるということがある。

また、再作成に伴いCIMC自体も再起動されるため、commit後、再起動完了までの数分間CIMCに接続できなくなる。

このため、CIMCホスト名変更処理を行ったあとは、再起動待ちと証明書再発行にともなうssh接続時のキー変更に対応する処理を入れる必要がある。

ssh接続時のknown_hostsファイルから該当するエントリを削除したい場合は、 ssh-keygenコマンドの-Rオプションを使うことで行える。

osakanataro@ubuntu2004:~/imc$ ssh-keygen -R xxx.xxx.xxx.xxx
# Host xxx.xxx.xxx.xxx found: line 1
/home/osakanataro/.ssh/known_hosts updated.
Original contents retained as /home/osakanataro/.ssh/known_hosts.old
osakanataro@ubuntu2004:~/imc$

これで材料が揃ったので、スクリプトを作成する。

最初は Ciscoのcimc-ansible , cimcsdk を使用できないか検討したのですが、どちらもCIMCのホスト名変更に関する処理が実装されていないようだったので、expectコマンドによる処理を採用しました。

作成するにあたり下記を参考にしています。
How to programmatically enable redfish on Cisco CIMC?
Automate the UCS CLI with expect

今回作成したスクリプトは下記の様になりました。

#!/usr/bin/expect -f

# CIMCへの接続に時間がかかるようで
# 標準設定のtimeout値だとコマンド実行前にプロセスが進んでしまう 
# -1 を設定すると応答があるまで待つが
# ホスト名変更処理後は再起動がかかり、-1だと再起動が終わるまで待つことになってしまい時間がかかるので20に設定
set timeout 20

set CIMCaddr "xxx.xxx.xxx.xxx"
set CIMCuser "admin"
set CIMCpass "パスワード"
set CIMChostname "新ホスト名"


spawn ssh -l $CIMCuser -t $CIMCaddr
expect_after eof {exit 1}
# ログイン処理
expect {
        "*?assword:*" {
                send -- "$CIMCpass\r"
        }
        "(yes/no*)*" {
                send -- "yes\r"
                expect "*?assword:*"
                send -- "$CIMCpass\r"
        }
	# ホスト名変更時にssl証明書再作成が行われるため
	# キーが変わることに対する対応
	# リトライ処理が面倒だったので、古いキーを削除するところまでしか行わない
	# 必要に応じて手動で再実行で対応
        "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED" {
                system ssh-keygen -R $CIMCaddr
                puts "\nplease re-exec this script\n"
                exit 2
        }
}

expect "# "
send -- "scope cimc/network\r"
expect "# "

# 現在のホスト名確認
send -- "show detail | grep Hostname \r"
expect -indices -re "Hostname: (.*)\r"
# 文字列検出に使った": "の2文字分を足す
set strst [string last ": " $expect_out(buffer)]
set strst [expr $strst + 2]
# 行の終わりの改行分を引く
set stred [string length $expect_out(buffer)]
set stred [expr $stred - 2]
set hostnamenow [string range $expect_out(buffer) $strst $stred]
puts "CIMChostname: $CIMChostname"
puts "hostname: $hostnamenow"

# ホスト名の変更が必要か?
if { "$CIMChostname" != "$hostnamenow" } {
        puts "change hostname"
} else {
        puts "no change"
        expect "# "
        send -- "top\r"
        expect "# "
        send -- "exit\r"
        exit 0
}

# ホスト名変更
expect "# "
send -- "set hostname $CIMChostname\r"
expect "*new hostname?*"
send -- "y\r"
expect "# "
send -- "show detail | grep Hostname \r"
expect "# "
send -- "commit\r"
expect "*\[y/N] "
send -- "y\r"

# ホスト名確認
#  ただし実際には再起動が掛かっているので実行できない
expect "# "
send -- "show detail | grep Hostname \r"

expect "# "
send -- "top\r"
expect "# "
send -- "exit\r"

exit 0

Windows Server 2019へのChromium Edgeがわかりにくい!(インストール手順解説


Windows Server 2019環境でブラウザ経由の管理を行うのにChromuimベースのEdgeを使おうと思って、インストールをしようとしたところ、なかなかダウンロードリンクにたどりつけなかったのでメモ書き。

Windows Server 2019をインストールして、標準のInternet Explorerから「edge browser」を検索すると、Google Chomeのプロモーションが表示されたりするけれど、「ダウンロード」をクリックして、手順を進めていくと、「この microsoft-edge を開くには新しいアプリが必要です」と表示されてダウンロードができない。

画像
画像
画像

いろいろ探してみたところ、「Microsoft Edgeの主な機能」ページの上にある”MICROSOFT EDGEを起動しましょう”リンクを無視しして

画像

— 2021/08/05時点の表示 —

下の方にこういう表示が出てきます。

この「Windows Server をご使用されていますか? Microsoft Edge をこちらからダウンロードできます」をクリックするか、「以下用のバージョンをダウンロード Windwos 10」の▽をクリックすると下記の様に選択肢が表示されるので、適切なものを選択します。

2021/10/18追記: 選択しても何も起こらない場合は、信頼するサイトに追加が必要なようです。 ( polyfill.io か mwf-service.akamaized.net ?)

そうすると、下記の様に「Microsoft Edgeをダウンロード」という画面が現れてダウンロードできるようになります。

— 2021/04/27時点の表示 —

下の方にある「Microsoft Edgeを入手する」というリンクをクリック

画像

そうすると、下記の様に「Microsoft Edgeをダウンロード」という画面が現れてダウンロードできるようになります。

画像

—————————–

ただ、Windows Server 2019の標準設定のままでは「現在のセキュリティ設定では、このファイルをダウンロードできません。」と言われてダウンロードできません。

画像

2021/04/27時点ではEdgeインストーラーは https://c2rsetup.officeapps.live.com/c2r/downloadEdge.aspx?~ というリンクからダウンロードされます。

画像

なので、「信頼済みサイト」に「https://*.officeapps.live.com/」と「https://*.microsoft.com/」を追加します。

画像

そうすることでダウンロードができます。

画像
画像

これで、Windows Server 2019環境へのMicrosoft Edgeのインストールが完了しました。

画像

HP-UX 11.31でrootユーザのロック状態を解除するためにシングルユーザモードで起動する


HP-UX 11.31 でrootユーザのパスワードを間違えすぎてロックされている状態になっているサーバで、ロックを解除するためにシングルユーザモードで起動して対処する手順。

シリアルコンソール接続の場合については見かけるけど、キーボード/ディスプレイが接続されている状態でどうなるのかがうまいこと探せなかったので、ここに明記しておく。

(1) EFI Boot Managerで停める

キーボード/ディスプレイが認識している状態でHP-UXサーバの電源を入れると、しばらく黒い画面のままだが、「EFI Boot Manager」という青い画面が表示される。

しばらく放置すると「HP-UX Primary Boot: ~」が選択してOSが自動起動するが、シングルユーザモードで起動する場合は「EFI Shell [ Built-in]」を選択する。

(2) EFI Shellでコマンドを入力

「Shell>」というプロンプトのEFI Shellが表示される。

EFI Shell UEFI version x.xx [xx.xx]
Device mapping table
  fs0   : Acpi(~)
  fs1   : Acpi(~)
  blk0 : Acpi(~)
<略>
startup.nsh> echo -off

  setting hpux path(\EFI\HPUX)...
  type 'fs[x]:' where x is your bootdisk (0, 1, 2...)
  type 'hpux' to start hpux bootloader
Shell> 

通常は”fs0:”というデバイスにシステムが入っているはずなので「fs0:」と実行する。

Shell> fs:0
fs0:\>

そうすると「fs0:\>」というプロンプトに移行する。

今度は「hpux」を実行すると、「Press Any key to interrupt Auto boot ~ Seconds left till autoboot」というカウントダウン中にキー入力し、「HPUX>」というプロンプトを表示する。

(“hpux -is”と実行し、boot -isは実行しないで起動させる、という資料もあったけど、それで動くのか確証がなかったので実施していない)

fs0:\> hpux
<略>

Press Any Key to interrupt Autoboot
\efi\hpux\AUTO ==> boot vmunix
Seconds left till autoboot -    8
   Type 'help' for help

HPUX> 

(3) シングルユーザモードで起動する

「HPUX>」というプロンプトで「boot -is」と入力し、シングルユーザモードでの起動を開始する。

HPUX> boot -is
> System Memory = xxxx MB
loading section 0
.........(complete)
loading section 1
.........(complete)
loading symbol table
loading System Directory (boot.sys) to MFS
.....
loading MFSFILES directory (bootfs) to MFS
.....
<略>

しばらく待つと「INIT: SINGLE USER MODE」と表示されて「#」というプロンプトで停止する。

INIT: Overriding default level with level 's'

INIT: SINGLE USER MODE

INIT: Running /sbin/sh
# 

(4) パーテーションをマウントする

HP-UX 11.31でロックを解除する場合に必要なコマンドは/usrパーテーションにあるため、最低でも/usrパーテーションをマウントします。

なお、dfコマンドも/usrパーテーションにあるため、シングルユーザモードで起動した直後はdfコマンドも実行できません。

# mount /usr
vxfs mount: V-3-21268: /dev/vg00/lvol7 is corrupted. need checking
#

上記のように「is corrupted. need checking」と表示された場合は、ファイルシステムチェックが必要になるのでfsckコマンドを実行します

# fsck /dev/vg00/lvol7
log replay in progress
replay complete - marking super-block as CLEAN
#

この後、再度「mount /usr」を実行して/usrパーテーションをマウントします。

# mount /usr
#

資料を探すと「/usr パーテーションだけマウントすれば大丈夫」というものと「/usr, /var, /tmpをマウントする」というものとあるけど、どちらが適切なのかよく分からないので、「mount -a」で全部マウントしておきます。

# mount -a
<略>
#

マウントできない場合は適宜、表示されるデバイスに対してfsckコマンドを実行してから再度マウントを試みましょう。

(5) rootユーザのロック解除

まず、rootユーザのロック状態を確認するため「/usr/lbin/getprpw -l root」を実行します。

# /usr/lbin/getprpw -l root
uid=0, bootpw=YES, audid=0, audflg=1, mintm=-1, maxpwln=-1, exptm=-1, lftm=-1, <略> sloginy=-1, culogin=27, uloginy=-1, umaxlntr=-1, alock=NO, lockout=0001000
#

最後の「lockout=0001000」の、数字がアカウント状態を表しており、左から4つめの数字が1ならロックされている状態となります。

ロック解除は「/usr/lbin/modprpw -k root」を実行します。

# /usr/lbin/modprpw -k root
# /usr/lbin/getprpw -l root
uid=0, bootpw=YES, audid=0, audflg=1, mintm=-1, maxpwln=-1, exptm=-1, lftm=-1, <略> sloginy=-1, culogin=27, uloginy=-1, umaxlntr=-1, alock=NO, lockout=0000000
#

lockout=0000000 と 左から4つめの数字が0に変わっており、ロックが解除されています。

(6) rootパスワードを変更する[オプション]

rootパスワードがわからないので、再設定したい、という場合は、この操作を行う必要があるようです。

(自分では未実施)

# passwd root
Changing password for root
Old password:
Last successful password change for root: ~
Last unsuccessful password change for root: ~

Do you want (choose one letter only):
        pronounceable passwords generated for you (g)
        a string of letters generated (l) ?
        to pick your passwords: (p) ?

Enter choice here:

…なんか聞かれました。

どうやらTrusted Systemになっているとこうなるようです。

まず、Trusted Systemになっているかを「/usr/lbin/getprdef -r」を実行して確認します。

# /usr/lbin/getprdef -r
NO, 0, 8, 0, 0, -1, 0, YES, YES, NO, NO, NO, YES, 3, 10, 2, 0
#

Trusted Systemだと上記のように何か表示されます。

Trustedではない場合はエラーになるようです

Trusted Systemを解除する場合は「/usr/lbin/tsconvert -r」を実行します。

その後に「passwd root」でパスワードを再設定し、

「/usr/lbin/tsconvert」で再度 Trusted Systemに戻す、という作業をするようです。

(7) 再起動

再起動して、正常に起動し、ログインが行えるか確認します。


おまけ

シングルユーザモードでBackspaceとか、Ctrl+Cが有効になっていなかった件への対応はおそらく下記を設定すればいけるのではないかとおもわれる(ネタ元:/* とりあえず */ Alive and WellHP-UX/stty – CTRL-Cで中止を明示的に定義」)

Backspaceの有効化

$ stty erase "^H"

Ctrl+Cの有効化

$ stty intr ^c

その他、2021年現在のLinux環境でよくある設定をまとめて実施したい場合

$ stty erase "^H" kill "^U" intr "^C" eof "^D" susp "^Z" hupcl ixon ixoff tostop cs8 -istrip 

DELL PowerEdge R420/ESXi環境でiDRACのアップデートを行う


ESXi7.0がインストールされているDELL PowerEdge R420のiDRACが更新されていないことに気がついたのでアップデートを試みた

[root@esxi70:/vmfs/volumes/5ec1e973-8ca56b7a-bafa-90b11c536183/.locker/tmp] ./Network_Firmware_7CM1N_LN_21.60.16.BIN -c
Invalid option: --packagepath=/scratch/tmp/Network_Firmware_7CM1N_LN_21.60.16.BIN
Try -h or --help for help.
[root@esxi70:/vmfs/volumes/5ec1e973-8ca56b7a-bafa-90b11c536183/.locker/tmp]

エラー。とりあえずオプションを確認してみる。

[root@esxi70:/vmfs/volumes/5ec1e973-8ca56b7a-bafa-90b11c536183/.locker/tmp] ./Network_Firmware_7CM1N_LN_21.60.16.BIN -h
Command-line options for the Update Package

Usage: <package name> [options...]

Options:

-h,--help     : Display command-line usage help
-c            : Determine if the update can be applied to the system (1)
-f            : Force a downgrade to an older version. (1)(2)
-q            : Execute the update package silently without user intervention
-n            : Execute the update package without security verification
-r            : Reboot if necessary after the update (2)
-v,--version  : Display version information
--list        : Display contents of package (3)
--installpath=<path>    : Install the update package in the specified path only if options (2) and (8)  are supported.

--extract <path> : Extract files to specified path (3)(4)
-qi, --queryinventory   : Inventory if selective update is supported. (2) (5)
-su=<device list> or --selectiveupdate=<device list>    :  give the list of devices to update.(2) (6) (7)
--bmcpath=<value>       : Chooses Inventory/Update path (value specified will be : ipmi - use KCS path or usbnic - use OS-BMC passthrough)

(1) Can NOT use -f with the -c option
(2) Only takes effect if used with -q
(3) Can be used only before extracting the package
(4) Can NOT use --extract with any other option
(5) Can use only with -q option. Can NOT be used with -f, -c, -h, -n, -r, -v, --list, --extract, -su
(6) Can NOT be used with -c, -h, -n, -v, --list, --extract, -qi
(7) Device list should not contain any space.
(8) Only Application DUP supports.
[root@esxi70:/vmfs/volumes/5ec1e973-8ca56b7a-bafa-90b11c536183/.locker/tmp]

とりあえずファイルを展開

[root@esxi70:/vmfs/volumes/5ec1e973-8ca56b7a-bafa-90b11c536183/.locker/tmp] ./iDRAC-with-Lifecycle-Controller_Firmware_0GHF4_LN_2.65.65.65_A00.BIN --extract
 ./idrac
Successfully extracted to ./idrac
[root@esxi70:/vmfs/volumes/5ec1e973-8ca56b7a-bafa-90b11c536183/.locker/tmp] cd idrac/
[root@esxi70:/vmfs/volumes/5ec1e973-8ca56b7a-bafa-90b11c536183/.locker/tmp/idrac] ls
00-secupd-dell.rules      buildVer.sh               package.xml
98-secupdusb.rules        dellIPMI.sh               package.xml.sign
HashOfHashFileList.txt    dellIPMI_msgs.sh          payload
LinuxDepWrapperLinux.bin  disneyinstall.sh          prereqcheck
OSFlavourUtils.sh         dupdisneyinstall.sh       smbiosHelp.txt
PIEConfig.sh              duppmdatacollector.bin    spUtilityHelp.txt
PIEInfo.txt               duputil.sh                spconfig.xml
UdevHal.sh                en.prop                   sphelp.txt
Version.txt               getSystemId               spsetup.sh
bmccfg.def                hapi                      sputility.bin
bmcfwu.cfg                lxhapi.ini                svmExeMsg.xsl
bmcfwul                   mc.txt                    uni-eol.txt
bmcie.sh                  os_mapping.xml
[root@esxi70:/vmfs/volumes/5ec1e973-8ca56b7a-bafa-90b11c536183/.locker/tmp/idrac]

とりあえずduputil.shを実行してみる

[root@esxi70:/vmfs/volumes/5ec1e973-8ca56b7a-bafa-90b11c536183/.locker/tmp/idrac] sh duputil.sh
duputil.sh: line 53: rpm: not found
duputil.sh: line 53: rpm: not found
duputil.sh: line 53: rpm: not found
duputil.sh: line 53: rpm: not found
duputil.sh: line 53: rpm: not found
duputil.sh: line 64: rpm: not found
[root@esxu70:/vmfs/volumes/5ec1e973-8ca56b7a-bafa-90b11c536183/.locker/tmp/idrac]

rpmコマンドを実行しようとして失敗している。

動かないのも当然そうだ。

というわけでおとなしくiDRACのWeb UIからファームウェアアップデート

iDRAC-with-Lifecycle-Controller_Firmware_0GHF4_LN_2.65.65.65_A00.BIN を7zipで開いてpayload/firmimg.d7 を読み込ませるとアップデートできます。