1

У меня на жестком диске установлена копия Windows XP, которую я хотел бы запустить с QEMU.

Когда я запускаю его прямо с жесткого диска, он работает нормально:

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

Хотя емкость жесткого диска составляет 320 ГБ, моя система фактически находится в разделе 4 ГБ в начале диска:

/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/sdc1 с QEMU вместо копии /dev/sdc?

3 ответа3

0

если вы можете «смонтировать» файл образа на компьютер с Windows (желательно с XP), вы можете использовать инструменты Microsoft, чтобы увидеть, в чем проблема. раздел должен быть «активным», это должен быть диск в формате MBR (не GPT), и у него должен быть правильный загрузочный сектор.

такие инструменты, как diskpart и bootsect /nt52 /mbr, были полезны для меня в прошлом. Я не знаком с загрузкой окон из раздела Linux.

0

Просто предположение: вы не получаете 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.
0

Похоже, что SeaBIOS (используемый QEMU при эмуляции целей ПК) не имеет ручной настройки и всегда автоматически определяет геометрию привода. Поскольку мое частичное изображение довольно маленькое, его геометрия CHS определяется как 8129 * 16 * 63 а не 510 * 255 * 63 . Это сделано для совместимости со старыми дисками, которые не понимали LBA и поэтому были ограничены 16 головками.

Из-за несоответствия между геометрией диска в MBR и BIOS, загрузчик не может правильно загрузить Windows.

Теоретически, изображения более 8 ГБ не должны быть затронуты (я знаю, что мой образ 320 ГБ работал), так как диски с более чем 8 ГБ должны поддерживать LBA. К сожалению, у меня больше нет этого изображения, чтобы проверить эту гипотезу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .