Как создать VM с помощью пакета libvirt-go - получить ошибку загрузки - PullRequest
0 голосов
/ 25 сентября 2018

Я хотел бы создать новый виртуальный процессор Centos 7 с параметром kickstart поверх библиотеки golang libvirt-go .

Для создания нового виртуального компьютера мне нуженXML-Config, который я генерирую для пакета libvirt-go-xml .

Вот моя функция для генерации структуры домена, которую я позже анализирую в XML-Dom.

func defineDomain(domainName string, vcpu *libvirtxml.DomainVCPU, disks []libvirtxml.DomainDisk, interfaces []libvirtxml.DomainInterface, memory *libvirtxml.DomainMemory) *libvirtxml.Domain {
  domainId := 10

  domain := &libvirtxml.Domain{
    XMLName: xml.Name{
      Space: "Hello",
      Local: "World",
    },
    Type:        "kvm",
    ID:          &domainId,
    Name:        domainName,
    UUID:        uuid.Must(uuid.NewV4()).String(),
    Title:       domainName,
    Description: domainName,
    Metadata: &libvirtxml.DomainMetadata{
      XML: "",
    },
    Memory: memory,
    VCPU:   vcpu,
    OS: &libvirtxml.DomainOS{
      BootDevices: []libvirtxml.DomainBootDevice{
        libvirtxml.DomainBootDevice{
          Dev: "hd",
        },
      },
      Kernel:  "",
      Initrd:  "/home/markus/workspace/worker-management/centos/kvm-centos.ks",
      Cmdline: "ks=file:/home/markus/workspace/worker-management/centos/kvm-centos.ks method=http://repo02.agfa.be/CentOS/7/os/x86_64/",
      Type: &libvirtxml.DomainOSType{
        Arch: "x86_64",
        Type: "hvm",
      },
    },
    OnCrash:    "restart",
    OnPoweroff: "destroy",
    OnReboot:   "restart",
    Devices: &libvirtxml.DomainDeviceList{
      Emulator:   "/usr/bin/kvm-spice",
      Disks:      disks,
      Interfaces: interfaces,
      Graphics: []libvirtxml.DomainGraphic{
        libvirtxml.DomainGraphic{
          VNC: &libvirtxml.DomainGraphicVNC{
            AutoPort: "yes",
            Listen:   "127.0.0.1",
            Keymap:   "de",
            Listeners: []libvirtxml.DomainGraphicListener{
              libvirtxml.DomainGraphicListener{
                Address: &libvirtxml.DomainGraphicListenerAddress{
                  Address: "127.0.0.1",
                },
              },
            },
          },
        },
      },
    },
  }

  return domain

}

Когда я хочу создать новый vm с моим XML-Dom, я получаю следующую ошибку.2018/09/25 08:12:45 virError(Code=1, Domain=10, Message='internal error: process exited while connecting to monitor: 2018-09-25T06:12:45.683418Z qemu-system-x86_64: -append only allowed with -kernel option')

Я определил пустую строку как параметр ядра, потому что я не знаю, что хвастаться.

  • Что именно мне нужно указать в параметре ядра для моегоVM для правильной загрузки и
  • где найти хорошую документацию по настройке параметра ядра?

1 Ответ

0 голосов
/ 25 сентября 2018

Вы указали неверно Initrd:

      Initrd:  "/home/markus/workspace/worker-management/centos/kvm-centos.ks",

Это не initrd, а файл кикстарта (который вы правильно указали в Cmdline.

Указание Kernel и Initrd не рекомендуется. Это предназначено для загрузки виртуальной машины из ядра, которое находится за пределами самого экземпляра виртуальной машины. Практически во всех случаях вы этого не хотите.

Вместо этого это также должнобудет пустой строкой, такой же как Kernel. Затем виртуальная машина загрузится с виртуального загрузочного носителя (жесткого диска, образа ISO и т. д.), который вы предоставите.

...