From f6a1cdd50b3ab0116be6d853a0577e22b2e69f8c Mon Sep 17 00:00:00 2001 From: Yaroslav de la Peña Smirnov Date: Mon, 11 Aug 2025 20:20:47 +0300 Subject: init minit commit, innit --- .gitignore | 1 + Makefile | 6 ++++++ minit.c | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 minit.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..97c86d6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/minit diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a07604c --- /dev/null +++ b/Makefile @@ -0,0 +1,6 @@ +TARGET?=x86_64-linux-musl +CFLAGS?=-Os -s +CC:=zig cc -target $(TARGET) + +minit: minit.c + $(CC) $(CFLAGS) -o minit minit.c diff --git a/minit.c b/minit.c new file mode 100644 index 0000000..7ea9688 --- /dev/null +++ b/minit.c @@ -0,0 +1,40 @@ +#include +#include +#include + +#include +#include +#include +#include + +[[noreturn]] +int main(int argc, char *argv[]) +{ + if (argc < 2) { + puts("usage: minit "); + exit(1); + } + + int rc = mount("proc", "/proc", "proc", 0, NULL); + if (rc) + puts("warning: unable to mount proc!"); + + rc = mount("sysfs", "/sys", "sysfs", 0, NULL); + if (rc) { + puts("warning: unable to mount sysfs!"); + } else { + rc = mount("debugfs", "/sys/kernel/debug", "debugfs", 0, NULL); + if (rc) + puts("warning: unable to mount debugfs!"); + } + + rc = system(argv[1]); + if (rc) { + puts("the command exited with failure"); + } + + sync(); + rc = reboot(LINUX_REBOOT_CMD_HALT); + /* If we made it here something went wrong with the reboot command */ + exit(rc); +} -- cgit v1.2.3