m/n/c/u/e2e/testos: migrate to bringup package
Change-Id: I661e4240f5fc3a40acac38250212ab892ac121c1
Reviewed-on: https://review.monogon.dev/c/monogon/+/3394
Tested-by: Jenkins CI
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/metropolis/node/core/update/e2e/testos/BUILD.bazel b/metropolis/node/core/update/e2e/testos/BUILD.bazel
index 8a4b122..c0f6aed 100644
--- a/metropolis/node/core/update/e2e/testos/BUILD.bazel
+++ b/metropolis/node/core/update/e2e/testos/BUILD.bazel
@@ -16,9 +16,9 @@
"//metropolis/node/core/network",
"//metropolis/node/core/update",
"//osbase/blockdev",
+ "//osbase/bringup",
"//osbase/build/mkimage/osimage",
"//osbase/gpt",
- "//osbase/logtree",
"//osbase/supervisor",
"@org_golang_x_sys//unix",
],
diff --git a/metropolis/node/core/update/e2e/testos/main.go b/metropolis/node/core/update/e2e/testos/main.go
index 7d91d9e..4e7125b 100644
--- a/metropolis/node/core/update/e2e/testos/main.go
+++ b/metropolis/node/core/update/e2e/testos/main.go
@@ -11,77 +11,16 @@
"source.monogon.dev/metropolis/node/core/network"
"source.monogon.dev/metropolis/node/core/update"
"source.monogon.dev/osbase/blockdev"
+ "source.monogon.dev/osbase/bringup"
"source.monogon.dev/osbase/build/mkimage/osimage"
"source.monogon.dev/osbase/gpt"
- "source.monogon.dev/osbase/logtree"
"source.monogon.dev/osbase/supervisor"
)
var Variant = "U"
-func mkdirAndMount(dir, fs string, flags uintptr) error {
- if err := os.MkdirAll(dir, 0o755); err != nil {
- return fmt.Errorf("could not make %s: %w", dir, err)
- }
- if err := unix.Mount(fs, dir, fs, flags, ""); err != nil {
- return fmt.Errorf("could not mount %s on %s: %w", fs, dir, err)
- }
- return nil
-}
-
-// setupMounts sets up basic mounts like sysfs, procfs, devtmpfs and cgroups.
-// This should be called early during init as a lot of processes depend on this
-// being available.
-func setupMounts() error {
- // Set up target filesystems.
- for _, el := range []struct {
- dir string
- fs string
- flags uintptr
- }{
- {"/sys", "sysfs", unix.MS_NOEXEC | unix.MS_NOSUID | unix.MS_NODEV},
- {"/sys/kernel/tracing", "tracefs", unix.MS_NOEXEC | unix.MS_NOSUID | unix.MS_NODEV},
- {"/sys/fs/pstore", "pstore", unix.MS_NOEXEC | unix.MS_NOSUID | unix.MS_NODEV},
- {"/sys/firmware/efi/efivars", "efivarfs", unix.MS_NOEXEC | unix.MS_NOSUID | unix.MS_NODEV},
- {"/proc", "proc", unix.MS_NOEXEC | unix.MS_NOSUID | unix.MS_NODEV},
- {"/dev", "devtmpfs", unix.MS_NOEXEC | unix.MS_NOSUID},
- {"/dev/pts", "devpts", unix.MS_NOEXEC | unix.MS_NOSUID},
- {"/tmp", "tmpfs", unix.MS_NOEXEC | unix.MS_NOSUID | unix.MS_NODEV},
- } {
- if err := mkdirAndMount(el.dir, el.fs, el.flags); err != nil {
- return err
- }
- }
- return nil
-}
-
func main() {
- if err := setupMounts(); err != nil {
- fmt.Printf("early init error, stopping: %v\n", err)
- unix.Reboot(unix.LINUX_REBOOT_CMD_POWER_OFF)
- return
- }
- lt := logtree.New()
- f, err := os.OpenFile("/dev/ttyS0", os.O_WRONLY, 0)
- if err != nil {
- fmt.Printf("early init error, stopping: %v\n", err)
- unix.Reboot(unix.LINUX_REBOOT_CMD_POWER_OFF)
- return
- }
- reader, err := lt.Read("", logtree.WithChildren(), logtree.WithStream())
- if err != nil {
- fmt.Printf("early init error, stopping: %v\n", err)
- unix.Reboot(unix.LINUX_REBOOT_CMD_POWER_OFF)
- return
- }
-
- sCtx := context.Background()
- supervisor.New(sCtx, testosRunnable, supervisor.WithExistingLogtree(lt))
-
- for {
- p := <-reader.Stream
- fmt.Fprintf(f, "%s\n", p.String())
- }
+ bringup.Runnable(testosRunnable).Run()
}
func testosRunnable(ctx context.Context) error {