summaryrefslogtreecommitdiffstats
path: root/nixos
diff options
context:
space:
mode:
authorgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>2020-12-31 18:42:41 +0000
committerGitHub <noreply@github.com>2020-12-31 18:42:41 +0000
commit5dffe03f3016195253b3fe610bdbf07a97ee6d43 (patch)
tree6e5f70c5299592eb4720395c038655338b10871f /nixos
parentbf46afde6b22942ea605983f66ee23038986ba07 (diff)
parent487141bc9328a24d96e916a6ca71dffdf4a4c743 (diff)
Merge master into staging-next
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/installer/cd-dvd/sd-image-aarch64.nix30
-rw-r--r--nixos/modules/installer/cd-dvd/sd-image-raspberrypi4.nix32
2 files changed, 26 insertions, 36 deletions
diff --git a/nixos/modules/installer/cd-dvd/sd-image-aarch64.nix b/nixos/modules/installer/cd-dvd/sd-image-aarch64.nix
index a5bc436be826..e4ec2d6240d0 100644
--- a/nixos/modules/installer/cd-dvd/sd-image-aarch64.nix
+++ b/nixos/modules/installer/cd-dvd/sd-image-aarch64.nix
@@ -17,8 +17,7 @@
# The serial ports listed here are:
# - ttyS0: for Tegra (Jetson TX1)
# - ttyAMA0: for QEMU's -machine virt
- # Also increase the amount of CMA to ensure the virtual console on the RPi3 works.
- boot.kernelParams = ["cma=32M" "console=ttyS0,115200n8" "console=ttyAMA0,115200n8" "console=tty0"];
+ boot.kernelParams = ["console=ttyS0,115200n8" "console=ttyAMA0,115200n8" "console=tty0"];
boot.initrd.availableKernelModules = [
# Allows early (earlier) modesetting for the Raspberry Pi
@@ -30,13 +29,25 @@
sdImage = {
populateFirmwareCommands = let
configTxt = pkgs.writeText "config.txt" ''
+ [pi3]
kernel=u-boot-rpi3.bin
+ [pi4]
+ kernel=u-boot-rpi4.bin
+ enable_gic=1
+ armstub=armstub8-gic.bin
+
+ # Otherwise the resolution will be weird in most cases, compared to
+ # what the pi3 firmware does by default.
+ disable_overscan=1
+
+ [all]
# Boot in 64-bit mode.
arm_64bit=1
- # U-Boot used to need this to work, regardless of whether UART is actually used or not.
- # TODO: check when/if this can be removed.
+ # U-Boot needs this to work, regardless of whether UART is actually used or not.
+ # Look in arch/arm/mach-bcm283x/Kconfig in the U-Boot tree to see if this is still
+ # a requirement in the future.
enable_uart=1
# Prevent the firmware from smashing the framebuffer setup done by the mainline kernel
@@ -45,8 +56,17 @@
'';
in ''
(cd ${pkgs.raspberrypifw}/share/raspberrypi/boot && cp bootcode.bin fixup*.dat start*.elf $NIX_BUILD_TOP/firmware/)
- cp ${pkgs.ubootRaspberryPi3_64bit}/u-boot.bin firmware/u-boot-rpi3.bin
+
+ # Add the config
cp ${configTxt} firmware/config.txt
+
+ # Add pi3 specific files
+ cp ${pkgs.ubootRaspberryPi3_64bit}/u-boot.bin firmware/u-boot-rpi3.bin
+
+ # Add pi4 specific files
+ cp ${pkgs.ubootRaspberryPi4_64bit}/u-boot.bin firmware/u-boot-rpi4.bin
+ cp ${pkgs.raspberrypi-armstubs}/armstub8-gic.bin firmware/armstub8-gic.bin
+ cp ${pkgs.raspberrypifw}/share/raspberrypi/boot/bcm2711-rpi-4-b.dtb firmware/
'';
populateRootCommands = ''
mkdir -p ./files/boot
diff --git a/nixos/modules/installer/cd-dvd/sd-image-raspberrypi4.nix b/nixos/modules/installer/cd-dvd/sd-image-raspberrypi4.nix
index 87545e842030..5bdec7de86e8 100644
--- a/nixos/modules/installer/cd-dvd/sd-image-raspberrypi4.nix
+++ b/nixos/modules/installer/cd-dvd/sd-image-raspberrypi4.nix
@@ -3,36 +3,6 @@
{ config, lib, pkgs, ... }:
{
- imports = [
- ../../profiles/base.nix
- ../../profiles/installation-device.nix
- ./sd-image.nix
- ];
-
- boot.loader.grub.enable = false;
- boot.loader.raspberryPi.enable = true;
- boot.loader.raspberryPi.version = 4;
+ imports = [ ./sd-image-aarch64.nix ];
boot.kernelPackages = pkgs.linuxPackages_rpi4;
-
- boot.consoleLogLevel = lib.mkDefault 7;
-
- 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 attrsOf 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;
}