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 上で走ってくれます。
素敵。

  1. これはうちの環境だけかもしれないが、モジュールとしてコンパイルするとルートディレクトリが見えないと grub が止まる modprobe でロードした後は正常に起動する []

Related posts:

  1. gentoo linux 2.6.23 updateed.
  2. gentoo linux 2.6.23-r6 へ
  3. Gentoo Linux 2.6.22 がビルドできない
  4. gentoo-linux で resolv.conf に固定的に nameserver を記載する方法
  5. gentoo linux , ebuild for Ruby TMail.