From 571d63aa6466be75458a06203e25477224bbcb15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20Sj=C3=B6strom?= Date: Mon, 17 Feb 2025 15:15:24 +0100 Subject: [PATCH] silly uki image with the systemd-ukify tooling --- flake.nix | 81 ++++++++++++++++++++++++++++++++++++++++++++- systemd/default.nix | 2 +- 2 files changed, 81 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index 6a4e60f..78a8947 100644 --- a/flake.nix +++ b/flake.nix @@ -21,10 +21,89 @@ packages = { default = self.packages.${system}.image; image = pkgs.writeShellScriptBin "image" '' - echo "make image here..." + echo "make UKI..." + ${self.packages.${system}.systemd.out}/bin/ukify build \ + --linux ${self.packages.${system}.kernel.kernel}/bzImage \ + --initrd ./out/initrd.gz \ + --cmdline "console=ttyS0" \ + -o patos.uki ''; kernel = pkgs.callPackage ./kernel { }; + initrd = pkgs.writeShellScriptBin "mkinitrd" '' + echo "make initrd..." + mkdir -p out/lib + # copy systemd + cp -r ${self.packages.${system}.systemd.out}/* out/ + pushd out + + chmod 755 etc + + echo patos > ./etc/hostname + cat < ./etc/os-release + NAME="Patos" + PRETTY_NAME="Patos Platform" + ID=patos + EOF + + cat < ./etc/passwd + root::0:0:root:/root:/bin/sh + bin:x:1:1:bin:/bin:/usr/bin/nologin + daemon:x:2:2:daemon:/:/usr/bin/nologin + mail:x:8:12:mail:/var/spool/mail:/usr/bin/nologin + ftp:x:14:11:ftp:/srv/ftp:/usr/bin/nologin + http:x:33:33:http:/srv/http:/usr/bin/nologin + uuidd:x:68:68:uuidd:/:/usr/bin/nologin + dbus:x:81:81:dbus:/:/usr/bin/nologin + nobody:x:99:99:nobody:/:/usr/bin/nologin + EOF + chmod 644 ./etc/passwd + + cat < ./etc/group + root:x:0:root + bin:x:1:root,bin,daemon + daemon:x:2:root,bin,daemon + sys:x:3:root,bin + adm:x:4:root,daemon + tty:x:5: + disk:x:6:root + lp:x:7:daemon + mem:x:8: + kmem:x:9: + wheel:x:10:root + ftp:x:11: + mail:x:12: + uucp:x:14: + log:x:19:root + utmp:x:20: + locate:x:21: + rfkill:x:24: + smmsp:x:25: + proc:x:26: + http:x:33: + games:x:50: + lock:x:54: + uuidd:x:68: + dbus:x:81: + network:x:90: + video:x:91: + audio:x:92: + optical:x:93: + floppy:x:94: + storage:x:95: + scanner:x:96: + input:x:97: + power:x:98: + nobody:x:99: + EOF + chmod 644 ./etc/group + + # get shared libs + find . -type f -executable | xargs ldd | awk '{print $3}' | grep -v systemd | sort -u | xargs cp -t lib + + # gen initrd + find . -print0 | ${pkgs.lib.getExe pkgs.cpio} --null --owner=root:root -o --format=newc | ${pkgs.lib.getExe pkgs.gzip} -9 > initrd.gz + ''; systemd = pkgs.callPackage ./systemd { }; }; diff --git a/systemd/default.nix b/systemd/default.nix index 99e4684..05aeba4 100644 --- a/systemd/default.nix +++ b/systemd/default.nix @@ -150,7 +150,7 @@ stdenv.mkDerivation (finalAttrs: { "'${targetPackages.stdenv.cc.bintools.targetPrefix}readelf'" \ --replace \ "/usr/lib/systemd/boot/efi" \ - "$out/lib/systemd/boot/efi" + "$out/usr/lib/systemd/boot/efi" '' # Finally, patch shebangs in scripts used at build time. This must not patch # scripts that will end up in the output, to avoid build platform references