From cc69da4314d4f315f5b178f0796efdc80e0141d4 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Thu, 14 Nov 2013 18:18:27 -0500 Subject: Put /efi and /loader on the main livecd partition for efi booting with unetbootin Fixes #248, mostly Signed-off-by: Shea Levy --- nixos/modules/installer/cd-dvd/iso-image.nix | 40 +++++++++++++++------------- 1 file changed, 22 insertions(+), 18 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/installer/cd-dvd/iso-image.nix b/nixos/modules/installer/cd-dvd/iso-image.nix index b803a3f188b..00a9e91c733 100644 --- a/nixos/modules/installer/cd-dvd/iso-image.nix +++ b/nixos/modules/installer/cd-dvd/iso-image.nix @@ -44,31 +44,29 @@ let # The efi boot image + efiDir = pkgs.runCommand "efi-directory" {} '' + mkdir -p $out/efi/boot + cp -v ${pkgs.gummiboot}/lib/gummiboot/gummiboot${targetArch}.efi $out/efi/boot/boot${targetArch}.efi + mkdir -p $out/loader/entries + echo "title NixOS LiveCD" > $out/loader/entries/nixos-livecd.conf + echo "linux /boot/bzImage" >> $out/loader/entries/nixos-livecd.conf + echo "initrd /boot/initrd" >> $out/loader/entries/nixos-livecd.conf + echo "options init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams}" >> $out/loader/entries/nixos-livecd.conf + echo "default nixos-livecd" > $out/loader/loader.conf + echo "timeout 5" >> $out/loader/loader.conf + ''; + efiImg = pkgs.runCommand "efi-image_eltorito" { buildInputs = [ pkgs.mtools ]; } '' #Let's hope 10M is enough dd bs=2048 count=5120 if=/dev/zero of="$out" ${pkgs.dosfstools}/sbin/mkfs.vfat "$out" - mmd -i "$out" efi - mmd -i "$out" efi/boot - mmd -i "$out" efi/nixos - mmd -i "$out" loader - mmd -i "$out" loader/entries - mcopy -v -i "$out" \ - ${pkgs.gummiboot}/lib/gummiboot/gummiboot${targetArch}.efi \ - ::efi/boot/boot${targetArch}.efi + mcopy -svi "$out" ${efiDir}/* :: + mmd -i "$out" boot mcopy -v -i "$out" \ - ${config.boot.kernelPackages.kernel}/bzImage ::bzImage + ${config.boot.kernelPackages.kernel}/bzImage ::boot/bzImage mcopy -v -i "$out" \ - ${config.system.build.initialRamdisk}/initrd ::efi/nixos/initrd - echo "title NixOS LiveCD" > boot-params - echo "linux /bzImage" >> boot-params - echo "initrd /efi/nixos/initrd" >> boot-params - echo "options init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams}" >> boot-params - mcopy -v -i "$out" boot-params ::loader/entries/nixos-livecd.conf - echo "default nixos-livecd" > boot-params - echo "timeout 5" >> boot-params - mcopy -v -i "$out" boot-params ::loader/loader.conf + ${config.system.build.initialRamdisk}/initrd ::boot/initrd ''; targetArch = if pkgs.stdenv.isi686 then @@ -263,6 +261,12 @@ in { source = efiImg; target = "/boot/efi.img"; } + { source = "${efiDir}/efi"; + target = "/efi"; + } + { source = "${efiDir}/loader"; + target = "/loader"; + } ] ++ mapAttrsToList (n: v: { source = v; target = "/boot/${n}"; }) config.boot.loader.grub.extraFiles; # The Grub menu. -- cgit 1.4.1