aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-09-15 16:59:18 +0900
committerOphestra <cat@gensokyo.uk>2026-09-15 18:42:24 +0900
commitd148a25b48c5bc102aac11be1f7f060586722bcf (patch)
tree1f7a41924a6b84741d7c05b6b850938c05561c84
parentae39b54d79de36a5ba22ca24e3ba150f230c327b (diff)
pkg: expose kvm device
This greatly improves vm test performance. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--fhs/abs.go2
-rw-r--r--fhs/fhs.go2
-rw-r--r--pkg/exec.go7
-rw-r--r--pkg/internal/testtool/main.go4
4 files changed, 14 insertions, 1 deletions
diff --git a/fhs/abs.go b/fhs/abs.go
index 7adde1db..5d061567 100644
--- a/fhs/abs.go
+++ b/fhs/abs.go
@@ -40,6 +40,8 @@ var (
AbsDev = unsafeAbs(Dev)
// AbsDevShm is [DevShm] as [check.Absolute].
AbsDevShm = unsafeAbs(DevShm)
+ // AbsDevKvm is [DevKvm] as [check.Absolute].
+ AbsDevKvm = unsafeAbs(DevKvm)
// AbsProc is [Proc] as [check.Absolute].
AbsProc = unsafeAbs(Proc)
// AbsProcSys is [ProcSys] as [check.Absolute].
diff --git a/fhs/fhs.go b/fhs/fhs.go
index 6d098d0c..b526dc6f 100644
--- a/fhs/fhs.go
+++ b/fhs/fhs.go
@@ -35,6 +35,8 @@ const (
// DevShm is the place for POSIX shared memory segments, as created via
// shm_open(3).
DevShm = "/dev/shm/"
+ // DevKvm is the KVM system device.
+ DevKvm = "/dev/kvm"
// Proc points to a virtual kernel file system exposing the process list and
// other functionality.
Proc = "/proc/"
diff --git a/pkg/exec.go b/pkg/exec.go
index b40ae84b..fe099ac9 100644
--- a/pkg/exec.go
+++ b/pkg/exec.go
@@ -601,7 +601,12 @@ func (a *execArtifact) makeContainer(
fhs.AbsTmp,
std.BindWritable|std.BindEnsure,
)
- z.Proc(fhs.AbsProc).Dev(fhs.AbsDev, true)
+ z.
+ Proc(fhs.AbsProc).
+ DevWritable(fhs.AbsDev, true).
+ Tmpfs(fhs.AbsDevShm, 0, 01777).
+ Bind(fhs.AbsDevKvm, fhs.AbsDevKvm, std.BindOptional|std.BindDevice).
+ Remount(fhs.AbsDev, syscall.MS_RDONLY)
return
}
diff --git a/pkg/internal/testtool/main.go b/pkg/internal/testtool/main.go
index edffab7e..80f87435 100644
--- a/pkg/internal/testtool/main.go
+++ b/pkg/internal/testtool/main.go
@@ -259,6 +259,10 @@ func main() {
next()
}
+ if m.Next != nil && m.Next.Root == "/kvm" {
+ next()
+ }
+
if m.Next != nil {
log.Println("unexpected extra mount entries")
for m.Next != nil {