aboutsummaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2025-08-29container/initsymlink: unwrap absolute errorOphestra
This is now handled properly by the init. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-29container/init: handle unwrapped errorsOphestra
This is much cleaner from both the return statement and the error handling. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-29container: repeat and impossible state typesOphestra
This moves repeated Op errors and impossible internal state errors off of msg. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-29container: wrap mount syscall errnoOphestra
This is the first step to deprecating the generalised error wrapping error message pattern. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-28internal/app: remove seal interfaceOphestra
This further cleans up the package for the restructure. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-28internal/app: remove app interfaceOphestra
It is very clear at this point that there will not be multiple implementations of App, and the internal/app package will never move out of internal due to hsu. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-28internal/app: update doc commentsOphestra
A lot of these comments are quite old and have not been updated to reflect changes. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-28internal/app: less strict username regexOphestra
Use the default value of NAME_REGEX from adduser. Should not hurt compatibility while being less strict. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-28internal: move sysconf wrapper to appOphestra
This should not be used and is not useful in other packages. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-09-06cmd/hakurei/command: pd run dbus-verbose nil checkOphestra
This otherwise dereferences a nil pointer when dbus-verbose is set and either session or system bus are nil. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-27app/seal: leave $DISPLAY as is on host abstractOphestra
This helps work around faulty software that misinterprets unix: DISPLAY string. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-26release: 0.2.1v0.2.1Ophestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-26container/initdev: mount tmpfs on shm for ro devOphestra
Programs expect /dev/shm to be a writable tmpfs. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-26release: 0.2.0v0.2.0Ophestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-26hst: use hsu userid for share path suffixOphestra
The privileged user is identifier to hakurei through its hsu userid. Using the kernel uid here makes little sense and is a leftover design choice from before hsu was implemented. Closes #7. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-26hst/config: remove data field, rename dir to homeOphestra
There is no reason to give the home directory special treatment, as this behaviour can be quite confusing. The home directory also does not necessarily require its own mount point, it could be provided by a parent or simply be ephemeral. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-26hst/fsbind: optional ensure sourceOphestra
This exposes the BindEnsure flag of BindMountOp. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-26container/initbind: optional ensure host directoryOphestra
This is used for ensuring persistent data directories specific to the container. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-25hst/fslink: improve string representationOphestra
This shortens the representation of most common use cases and generally improves readability. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-25hst/config: remove symlink fieldOphestra
Closes #6. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-25hst/fs: implement link fstypeOphestra
Symlinks do not require special treatment, and doing this allows placing links in order. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-25hst/fs: update doc commentsOphestra
The Type method no longer exists on the interface. Update doc comments to reflect that. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-25hst/config: remove container etc fieldOphestra
This no longer needs special treatment since it can be specified as a generic filesystem entry. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-25hst/fsbind: optional autoetc behaviourOphestra
This generalises the special field allowing any special behaviour to be matched from target. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-25hst/config: handle filesystem entry targeting rootOphestra
This allows any fstype supported by hst to be directly mounted on sysroot. A special case in internal/app applies the matching entry early and excludes it from path hiding. Closes #5. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-25hst/fsbind: optional autoroot behaviourOphestra
This allows autoroot to be configured via Filesystem. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-25container/dispatcher: remove exit stub test logOphestra
Turns out testing.T does not like being called in defer. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-25container/autoroot: remove prefix fieldOphestra
This field has been a noop for a long time. Remove it to prevent further confusion. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-25container/initoverlay: internal bypass sysroot prefixOphestra
This is for supporting overlay mounts for autoroot. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-24container/init: measure init behaviourOphestra
This used to be entirely done via integration tests, with almost no hope of error injection and coverage profile. These tests significantly increase confidence of future work in this area. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-23container/dispatcher: start goroutine in dispatcherOphestra
This allows instrumentation of calls from goroutine without relying on finalizers. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-23container/init: avoid multiple lastcap callsOphestra
This reduces the size of []kexpect in the test suite. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-23container/dispatcher: instrument each goroutine individuallyOphestra
Scheduler nondeterminism cannot be accounted for, so do this instead. There should not be any performance penalty as these calls are optimised out for direct. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-23container/params: pass fd instead of fileOphestra
The file is very difficult to stub. Pass fd instead as it is the value that is actually useful. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-22container/init: call lockOSThread through dispatcherOphestra
This degrades test performance if not stubbed out. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-22container: move integration test helpersOphestra
With the new instrumentation it is now possible to run init code outside integration tests. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-22container/path: use syscall dispatcherOphestra
This allows path and mount functions to be instrumented. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-22container/init: wrap syscall helper functionsOphestra
This allows tests to stub all kernel behaviour, enabling measurement of all function call arguments and error injection. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-21system/dbus: share host net ns for abstractOphestra
Host abstract unix sockets are only accessible when also in the init net ns. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-21container/syscall: doc comments from manpagesOphestra
These are pulled straight from the manpages. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-21container/init: op interface valid methodOphestra
Check ops early and eliminate duplicate checks. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-20container/inittmpfs: check path equivalence by valueOphestra
Fixes regression introduced while integrating Absolute. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-20container/initsymlink: check path equivalence by valueOphestra
Fixes regression introduced while integrating Absolute. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-20container/initremount: check path equivalence by valueOphestra
Fixes regression introduced while integrating Absolute. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-20container/initproc: check path equivalence by valueOphestra
Fixes regression introduced while integrating Absolute. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-20container/initplace: check path equivalence by valueOphestra
Fixes regression introduced while integrating Absolute. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-20container/initoverlay: check path equivalence by valueOphestra
Fixes regression introduced while integrating Absolute. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-20container/init: use absolute compare methodOphestra
More checks are also added. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-20absolute: efficient equivalence check methodOphestra
This is more efficient and makes the call site cleaner. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-20container/initdev: check path equivalence by valueOphestra
Fixes regression introduced while integrating Absolute. Signed-off-by: Ophestra <cat@gensokyo.uk>