Merge pull request #121450 from samueldr/feature/cross-uefi-iso

iso-image: Fixes for cross-compilation
This commit is contained in:
Samuel Dionne-Riel 2021-05-10 14:42:59 -04:00 committed by GitHub
commit 37f14fa4d9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 5 deletions

View file

@ -233,7 +233,10 @@ let
# Notes about grub: # Notes about grub:
# * Yes, the grubMenuCfg has to be repeated in all submenus. Otherwise you # * Yes, the grubMenuCfg has to be repeated in all submenus. Otherwise you
# will get white-on-black console-like text on sub-menus. *sigh* # will get white-on-black console-like text on sub-menus. *sigh*
efiDir = pkgs.runCommand "efi-directory" {} '' efiDir = pkgs.runCommand "efi-directory" {
nativeBuildInputs = [ pkgs.buildPackages.grub2_efi ];
strictDeps = true;
} ''
mkdir -p $out/EFI/boot/ mkdir -p $out/EFI/boot/
# ALWAYS required modules. # ALWAYS required modules.
@ -263,7 +266,7 @@ let
# Make our own efi program, we can't rely on "grub-install" since it seems to # Make our own efi program, we can't rely on "grub-install" since it seems to
# probe for devices, even with --skip-fs-probe. # probe for devices, even with --skip-fs-probe.
${grubPkgs.grub2_efi}/bin/grub-mkimage -o $out/EFI/boot/boot${targetArch}.efi -p /EFI/boot -O ${grubPkgs.grub2_efi.grubTarget} \ grub-mkimage --directory=${grubPkgs.grub2_efi}/lib/grub/${grubPkgs.grub2_efi.grubTarget} -o $out/EFI/boot/boot${targetArch}.efi -p /EFI/boot -O ${grubPkgs.grub2_efi.grubTarget} \
$MODULES $MODULES
cp ${grubPkgs.grub2_efi}/share/grub/unicode.pf2 $out/EFI/boot/ cp ${grubPkgs.grub2_efi}/share/grub/unicode.pf2 $out/EFI/boot/
@ -388,7 +391,10 @@ let
${refind} ${refind}
''; '';
efiImg = pkgs.runCommand "efi-image_eltorito" { buildInputs = [ pkgs.mtools pkgs.libfaketime ]; } efiImg = pkgs.runCommand "efi-image_eltorito" {
nativeBuildInputs = [ pkgs.buildPackages.mtools pkgs.buildPackages.libfaketime pkgs.buildPackages.dosfstools ];
strictDeps = true;
}
# Be careful about determinism: du --apparent-size, # Be careful about determinism: du --apparent-size,
# dates (cp -p, touch, mcopy -m, faketime for label), IDs (mkfs.vfat -i) # dates (cp -p, touch, mcopy -m, faketime for label), IDs (mkfs.vfat -i)
'' ''
@ -408,10 +414,10 @@ let
echo "Usage size: $usage_size" echo "Usage size: $usage_size"
echo "Image size: $image_size" echo "Image size: $image_size"
truncate --size=$image_size "$out" truncate --size=$image_size "$out"
${pkgs.libfaketime}/bin/faketime "2000-01-01 00:00:00" ${pkgs.dosfstools}/sbin/mkfs.vfat -i 12345678 -n EFIBOOT "$out" faketime "2000-01-01 00:00:00" mkfs.vfat -i 12345678 -n EFIBOOT "$out"
mcopy -psvm -i "$out" ./EFI ./boot :: mcopy -psvm -i "$out" ./EFI ./boot ::
# Verify the FAT partition. # Verify the FAT partition.
${pkgs.dosfstools}/sbin/fsck.vfat -vn "$out" fsck.vfat -vn "$out"
''; # */ ''; # */
# Name used by UEFI for architectures. # Name used by UEFI for architectures.
@ -420,6 +426,8 @@ let
"ia32" "ia32"
else if pkgs.stdenv.isx86_64 then else if pkgs.stdenv.isx86_64 then
"x64" "x64"
else if pkgs.stdenv.isAarch32 then
"arm"
else if pkgs.stdenv.isAarch64 then else if pkgs.stdenv.isAarch64 then
"aa64" "aa64"
else else

View file

@ -23,6 +23,7 @@ let
efiSystemsBuild = { efiSystemsBuild = {
i686-linux.target = "i386"; i686-linux.target = "i386";
x86_64-linux.target = "x86_64"; x86_64-linux.target = "x86_64";
armv7l-linux.target = "arm";
aarch64-linux.target = "aarch64"; aarch64-linux.target = "aarch64";
}; };
@ -31,6 +32,7 @@ let
efiSystemsInstall = { efiSystemsInstall = {
i686-linux.target = "i386"; i686-linux.target = "i386";
x86_64-linux.target = "x86_64"; x86_64-linux.target = "x86_64";
armv7l-linux.target = "arm";
aarch64-linux.target = "arm64"; aarch64-linux.target = "arm64";
}; };