summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2021-06-25 11:35:25 +0200
committergithub-actions[bot] <github-actions[bot]@users.noreply.github.com>2021-06-25 20:55:28 +0000
commite453a9ed9bfd0f1e12012871071d242b2bc3bff7 (patch)
treebc9ff15e096abb41b56a71bac3857dfe679a71c6
parentaudit: use hostPlatform.isStatic instead of targetPlatform.isStatic (diff)
downloadnixpkgs-e453a9ed9bfd0f1e12012871071d242b2bc3bff7.tar.gz
nixos/sdcard: make firmware partition offset configurable
Different boards using u-boot SPL require to write to different locations. Sometimes, the 8MiB gap isn't sufficient - rk3399 boards write to 0x16384 for example, which is at 8MiB, thus overriding the fat32 partition with the SPL. (cherry picked from commit 1db54a5522a2d523e406ce8713bfe88bb9e3f657)
-rw-r--r--nixos/modules/installer/sd-card/sd-image.nix18
1 files changed, 17 insertions, 1 deletions
diff --git a/nixos/modules/installer/sd-card/sd-image.nix b/nixos/modules/installer/sd-card/sd-image.nix
index d0fe79903d34..2a10a77300e8 100644
--- a/nixos/modules/installer/sd-card/sd-image.nix
+++ b/nixos/modules/installer/sd-card/sd-image.nix
@@ -55,6 +55,22 @@ in
'';
};
+ firmwarePartitionOffset = mkOption {
+ type = types.int;
+ default = 8;
+ description = ''
+ Gap in front of the /boot/firmware partition, in mebibytes (1024×1024
+ bytes).
+ Can be increased to make more space for boards requiring to dd u-boot
+ SPL before actual partitions.
+
+ Unless you are building your own images pre-configured with an
+ installed U-Boot, you can instead opt to delete the existing `FIRMWARE`
+ partition, which is used **only** for the Raspberry Pi family of
+ hardware.
+ '';
+ };
+
firmwarePartitionID = mkOption {
type = types.str;
default = "0x2178694e";
@@ -177,7 +193,7 @@ in
zstd -d --no-progress "${rootfsImage}" -o ./root-fs.img
# Gap in front of the first partition, in MiB
- gap=8
+ gap=${toString config.sdImage.firmwarePartitionOffset}
# Create the image file sized to fit /boot/firmware and /, plus slack for the gap.
rootSizeBlocks=$(du -B 512 --apparent-size ./root-fs.img | awk '{ print $1 }')