Skip to content

Commit

Permalink
Merge pull request #90119 from samueldr/feature/rpi4-fixups
Browse files Browse the repository at this point in the history
Fix some pitfalls from the Raspberry Pi 4 specific sd image
  • Loading branch information
samueldr committed Jun 20, 2020
2 parents dee5584 + 476c8e0 commit f203b8b
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 3 deletions.
7 changes: 7 additions & 0 deletions nixos/modules/installer/cd-dvd/sd-image-raspberrypi4.nix
Expand Up @@ -18,13 +18,20 @@

sdImage = {
firmwareSize = 128;
firmwarePartitionName = "NIXOS_BOOT";
# This is a hack to avoid replicating config.txt from boot.loader.raspberryPi
populateFirmwareCommands =
"${config.system.build.installBootLoader} ${config.system.build.toplevel} -d ./firmware";
# As the boot process is done entirely in the firmware partition.
populateRootCommands = "";
};

fileSystems."/boot/firmware" = {
# This effectively "renames" the loaOf entry set in sd-image.nix
mountPoint = "/boot";
neededForBoot = true;
};

# the installation media is also the installation target,
# so we don't want to provide the installation configuration.nix.
installer.cloneConfig = false;
Expand Down
12 changes: 10 additions & 2 deletions nixos/modules/installer/cd-dvd/sd-image.nix
Expand Up @@ -63,6 +63,14 @@ in
'';
};

firmwarePartitionName = mkOption {
type = types.str;
default = "FIRMWARE";
description = ''
Name of the filesystem which holds the boot firmware.
'';
};

rootPartitionUUID = mkOption {
type = types.nullOr types.str;
default = null;
Expand Down Expand Up @@ -114,7 +122,7 @@ in
config = {
fileSystems = {
"/boot/firmware" = {
device = "/dev/disk/by-label/FIRMWARE";
device = "/dev/disk/by-label/${config.sdImage.firmwarePartitionName}";
fsType = "vfat";
# Alternatively, this could be removed from the configuration.
# The filesystem is not needed at runtime, it could be treated
Expand Down Expand Up @@ -178,7 +186,7 @@ in
# Create a FAT32 /boot/firmware partition of suitable size into firmware_part.img
eval $(partx $img -o START,SECTORS --nr 1 --pairs)
truncate -s $((SECTORS * 512)) firmware_part.img
faketime "1970-01-01 00:00:00" mkfs.vfat -i ${config.sdImage.firmwarePartitionID} -n FIRMWARE firmware_part.img
faketime "1970-01-01 00:00:00" mkfs.vfat -i ${config.sdImage.firmwarePartitionID} -n ${config.sdImage.firmwarePartitionName} firmware_part.img
# Populate the files intended for /boot/firmware
mkdir firmware
Expand Down
@@ -1,4 +1,7 @@
#! @bash@/bin/sh -e
#! @bash@/bin/sh

# This can end up being called disregarding the shebang.
set -e

shopt -s nullglob

Expand Down

0 comments on commit f203b8b

Please sign in to comment.