From a8692f85463ce5855bbb63e4596b776edef4fd6b 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 | 20 +++++++++++++++++++- systemd/default.nix | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index 6a4e60f..195b76f 100644 --- a/flake.nix +++ b/flake.nix @@ -21,10 +21,28 @@ 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/ + + # get shared libs + pushd out + 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