【问题标题】:How to create vm with libvirt-go package - get boot error如何使用 libvirt-go 包创建 vm - 出现启动错误
【发布时间】:2018-09-25 06:17:54
【问题描述】:

我想在 golang 库 libvirt-go 上创建一个带有 kickstart 选项的新 centos 7 虚拟机。

要创建新的 vm,我需要一个 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

}

当我想用我的 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 正确启动和
  • 在哪里可以找到有关设置内核选项的优秀文档?

【问题讨论】:

    标签: centos7 qemu kvm libvirt


    【解决方案1】:

    你提供了一个错误的Initrd

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

    这不是 initrd,而是您的 kickstart 文件(您在 Cmdline 中正确指定。

    不推荐指定KernelInitrd。这旨在从 VM 实例本身之外的内核启动 VM。在几乎所有情况下,您都不希望这样。

    相反,这也应该是空字符串,与Kernel 相同。然后,VM 将从您提供的虚拟启动媒体(硬盘驱动器、ISO 映像等)启动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-27
      • 2021-11-27
      • 1970-01-01
      • 2016-05-16
      • 2020-11-08
      相关资源
      最近更新 更多