From 02725606d947a028650655eb75200735383c5bbf Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Mon, 24 Jan 2022 23:01:10 +0800 Subject: [PATCH] fix: rng device should use urandom instead of random --- pkg/hostman/guestman/qemu-kvmhelper.go | 3 +-- pkg/hostman/guestman/qemu/generate.go | 11 ++++++++++- pkg/hostman/options/options.go | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/pkg/hostman/guestman/qemu-kvmhelper.go b/pkg/hostman/guestman/qemu-kvmhelper.go index 468fdda268..79efdfee29 100644 --- a/pkg/hostman/guestman/qemu-kvmhelper.go +++ b/pkg/hostman/guestman/qemu-kvmhelper.go @@ -33,7 +33,6 @@ import ( api "yunion.io/x/onecloud/pkg/apis/compute" "yunion.io/x/onecloud/pkg/hostman/guestman/qemu" "yunion.io/x/onecloud/pkg/hostman/options" - "yunion.io/x/onecloud/pkg/util/fileutils2" "yunion.io/x/onecloud/pkg/util/qemutils" "yunion.io/x/onecloud/pkg/util/sysutils" ) @@ -481,7 +480,7 @@ function nic_mtu() { qemu-system-x86_64: Unknown savevm section or instance '0000:00:05.0/virtio-rng' 0 qemu-system-x86_64: load of migration failed: Invalid argument */ - if options.HostOptions.EnableVirtioRngDevice && fileutils2.Exists("/dev/random") { + if options.HostOptions.EnableVirtioRngDevice { input.EnableRNGRandom = true } diff --git a/pkg/hostman/guestman/qemu/generate.go b/pkg/hostman/guestman/qemu/generate.go index 5d913a3bff..c2bc814641 100644 --- a/pkg/hostman/guestman/qemu/generate.go +++ b/pkg/hostman/guestman/qemu/generate.go @@ -24,6 +24,7 @@ import ( api "yunion.io/x/onecloud/pkg/apis/compute" "yunion.io/x/onecloud/pkg/hostman/isolated_device" + "yunion.io/x/onecloud/pkg/util/fileutils2" ) type Monitor struct { @@ -470,9 +471,17 @@ func GetNicDeviceModel(name string) string { } func getRNGRandomOptions(drvOpt QemuOptions) []string { + var randev string + if fileutils2.Exists("/dev/urandom") { + randev = "/dev/urandom" + } else if fileutils2.Exists("/dev/random") { + randev = "/dev/random" + } else { + return []string{} + } return []string{ drvOpt.Object("rng-random", map[string]string{ - "filename": "/dev/random", + "filename": randev, "id": "rng0", }), drvOpt.Device("virtio-rng-pci,rng=rng0,max-bytes=1024,period=1000"), diff --git a/pkg/hostman/options/options.go b/pkg/hostman/options/options.go index 5cc4754b10..ff22fb4d1d 100644 --- a/pkg/hostman/options/options.go +++ b/pkg/hostman/options/options.go @@ -159,7 +159,7 @@ type SHostOptions struct { EnableVmUuid bool `help:"enable vm UUID" default:"true" json:"enable_vm_uuid"` - EnableVirtioRngDevice bool `help:"enable qemu virtio-rng device" default:"false"` + EnableVirtioRngDevice bool `help:"enable qemu virtio-rng device" default:"true"` RestrictQemuImgConvertWorker bool `help:"restrict qemu-img convert worker" default:"false"` }