VMWARE 上 の Gentoo Linux で Version 2.6.21/2.6.22 を利用するのにハマった点をメモ。
環境は、 x86_64 なホスト OS 上での x86_64 なゲストOS(GentooLinux)を対象としています。
ホストの VMWareServer は 1.0.3、ディスクイメージは SCSI、ホストアダプタは LSILogic を前提とします。
ディスクイメージを SCSI エミュレーションで行う場合、VMWARE がエミュレーションしている SCSI ホストアダプタに対応するドライバである、 /usr/src/linux/drivers/message/fusion/mptbase.c に以下のパッチを当てる。
*** 2567,2572 ****
— 2567,2577 —-
pfacts->IOCStatus = le16_to_cpu(pfacts->IOCStatus);
pfacts->IOCLogInfo = le32_to_cpu(pfacts->IOCLogInfo);
pfacts->MaxDevices = le16_to_cpu(pfacts->MaxDevices);
+
+ if( pfacts->MaxDevices == 0 ) {
+ pfacts->MaxDevices = 16;
+ }
+
pfacts->PortSCSIID = le16_to_cpu(pfacts->PortSCSIID);
pfacts->ProtocolFlags = le16_to_cpu(pfacts->ProtocolFlags);
pfacts->MaxPostedCmdBuffers = le16_to_cpu(pfacts->MaxPostedCmdBuffers);
その上で、Fusion MPT をモジュールではなくカーネル内蔵とする1 。すべてが必要というわけではないだろうが (FUSION と FUSION_SPI のみ必須?)、大してサイズに影響を与えないのですべて enable にする。
CONFIG_FUSION=y
CONFIG_FUSION_SPI=y
CONFIG_FUSION_FC=y
CONFIG_FUSION_SAS=y
CONFIG_FUSION_MAX_SGE=128
CONFIG_FUSION_CTL=y
CONFIG_FUSION_LAN=y
2.6.22 で、かつ amd64 の場合は、さらに以下の KERNEL CONFIG オプションを変更する。
CONFIG_RELOCATABLE=y
CONFIG_PHYSICAL_START=0×2000000
これで genkernel
genkernel all
すれば、あなたの Gentoo Linux 2.6.22(or21) が、 VMWARE 上で走ってくれます。
素敵。
- これはうちの環境だけかもしれないが、モジュールとしてコンパイルするとルートディレクトリが見えないと grub が止まる modprobe でロードした後は正常に起動する [↩]
Related posts:


:








2 users commented in " VMWARE 上 の x86_64 Gentoo Linux で Version 2.6.21/2.6.22 を利用するまとめ "
コメントをフィードする comment rss / トラックバックするVMware: Workstation 6 (Windows XP 32bit)
Gentoo: 2.6.24-gentoo-r4
IDE に逃げるのは嫌、古い BusLogic はいやじゃということで、同様の罠にはまり途方に暮れていました。
ググったところ台湾あたりでは解決方法として挙げられていますが、どうやって解決されたのでしょう?後学のために教えていただければ幸いです。
基本的に 2.6.22, 23 で行ったことと同様です。
/usr/src/linux-2.6.24-gentoo-r7/drivers/message/fusion/mptbase.c
の
pfacts->MaxDevices = le16_to_cpu(pfacts->MaxDevices);
の直後に、
if( pfacts->MaxDevices == 0 )
{
pfacts->MaxDevices = 16;
}
というコードをパッチすれば 2.6.24 でも LSI Logic ドライバで動作しました。
コメントする