aboutsummaryrefslogtreecommitdiffhomepage
path: root/hst/container.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-06-17 02:59:48 +0900
committerOphestra <cat@gensokyo.uk>2026-06-17 02:59:48 +0900
commit08112f0b906947bbaf82e450b19c5e0ea8b3fb4d (patch)
treedc14cb72cd6d77cf91fdd73fef19dea9356edded /hst/container.go
parente1a1e1e3996b4a7669de6b3c70fb0750d1841311 (diff)
hst: optionally cover /run/ early
This works around awkward root permissions. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'hst/container.go')
-rw-r--r--hst/container.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/hst/container.go b/hst/container.go
index f985f393..a34efc32 100644
--- a/hst/container.go
+++ b/hst/container.go
@@ -69,6 +69,8 @@ const (
// FDevice mount /dev/ from the init mount namespace as is in the container
// mount namespace.
FDevice
+ // FCoverRun covers /run/ in the container mount namespace early.
+ FCoverRun
// FShareRuntime shares XDG_RUNTIME_DIR between containers under the same identity.
FShareRuntime
@@ -101,6 +103,8 @@ func (flags Flags) String() string {
return "mapuid"
case FDevice:
return "device"
+ case FCoverRun:
+ return "cover_run"
case FShareRuntime:
return "runtime"
case FShareTmpdir:
@@ -196,6 +200,8 @@ type containerConfigJSON = struct {
// Corresponds to [FDevice].
Device bool `json:"device,omitempty"`
+ // Corresponds to [FCoverRun].
+ CoverRun bool `json:"cover_run,omitempty"`
// Corresponds to [FShareRuntime].
ShareRuntime bool `json:"share_runtime,omitempty"`
@@ -219,6 +225,7 @@ func (c *ContainerConfig) MarshalJSON() ([]byte, error) {
Multiarch: c.Flags&FMultiarch != 0,
MapRealUID: c.Flags&FMapRealUID != 0,
Device: c.Flags&FDevice != 0,
+ CoverRun: c.Flags&FCoverRun != 0,
ShareRuntime: c.Flags&FShareRuntime != 0,
ShareTmpdir: c.Flags&FShareTmpdir != 0,
})
@@ -262,6 +269,9 @@ func (c *ContainerConfig) UnmarshalJSON(data []byte) error {
if v.Device {
c.Flags |= FDevice
}
+ if v.CoverRun {
+ c.Flags |= FCoverRun
+ }
if v.ShareRuntime {
c.Flags |= FShareRuntime
}