1

У меня есть гость FreeBSD-7 (в образе диска qcow2), который прекрасно работает, когда я запускаю его из командной строки с

# kvm -drive file=freebsd7.disk

Но когда он запускается из графического интерфейса virt-manager , он проходит через загрузчик второго уровня, а затем зависает - в частности, он сам "останавливается" и отказывается от остановки. Вот скриншот из последних нескольких вещей, которые он печатает:

а вот и xobbledygook для настройки xml из virsh -c qemu:///system dumpxml freebsd7-vm:

<domain type='kvm'>
  <name>freebsd7-vm</name>
  <uuid>d91ca4d4-96d3-0f2f-1c18-cf4bc366c1ab</uuid>
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <vcpu placement='static'>4</vcpu>
  <os>
    <type arch='x86_64' machine='pc-1.1'>hvm</type>
    <boot dev='hd'/>
    <bootmenu enable='no'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/home/zack/Boxes/freebsd-7.disk'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:1d:9f:8e'/>
      <source network='default'/>
      <model type='e1000'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes'/>
    <sound model='ich6'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </sound>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </memballoon>
  </devices>
</domain>

Я уверен, что это можно исправить, изменив что-то в конфигурации, но я понятия не имею, с чего начать.

(да, использование древней версии FBSD является преднамеренным)

РЕДАКТИРОВАТЬ: Как предлагается ниже, изменение <vcpu placement='static'>4</vcpu> на <vcpu placement='static'>1</vcpu> позволяет выполнить успешную загрузку. Кроме того, при запуске виртуальной машины из командной строки с несколькими процессорами создается аварийный дамп:

# kvm -smp 2 -drive file=freebsd7.disk
KVM internal error. Suberror: 1
emulation failure
RAX=ffffffff8080e1c0 RBX=000000000009f000 RCX=00000000c0000080 RDX=0000000000000000
RSI=000000000000d238 RDI=0000000000000000 RBP=0000000000000000 RSP=0000000000000000
R8 =0000000000000000 R9 =0000000000000000 R10=0000000000000000 R11=0000000000000000
R12=0000000000000000 R13=0000000000000000 R14=0000000000000000 R15=0000000000000000
RIP=000000000009f076 RFL=00010086 [--S--P-] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0000 0000000000000000 0000ffff 0000f300 DPL=3 DS16 [-WA]
CS =0008 0000000000000000 00000000 00209900 DPL=0 CS64 [--A]
SS =9f00 000000000009f000 0000ffff 0000f300 DPL=3 DS16 [-WA]
DS =0018 0000000000000000 ffffffff 00c09300 DPL=0 DS   [-WA]
FS =0000 0000000000000000 0000ffff 0000f300 DPL=3 DS16 [-WA]
GS =0000 0000000000000000 0000ffff 0000f300 DPL=3 DS16 [-WA]
LDT=0000 0000000000000000 0000ffff 00008200 DPL=0 LDT
TR =0000 0000000000000000 0000ffff 00008b00 DPL=0 TSS64-busy
GDT=     000000000009f080 00000020
IDT=     0000000000000000 0000ffff
CR0=80000011 CR2=0000000000000000 CR3=000000000009c000 CR4=00000030
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 
DR6=00000000ffff0ff0 DR7=0000000000000400
EFER=0000000000000501
Code=00 00 00 80 0f 22 c0 ea 70 f0 09 00 08 00 48 b8 c0 e1 80 80 <ff> ff ff ff ff e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 99 20 00 ff ff 00 00

За то, что я делаю с этим, отступать на однопроцессорный - это хорошо, но я бы хотел понять, почему это не работает. Образ виртуальной машины был установлен под другим графическим интерфейсом менеджера (GNOME Boxes), который предлагал гораздо меньше контроля над конфигурацией и, в частности, мог дать установщику однопроцессорную среду. Устанавливает ли FreeBSD 7 другое ядро для однопроцессорных и многопроцессорных машин? Можно ли переключиться без переустановки?

2 ответа2

2

Команда kvm использует параметры по умолчанию, один из которых включает только один vCPU. Мы запускаем несколько машин FreeBSD 7.x с очень похожей настройкой, как у вас, но с другой версией BIOS. Мне интересно, есть ли что-то в используемой вами BIOS Qemu/KVM, что вызывает сбои в поддержке многопроцессорных систем FreeBSD. Как вы можете видеть здесь, как только он напечатает эти сообщения, он должен напечатать что-то о количестве процессоров: http://f.cl.ly/items/1A451g3M3B1p1k1I0m1J/Screen%20Shot%202013-02-15%20at%2005.48 .37.png

Вы пытались загрузить его из virt-manager с одним процессором?

Для справки, это вывод для меня virsh dumpxml test (работающей виртуальной машины FreeBSD): https://www.refheap.com/paste/11318

0

FreeBSD по умолчанию использует ядро с поддержкой SMP с ноября 2003 года, задолго до выпуска 7.4.

Как и Андрей, я подозреваю, что что-то в BIOS сбивает с толку ядро. В меню загрузки есть несколько параметров, например, загрузка (IIRC) с отключенным ACPI. Это может помочь иногда.

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