diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-03-14 19:42:43 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-03-14 19:43:42 +0900 |
| commit | 8905d653ba8ac5f2a70a6df654ebfa2a17206729 (patch) | |
| tree | 094fbd8d18688f65dfe8275b5913e8323c730b1a | |
| parent | 9c2fb6246f6a1781c469ac444da67dd4ae951ad2 (diff) | |
cmd/earlyinit: mount pseudo-filesystems
The proposal for merging both init programs was unanimously accepted, so this is set up here alongside devtmpfs.
Signed-off-by: Ophestra <cat@gensokyo.uk>
| -rw-r--r-- | cmd/earlyinit/main.go | 36 | ||||
| -rw-r--r-- | internal/rosa/all.go | 2 |
2 files changed, 37 insertions, 1 deletions
diff --git a/cmd/earlyinit/main.go b/cmd/earlyinit/main.go index 6dc08035..40883302 100644 --- a/cmd/earlyinit/main.go +++ b/cmd/earlyinit/main.go @@ -72,4 +72,40 @@ func main() { } } + // staying in rootfs, these are no longer used + must(os.Remove("/root")) + must(os.Remove("/init")) + + must(os.Mkdir("/proc", 0)) + mustSyscall("mount proc", Mount( + "proc", + "/proc", + "proc", + MS_NOSUID|MS_NOEXEC|MS_NODEV, + "hidepid=1", + )) + + must(os.Mkdir("/sys", 0)) + mustSyscall("mount sysfs", Mount( + "sysfs", + "/sys", + "sysfs", + 0, + "", + )) + +} + +// mustSyscall calls [log.Fatalln] if err is non-nil. +func mustSyscall(action string, err error) { + if err != nil { + log.Fatalln("cannot "+action+":", err) + } +} + +// must calls [log.Fatal] with err if it is non-nil. +func must(err error) { + if err != nil { + log.Fatal(err) + } } diff --git a/internal/rosa/all.go b/internal/rosa/all.go index 7f4f1a97..13bc83ab 100644 --- a/internal/rosa/all.go +++ b/internal/rosa/all.go @@ -20,7 +20,7 @@ const ( LLVMRuntimes LLVMClang - // EarlyInit is the Rosa OS initramfs init program. + // EarlyInit is the Rosa OS init program. EarlyInit // ImageSystem is the Rosa OS /system image. ImageSystem |
