VMware ESXi 3.5.0 をインストール(その7)

  • 投稿日:
  • by
HDD が認識しないという悪夢が再来したので、死に物狂いで情報を探しまくりました。 まず、何が原因かを探りました。調べると、どうやら SATA コントローラが原因らしいという情報を確認。ESXi サーバーの中に、oem.tgz というドライバの設定情報が書かれたファイルがアーカイブされたファイルがあって、起動時に展開され使用されるようだ。打開策としては、そのファイルに追加の設定を加えてやればいいという。参考サイトを見ながら、まず、unsupported コマンドで、シェルにログインし、SSH でリモートログインできるように設定を変更。その後に、自分の環境を確認して、確認した情報をもとに行ってみました。

まず、ESXi が起動している状態で、Alt + F1 を押すと画面が遷移するので、unsupported と入力し、Enter キーを押して実行します。ちなみに入力した文字は表示されませんので注意してください。
すると、以下のメッセージが表示されます。
You have activated Tech Support Mode.
The time and date of this activation have been sent to the system logs.

WARNING - Tech Support Mode is not supported unless used in 
consultation with VMware Tech Support. Tech Support Mode may be 
disabled by an administrative user. Disabling requires a reboot of 
the system. Please consult the ESX Server 3i Configuration Guide 
for important additional information.

Password: 
そしたら、ESXi 起動後に設定した root のパスワードを入力し Enter を押します。
すると、モードが切り替わった旨のメッセージが表示されます。
Tech Support Mode successfully accessed.
The time and date of this access have been sent to the system logs.

WARNING - Tech Support Mode is not supported unless used in
consultation with VMware Tech Support.
やっと、シェルにログインできたので、inetd.conf を編集します。まずは vi コマンドでファイルを開きます。
~ # vi /etc/inetd.conf
で、以下の行を見つけ、行頭の「#」を削除し、コメントアウトを解除します。
# ssh     stream  tcp     nowait  root    /sbin/dropbearmulti     dropbear ++min=0,swap,group=shell -i
念のため、コメントアウト解除後は以下のようになります。この状態で保存してください。
 ssh     stream  tcp     nowait  root    /sbin/dropbearmulti     dropbear ++min=0,swap,group=shell -i
保存したら、reboot コマンドでマシンを再起動します。
~ # reboot
その後は、SSH でリモートログインできるようになります。

で、次はいよいよ SATA コントローラの編集です。
まず、 SSH でマシンにログインします。ログイン後に、lspci コマンドで以下のように SATA コントローラの情報を取得します。
~ # lspci
00:00.00 Memory controller: nVidia Corporation  
00:01.00 Bridge: nVidia Corporation  
00:01.01 Serial bus controller: nVidia Corporation  
00:01.02 Memory controller: nVidia Corporation  
00:01.03 Processor: nVidia Corporation  
00:01.04 Memory controller: nVidia Corporation  
00:02.00 Serial bus controller: nVidia Corporation  
00:02.01 Serial bus controller: nVidia Corporation  
00:04.00 Serial bus controller: nVidia Corporation  
00:04.01 Serial bus controller: nVidia Corporation  
00:06.00 Mass storage controller: nVidia Corporation  
00:07.00 : nVidia Corporation  
00:08.00 Bridge: nVidia Corporation  
00:09.00 Mass storage controller: nVidia Corporation  
00:11.00 Bridge: nVidia Corporation  
00:16.00 Bridge: nVidia Corporation  
00:18.00 Bridge: nVidia Corporation  
00:19.00 Bridge: nVidia Corporation  
00:24.00 Bridge: Advanced Micro Devices [AMD]  
00:24.01 Bridge: Advanced Micro Devices [AMD]  
00:24.02 Bridge: Advanced Micro Devices [AMD]  
00:24.03 Bridge: Advanced Micro Devices [AMD]  
00:24.04 Bridge: Advanced Micro Devices [AMD]  
02:00.00 Display controller: nVidia Corporation  
04:00.00 Network controller: Intel Corporation 82572EI Gigabit Ethernet Controller [vmnic0]
05:00.00 Serial bus controller:   
で、その中から、該当するものを探す。自分の場合はたぶんこれになると思う。
00:06.00 Mass storage controller: nVidia Corporation  
00:09.00 Mass storage controller: nVidia Corporation  
さらに、lspci コマンドに -v オプションをつけて SATA コントローラの詳細情報を取得します。
~ # lspci -v
00:00.00 RAM memory Memory controller: nVidia Corporation  
         Class 0500: 10de:0754

00:01.00 ISA bridge Bridge: nVidia Corporation  
         Class 0601: 10de:075c

00:01.01 SMBus Serial bus controller: nVidia Corporation  
         Class 0c05: 10de:0752

00:01.02 RAM memory Memory controller: nVidia Corporation  
         Class 0500: 10de:0751

00:01.03 Co-processor Processor: nVidia Corporation  
         Class 0b40: 10de:0753

00:01.04 RAM memory Memory controller: nVidia Corporation  
         Class 0500: 10de:0568

00:02.00 USB Controller Serial bus controller: nVidia Corporation  
         Class 0c03: 10de:077b

00:02.01 USB Controller Serial bus controller: nVidia Corporation  
         Class 0c03: 10de:077c

00:04.00 USB Controller Serial bus controller: nVidia Corporation  
         Class 0c03: 10de:077d

00:04.01 USB Controller Serial bus controller: nVidia Corporation  
         Class 0c03: 10de:077e

00:06.00 IDE interface Mass storage controller: nVidia Corporation  
         Class 0101: 10de:0759

00:07.00  : nVidia Corporation  
         Class 0403: 10de:0774

00:08.00 PCI bridge Bridge: nVidia Corporation  
         Class 0604: 10de:075a

00:09.00 IDE interface Mass storage controller: nVidia Corporation  
         Class 0101: 10de:0ad0

00:11.00 PCI bridge Bridge: nVidia Corporation  
         Class 0604: 10de:0569

00:16.00 PCI bridge Bridge: nVidia Corporation  
         Class 0604: 10de:0778

00:18.00 PCI bridge Bridge: nVidia Corporation  
         Class 0604: 10de:075b

00:19.00 PCI bridge Bridge: nVidia Corporation  
         Class 0604: 10de:077a

00:24.00 Host bridge Bridge: Advanced Micro Devices [AMD]  
         Class 0600: 1022:1200

00:24.01 Host bridge Bridge: Advanced Micro Devices [AMD]  
         Class 0600: 1022:1201

00:24.02 Host bridge Bridge: Advanced Micro Devices [AMD]  
         Class 0600: 1022:1202

00:24.03 Host bridge Bridge: Advanced Micro Devices [AMD]  
         Class 0600: 1022:1203

00:24.04 Host bridge Bridge: Advanced Micro Devices [AMD]  
         Class 0600: 1022:1204

02:00.00 VGA compatible controller Display controller: nVidia Corporation  
         Class 0300: 10de:0848

04:00.00 Ethernet controller Network controller: Intel Corporation 82572EI Gigabit Ethernet Controller [vmnic0]
         Class 0200: 8086:10b9

05:00.00 FireWire (IEEE 1394) Serial bus controller:   
         Class 0c00: 197b:2380
該当する部分を憶えておきます。
00:06.00 IDE interface Mass storage controller: nVidia Corporation  
         Class 0101: 10de:0759
00:09.00 IDE interface Mass storage controller: nVidia Corporation  
         Class 0101: 10de:0ad0
次に、hwinfo コマンドでベンダー ID, ドライバ ID, サブベンダー ID, ドライバ ID を取得します。
~ # hwinfo -p
Bus:Sl.F Vend:Dvid Subv:Subd ISA/irq/Vec P M Module       Name    
                             Spawned bus                          
00:00.00 10de:0754 1043:82f2               V              
00:01.00 10de:075c 1043:82f2               V              
00:01.01 10de:0752 1043:82f2 15/   /     A V              
00:01.02 10de:0751 1043:82f2               V              
00:01.03 10de:0753 1043:82f2 11/ 11/0x71 B V              
00:01.04 10de:0568 1043:82f2               V              
00:02.00 10de:077b 1043:82f2 10/ 10/0x71 A V usb-ohci     
00:02.01 10de:077c 1043:82f2 10/ 10/0x71 B V ehci-hcd     
00:04.00 10de:077d 1043:82f2 15/ 15/0x71 A V usb-ohci     
00:04.01 10de:077e 1043:82f2 11/ 11/0x71 B V ehci-hcd     
00:06.00 10de:0759 1043:82f2 255/   /     @ V              
00:07.00 10de:0774 1043:82fe 10/ 10/0x71 A V              
00:08.00 10de:075a 0000:0000     001       V              
00:09.00 10de:0ad0 1043:82f2  5/  5/0x71 A V              
00:11.00 10de:0569 0000:0000     002       V              
00:16.00 10de:0778 0000:0000 10/ 10/0x79 A V              
00:18.00 10de:075b 0000:0000 11/ 11/0x79 A V              
00:19.00 10de:077a 0000:0000 15/ 15/0x79 A V              
00:24.00 1022:1200 0000:0000               V              
00:24.01 1022:1201 0000:0000               V              
00:24.02 1022:1202 0000:0000               V              
00:24.03 1022:1203 0000:0000               V              
00:24.04 1022:1204 0000:0000               V              
02:00.00 10de:0848 1043:82f2 10/   /     A V              
04:00.00 8086:10b9 8086:1083 11/ 11/0x79 A V e1000        vmnic0
05:00.00 197b:2380 1043:8313 15/ 15/0x79 A V              
ここでも、該当する部分を憶えておきます。
00:06.00 10de:0759 1043:82f2 255/   /     @ V              
00:09.00 10de:0ad0 1043:82f2  5/  5/0x71 A V              
で、これらの情報をもとに、既存のドライバ情報が収められたファイルを編集します。
流れとしては、既存の simple.mappci.ids という 2つのファイルを編集し、アーカイブする訳ですが、その前に、展開したときに、所定の場所にファイルが展開されるように、あらかじめディレクトリを掘っておきます。
以下は、ディレクトリの作成から、既存の simple.map をコピーしてファイルを開くまでの手順です。
# cd /tmp/
# mkdir -p oem/etc/vmware
# mkdir -p oem/usr/share/hwdata
# cd oem/etc/vmware/
# cp /etc/vmware/simple.map simple.map
# vi simple.map
simple.map を開いたら、以前に取得した SATA コントローラの情報と、simple.map 内のフォーマットを参考に、設定を追加します。自分の場合は、以下の記述を追加しました。
10de:0759 1043:82f2 storage ata_piix
10de:0ad0 1043:82f2 storage ata_piix
simple.map に設定を追加してファイルを保存したら、次は pci.ids を編集します。
以下、既定のディレクトリに移動して、コピーした pci.ids を開くまでの手順です。
# cd /tmp/oem/usr/share/hwdata
# cp /usr/share/hwdata/pci.ids pci.ids
# vi pci.ids
開いたファイルに設定を追加します。ちなみにここでの編集は、Virtual Infrastructure Client 上での項目名の表示に使用されるようなので、編集しなくてもいいようです。
自分の場合は、「10de nVidia Corporation」という項目を探して、tab でインデントをつけたかたちで以下の内容を追記します。
	0759  IDE interface Mass storage controller: nVidia Corporation
	0ad0  IDE interface Mass storage controller: nVidia Corporation
pci.ids を保存したら、ディレクトリとファイルに所有者と権限を適切に設定して、アーカイブし、所定の場所に上書きします。
具体的な手順は、以下の通りです。
# cd /tmp/oem/
# chown -R 201:201 ./etc
# chown -R 201:201 ./usr
# chmod -R 755 ./etc
# chmod -R 755 ./usr
# chmod 644 ./etc/vmware/simple.map
# chmod 644 ./usr/share/hwdata/pci.ids
# tar -cvzf oem.tgz etc usr
# cp oem.tgz /bootbank/oem.tgz
# cd /bootbank/
# chmod 755 oem.tgz
オリジナルの oem.tgz を所定の場所にコピーしたら、マシンを再起動します。
~ # reboot
ちょっと長くなってしまったので、結果は次で書くことにします。

参考にしたサイト