QEMU 客户系统从 /dev/sdc 启动,但无法从磁盘映像文件启动

QEMU 客户系统从 /dev/sdc 启动,但无法从磁盘映像文件启动

我在硬盘上安装了 Windows XP 的副本,我想用 QEMU 运行它。

当我直接从 HDD 启动它时,它运行良好:

qemu -m 256 -hda /dev/sdc
Starting Windows...etc...etc...

虽然硬盘容量是320GB,但我的系统实际上位于磁盘开头的4GB分区中:

/sbin/fdisk -l /dev/sdc

Disk /dev/sdc: 320 GB, 320070320640 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *           1         510     4096543    b  FAT32
Warning: Partition 1 does not end on cylinder boundary.

因此我认为我只能将分区表和第一个分区(8192000 个扇区)复制到原始映像中以供 QEMU 使用:

dd if=/dev/sdc of=winxp.img count=8192000

当然,由于winxp.img是的副本/dev/sdc,因此它具有完全相同的分区布局:

/sbin/fdisk -l winxp.img

Disk /mnt/windata/winxp.raw: 4 GB, 4186667520 bytes
255 heads, 63 sectors/track, 509 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

                 Device Boot      Start         End      Blocks   Id  System
/mnt/windata/winxp.raw1   *           1         510     4096543    b  FAT32
Warning: Partition 1 does not end on cylinder boundary.

然而,当我尝试将原始图像与 QEMU 一起使用时,客户系统无法启动:

qemu -m 256 -hda winxp.img
Booting from hard disk...
NTLDR is missing

我可以更改哪些设置来使我的映像文件与 QEMU 兼容?我是否应该更改分区表中或分区本身中的某些内容以使其正常工作?是否有 QEMU 选项可以提供帮助?

或者是否可以使用/dev/sdc1QEMU 的副本而不是的副本/dev/sdc

答案1

如果您可以将映像文件“安装”到 Windows 机器(最好是 XP),则可以使用 Microsoft 工具来查看问题可能是什么。分区必须处于“活动”状态,必须是 MBR(而非 GPT)格式的磁盘,并且必须具有正确的启动扇区。

过去,diskpart 和 bootsect /nt52 /mbr 等工具对我很有用。我不熟悉如何从 Linux 分区启动 Windows。

答案2

只是猜测:您没有获得 MBR,我想您已经知道了。整个磁盘太大了。所以......

1) grab a USB drive with enough space
get a working disk image;
convert to qcow2;
shrink it.

2) use gparted or parted to shrink the original.
e2fsck and tune2fs *may* be helpful, also resize2fs.

答案3

看来 SeaBIOS(QEMU 在模拟 PC 目标时使用)无需手动配置并且始终自动确定驱动器几何形状。由于我的部分映像非常小,因此其 CHS 几何形状被检测为8129 * 16 * 63而不是510 * 255 * 63。这样做是为了与不理解 LBA 的旧驱动器兼容,因此仅限于 16 个磁头。

由于 MBR 和 BIOS 中的驱动器几何结构不匹配,引导加载程序无法正确启动 Windows。

理论上,8GB 以上的映像不会受到影响(我知道我的 320GB 映像可以正常工作),因为 8GB 以上的驱动器必须支持 LBA。不幸的是,我不再有该映像来测试这个假设。

相关内容