カーネル 2.6.21 以降では VMware 仮想マシンのハードディスクドライバとして使用されている lsilogic によるエミュレーションが正常に動作しないため、ハードディスクを認識することができず、システムを起動することができません。カーネル 2.6.21 や 2.6.22 を使う場合には、仮想マシンの設定ファイル(*.vmx)を開いて lsilogic を buslogic に変更してください。
|
scsi0.virtualDev = "lsilogic" ↓ scsi0.virtualDev = "buslogic" |
起動時に Do you want VMware Workstation to change the adapter type for scsi0:0 disk? と質問された場合、 Yes と答えます。
Fedora 7 のインストーラでは 2.6.21 カーネルが使われているので、インストール前に上記の変更を行う必要があります。
Fedora Core 6 でも昨日 2.6.20-1.2962.fc6 から 2.6.22.1-32.fc6 にアップデートされたので、再起動したら起動できないという上記の問題に遭遇します。
以下は、私が行った対処法です。
yum -y update で 2.6.22.1-32.fc6 カーネルをインストールします。
2.6.20-1.2962.fc6 で起動している間に /etc/modprobe.conf を開いて scsi_hostadapter を BusLogic に変更します。
|
alias scsi_hostadapter mptbase alias scsi_hostadapter1 mptspi ↓ alias scsi_hostadapter BusLogic |
2.6.22.1-32.fc6 カーネル用の initrd を作り直します。これで、 initrd に BusLogic ドライバが含まれるようになります。
| mkinitrd -f /boot/initrd-2.6.22.1-32.fc6.img 2.6.22.1-32.fc6 |
シャットダウンします。
| poweroff |
仮想マシンの設定ファイルを開いて lsilogic を buslogic に変更します。
|
scsi0.virtualDev = "lsilogic" ↓ scsi0.virtualDev = "buslogic" |
仮想 CPU を1個しか割り当てていないシステムではこれで動くはずです。
私の環境( ThinkPad X60 )では仮想 CPU を2個割り当てています。その場合、ハードディスクの認識前に処理が先に進んでしまい、 kernel panic になるため起動できませんでした。
何故かカーネルのコマンドラインで nosmp を指定しても効果がありません。そのため、仮想マシンの設定ファイルを開いて仮想 CPU を1個にしました。
|
numvcpus = "2" ↓ numvcpus = "1" |
これでとりあえず起動できました。ログインして、ハードディスクを認識させるためのスリープ処理を加えるために initrd を修正します。
|
mkdir /tmp/initrd cd /tmp/initrd zcat /boot/initrd-2.6.22.1-32.fc6.img | cpio -id |
init を開いて BusLogic.ko をロードした後に sleep 10 を挿入します。
|
insmod /lib/BusLogic.ko mkblkdevs ↓ insmod /lib/BusLogic.ko sleep 10 mkblkdevs |
念のため別名で initrd を作成します。
| find . -print0 | cpio -o0 -H newc | gzip -9 > /boot/initrd-2.6.22.1-32sleep.fc6.img |
シャットダウンします。
| poweroff |
仮想マシンの設定ファイルを開いて仮想 CPU を2個に戻します。
|
numvcpus = "1" ↓ numvcpus = "2" |
grub の画面では /boot/initrd-2.6.22.1-32.fc6.img の代わりに /boot/initrd-2.6.22.1-32sleep.fc6.img を指定してください。
これで起動できると思います。起動できたら、 /boot/initrd-2.6.22.1-32sleep.fc6.img を /boot/initrd-2.6.22.1-32.fc6.img にリネームしてください。