rpi5: boots now automatically, with correct config
CI / x86_64-linux (push) Successful in 1m7s Details
CI / aarch64-linux (push) Successful in 1m53s Details

main
Ari Gerus 2024-04-24 17:27:53 +02:00
parent fe726b3452
commit def1f40aa6
5 changed files with 35 additions and 8 deletions

View File

@ -55,7 +55,8 @@ in {
echo ''${path/\/nix\/store\/}
}
cp ${pkgs.rpi5-uefi}/* firmware
cp -v ${pkgs.rpi5-uefi}/* firmware
cp -v ${pkgs.rpi5-dtb}/* firmware
mkdir -p firmware/EFI/nixos
touch firmware/EFI/nixos-sd-system-image
@ -91,7 +92,7 @@ in {
serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1
terminal_output console serial
timeout 10
set timeout=10
set default="0"
menuentry '${config.system.nixos.distroName} ${config.system.nixos.label}' {
@ -99,7 +100,6 @@ in {
toString config.boot.kernelParams
}
initrd /EFI/nixos/$initrdFile
devicetree /bcm2712-rpi-5-b.dtb
}
EOF
'';

View File

@ -13,4 +13,5 @@ self: super: rec {
rpi5-edk2-tools = self.callPackage ../pkgs/rpi5-edk2-tools.nix { };
rpi5-uefi = self.callPackage ../pkgs/rpi5-uefi.nix { };
rpi5-uefi-bin = self.callPackage ../pkgs/rpi5-uefi-bin.nix { };
rpi5-dtb = self.callPackage ../pkgs/rpi5-dtb.nix { };
}

26
pkgs/rpi5-dtb.nix Normal file
View File

@ -0,0 +1,26 @@
{ stdenv, fetchurl, ... }:
let
dtbVersion = "1e403e23baab5673f0494a200f57cd01287d5b1a";
fileName = "bcm2712-rpi-5-b.dtb";
in
stdenv.mkDerivation {
pname = "rpi5-dtb";
version = "20240316";
src = fetchurl {
url = "https://github.com/raspberrypi/firmware/raw/${dtbVersion}/boot/${fileName}";
hash = "sha256-xUMqzINz+mMR4UciG4ulyGhblXcwr6x1ksXerCsn5zI=";
};
phases = [ "installPhase" ];
installPhase = ''
runHook preInstall
mkdir -p $out/
cp $src $out/${fileName}
runHook postInstall
'';
}

View File

@ -2,7 +2,7 @@
let version = "v0.3";
in stdenv.mkDerivation {
pname = "rpi5-uefi";
pname = "rpi5-uefi-bin";
inherit version;
src = fetchzip {

View File

@ -3,10 +3,9 @@
let pythonEnv = buildPackages.python3.withPackages (ps: [ ps.tkinter ]);
in stdenv.mkDerivation rec {
name = "rpi5-uefi";
version = "20240316";
pname = "rpi5-uefi";
inherit (rpi5-edk2-tools) src;
inherit (rpi5-edk2-tools) src version;
nativeBuildInputs = [ bc pythonEnv util-linux nasm acpica-tools ];
depsBuildBuild = [ buildPackages.stdenv.cc ];
@ -22,7 +21,8 @@ in stdenv.mkDerivation rec {
ln -sv ${rpi5-edk2-tools}/BaseTools edk2/BaseTools
sed -i -e '/ACPI_SD_LIMIT_UHS_DEFAULT/s/TRUE/FALSE/' edk2-platforms/Platform/RaspberryPi/RPi5/Drivers/RpiPlatformDxe/ConfigTable.h
sed -i -e '/default\s*= SYSTEM_TABLE_MODE_ACPI/s/SYSTEM_TABLE_MODE_ACPI/SYSTEM_TABLE_MODE_BOTH/' ./edk2-platforms/Platform/RaspberryPi/RPi5/Drivers/RpiPlatformDxe/RpiPlatformDxeHii.vfr
sed -i -e '/default\s*= SYSTEM_TABLE_MODE_ACPI/s/SYSTEM_TABLE_MODE_ACPI/SYSTEM_TABLE_MODE_BOTH/' edk2-platforms/Platform/RaspberryPi/RPi5/Drivers/RpiPlatformDxe/RpiPlatformDxeHii.vfr
sed -i -e '/"SystemTableMode"/s/0$/1/' edk2-platforms/Platform/RaspberryPi/RPi5/RPi5.dsc
'';
configurePhase = ''