mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-08-16 07:05:14 +00:00
commit
ffbae64a2d
@ -7,6 +7,7 @@ package virtcontainers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@ -24,7 +25,7 @@ const defaultQemuPath = "/usr/bin/qemu-system-aarch64"
|
|||||||
|
|
||||||
const defaultQemuMachineType = QemuVirt
|
const defaultQemuMachineType = QemuVirt
|
||||||
|
|
||||||
var defaultQemuMachineOptions = "usb=off,accel=kvm,gic-version=" + getGuestGICVersion()
|
var defaultQemuMachineOptions = "usb=off,accel=kvm,nvdimm,gic-version=" + getGuestGICVersion()
|
||||||
|
|
||||||
var qemuPaths = map[string]string{
|
var qemuPaths = map[string]string{
|
||||||
QemuVirt: defaultQemuPath,
|
QemuVirt: defaultQemuPath,
|
||||||
@ -37,7 +38,9 @@ var kernelParams = []Param{
|
|||||||
}
|
}
|
||||||
|
|
||||||
var kernelRootParams = []Param{
|
var kernelRootParams = []Param{
|
||||||
{"root", "/dev/vda1"},
|
{"root", "/dev/pmem0p1"},
|
||||||
|
{"rootflags", "data=ordered,errors=remount-ro rw"},
|
||||||
|
{"rootfstype", "ext4"},
|
||||||
}
|
}
|
||||||
|
|
||||||
var supportedQemuMachines = []govmmQemu.Machine{
|
var supportedQemuMachines = []govmmQemu.Machine{
|
||||||
@ -160,3 +163,29 @@ func (q *qemuArm64) bridges(number uint32) []types.PCIBridge {
|
|||||||
func (q *qemuArm64) appendBridges(devices []govmmQemu.Device, bridges []types.PCIBridge) []govmmQemu.Device {
|
func (q *qemuArm64) appendBridges(devices []govmmQemu.Device, bridges []types.PCIBridge) []govmmQemu.Device {
|
||||||
return genericAppendBridges(devices, bridges, q.machineType)
|
return genericAppendBridges(devices, bridges, q.machineType)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (q *qemuArm64) appendImage(devices []govmmQemu.Device, path string) ([]govmmQemu.Device, error) {
|
||||||
|
imageFile, err := os.Open(path)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer imageFile.Close()
|
||||||
|
|
||||||
|
imageStat, err := imageFile.Stat()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
object := govmmQemu.Object{
|
||||||
|
Driver: govmmQemu.NVDIMM,
|
||||||
|
Type: govmmQemu.MemoryBackendFile,
|
||||||
|
DeviceID: "nv0",
|
||||||
|
ID: "mem0",
|
||||||
|
MemPath: path,
|
||||||
|
Size: (uint64)(imageStat.Size()),
|
||||||
|
}
|
||||||
|
|
||||||
|
devices = append(devices, object)
|
||||||
|
|
||||||
|
return devices, nil
|
||||||
|
}
|
||||||
|
@ -125,3 +125,33 @@ func TestQemuArm64AppendBridges(t *testing.T) {
|
|||||||
|
|
||||||
assert.Equal(expectedOut, devices)
|
assert.Equal(expectedOut, devices)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestQemuArm64AppendImage(t *testing.T) {
|
||||||
|
var devices []govmmQemu.Device
|
||||||
|
assert := assert.New(t)
|
||||||
|
arm64 := newTestQemu(QemuVirt)
|
||||||
|
|
||||||
|
f, err := ioutil.TempFile("", "img")
|
||||||
|
assert.NoError(err)
|
||||||
|
defer func() { _ = f.Close() }()
|
||||||
|
defer func() { _ = os.Remove(f.Name()) }()
|
||||||
|
|
||||||
|
imageStat, err := f.Stat()
|
||||||
|
assert.NoError(err)
|
||||||
|
|
||||||
|
expectedOut := []govmmQemu.Device{
|
||||||
|
govmmQemu.Object{
|
||||||
|
Driver: govmmQemu.NVDIMM,
|
||||||
|
Type: govmmQemu.MemoryBackendFile,
|
||||||
|
DeviceID: "nv0",
|
||||||
|
ID: "mem0",
|
||||||
|
MemPath: f.Name(),
|
||||||
|
Size: (uint64)(imageStat.Size()),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
devices, err = arm64.appendImage(devices, f.Name())
|
||||||
|
assert.NoError(err)
|
||||||
|
|
||||||
|
assert.Equal(expectedOut, devices)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user