diff --git a/flake.nix b/flake.nix index 78a8947..db75ca2 100644 --- a/flake.nix +++ b/flake.nix @@ -22,22 +22,32 @@ default = self.packages.${system}.image; image = pkgs.writeShellScriptBin "image" '' echo "make UKI..." - ${self.packages.${system}.systemd.out}/bin/ukify build \ + echo ${self.packages.${system}.kernel.kernel}/bzImage + ${self.packages.${system}.systemd.out}/usr/bin/ukify build \ --linux ${self.packages.${system}.kernel.kernel}/bzImage \ - --initrd ./out/initrd.gz \ + --initrd ./initrd.gz \ --cmdline "console=ttyS0" \ - -o patos.uki + -o patos.efi ''; kernel = pkgs.callPackage ./kernel { }; initrd = pkgs.writeShellScriptBin "mkinitrd" '' echo "make initrd..." - mkdir -p out/lib + mkdir -p out # copy systemd cp -r ${self.packages.${system}.systemd.out}/* out/ pushd out - chmod 755 etc + chmod 755 etc usr/lib + + mkdir -p dev proc sys tmp root + ln -sf usr/bin bin + ln -sf usr/sbin sbin + ln -sf usr/lib lib + ln -sf usr/lib lib64 + + ln -sf ../proc/self/mounts etc/mtab + ln -sf usr/lib/systemd/systemd init echo patos > ./etc/hostname cat <<EOF > ./etc/os-release @@ -99,10 +109,10 @@ 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 + find . -type f -executable | xargs ldd | awk '{print $3}' | grep -v systemd | sort -u | xargs cp -t usr/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 + 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 05aeba4..4c95e07 100644 --- a/systemd/default.nix +++ b/systemd/default.nix @@ -171,7 +171,7 @@ stdenv.mkDerivation (finalAttrs: { "--sysconfdir=/etc" "--localstatedir=/var" "--libdir=/usr/lib" - "--bindir=/bin" + "--bindir=/usr/bin" "--includedir=/usr/include" "--localedir=/usr/share/locale"