出现此问题的原因是,操作系统的 ramdisk 映像不包含适用于为虚拟机配置的虚拟 SCSI 适配器的驱动程序或模块。这些模块之所以不在 ramdisk 映像中,是因为该映像最初是在不使用此硬件的系统中创建的。必须将现有 ramdisk 映像替换为包含正确驱动程序的 ramdisk 映像。
Converter 3.0.x 不支持 Linux 操作系统热克隆,也不支持对新虚拟硬件生成的虚拟机进行配置。仅支持不进行任何配置的冷克隆。而 vCenter Converter 4.0 支持某些 Linux 操作系统的热克隆和配置,包括 Red Hat。有关支持版本的列表,请参阅相关手册。
验证下面每个故障排除步骤是否适合您的环境。每个步骤提供相关说明或文档链接,用于消除可能的原因和采取必要的补救措施。这些步骤按照最合适的顺序排序,以隔离问题并确定正确的解决方法。请勿跳过任何一个步骤。
注意: 如果您在以下任意步骤中执行补救措施,请尝试再次引导虚拟机。
- 如果您的物理源计算机安装了 vCenter Converter 4.0 支持的 Red Hat 版本,并且您对其具有访问权限,请执行以下操作:
- 升级到 vCenter Converter 4.0(如果尚未执行此操作)。
- 运行 Converter 并执行另一个物理机到虚拟机的转换。此虚拟机应该能够引导。
- 如果您无法使用 Converter 创建能够引导的新 Red Hat 虚拟机,则需要修改客户机操作系统。
注意:
- VMware 建议您在开始之前生成虚拟机的快照。VMware 还建议您为这些步骤中编辑的文件创建备份。操作系统正常工作后,可以删除该快照和备份的文件。
- 在这些步骤中,您需要确保操作系统具有类型正确的虚拟硬盘控制器。该控制器可以是 LSI Logic 或 BusLogic。请选择最适合您的 Red Hat 版本的控制器,并确保该控制器是要呈现给虚拟机的控制器。
要修改客户机操作系统,请执行以下操作:
- 从第一个 Red Hat 安装磁盘引导虚拟机。
- 在第一个提示符处,键入 linux rescue 并按 Enter 键。
- 将 root 更改为挂载的安装。键入 chroot /mnt/sysimage 并按 Enter 键。
- 如果物理机基于 IDE,请将文件 /etc/fstab、/boot/grub/device.map 和 /boot/grub/grub.conf 中文本 /dev/hda 的任意实例替换为 /dev/sda。
- 确保 grub 已正确安装。键入 grub-install 并按 Enter 键。
- 如果 /etc/modules.conf 文件存在,请编辑该文件并移除所有现有条目。
- 编辑 /etc/modprobe.conf 文件。
- 查找 alias ethx module 条目,其中 x 将替换为数字,module 将替换为文本。将每个 module 条目更改为 pcnet32。
如果您要使用 BusLogic:
查找 alias scsi_hostadapterx module 条目,其中 x 将替换为数字,module 将替换为文本。将每个 module 条目更改为 BusLogic。
- 如果使用 LSI Logic,请执行以下操作:
查找 alias scsi_hostadapterx module 条目,其中,x 替换为数字,module 替换为文本。 将每个 module 条目更改为 mptscsih。
此外,查找 alias scsi_hostadapter module 条目,其中,module 替换为文本,而 hostadapter 后面没有数字。如果存在,请将 module 替换为 mptbase。如果不存在,请紧接在 alias scsi_hostadapter1 mptscsih 行的上方添加 alias scsi_hostadapter mptbase。
- 确定要重建的 ramdisk 映像的完整路径。 该文件位于 /boot。键入 ls /boot 并按 Enter 键,列出该目录的内容。 其中包含名称类似于 initrd-2.6.9-42.EL.img 的文件。
例如,ramdisk 映像的完整路径为 /boot/initrd-2.6.9-42.EL.img。记录该路径。
注意: 如果 /boot 中存在多个 initrd- 文件,请键入 cat /etc/grub.conf 并按 Enter 键,确定正在使用的文件。
- 确定要用于重建 ramdisk 映像的内核版本。 键入 ls /lib/modules 并按 Enter 键。
例如,会看到目录 2.6.9-42.EL。记录该版本。
注意: 如果显示多个目录,请键入 cat /etc/grub.conf 并按 Enter 键,确定正在使用的内核版本。
- 重建 ramdisk。运行 mkinitrd -v -f /boot/initrd-2.6.9-42.EL.img 2.6.9-42.EL 命令并按 Enter 键,其中,/boot/initrd-2.6.9-42.EL.img 将替换为步骤 h. 中记录的信息,2.6.9-42.EL 将替换为步骤 I 中记录的信息。
- 如果您无法使用支持的 Red Hat 版本,或者步骤 2 中的过程不起作用,请执行以下操作:
- 将物理机修改为支持 BusLogic 或 LSI Logic。
- 重新转换物理机。