From 179f76114b793e543369ee68a810d89d22284e20 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Mon, 24 Aug 2026 19:17:05 +0300 Subject: [PATCH] init: Generate /etc/machine-id if it doesn't exist --- userspace/programs/init/main.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/userspace/programs/init/main.cpp b/userspace/programs/init/main.cpp index 31742739..dd9bb6ea 100644 --- a/userspace/programs/init/main.cpp +++ b/userspace/programs/init/main.cpp @@ -9,8 +9,30 @@ #include #include #include +#include #include +static void generate_machine_id() +{ + int fd = open("/etc/machine-id", O_WRONLY | O_CREAT | O_EXCL, 0444); + if (fd == -1) + return; + + uint8_t machine_id[16]; + if (getrandom(machine_id, sizeof(machine_id), 0) < static_cast(sizeof(machine_id))) + { + unlinkat(fd, nullptr, 0); + close(fd); + return; + } + + for (size_t i = 0; i < sizeof(machine_id); i++) + dprintf(fd, "%02x", machine_id[i]); + dprintf(fd, "\n"); + + close(fd); +} + int main(int argc, char** argv) { ASSERT(argc == 2); @@ -28,6 +50,8 @@ int main(int argc, char** argv) if (load_keymap("/usr/share/keymaps/us.keymap") == -1) perror("load_keymap"); + generate_machine_id(); + setenv("TERM", "ansi", 1); if (fork() == 0)