rpi-netboot: add dtb, use linuxPackages_latest

This commit is contained in:
Astro 2022-03-17 18:32:42 +01:00
parent b31c7e005a
commit a3649184b9
3 changed files with 29 additions and 43 deletions

View File

@ -2,10 +2,6 @@
{
hardware.enableRedistributableFirmware = true;
# hardware.deviceTree = {
# enable = true;
# kernelPackage = config.boot.kernelPackages.kernel;
# };
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
nixpkgs.config.packageOverrides = pkgs: {
@ -35,9 +31,9 @@
tmpOnTmpfs = true;
};
hardware.raspberry-pi."4" = {
fkms-3d.enable = true;
};
# hardware.raspberry-pi."4" = {
# fkms-3d.enable = true;
# };
fileSystems."/" = {
device = "${hostRegistry.hosts.nix-build.ip4}:/var/lib/nfsroot/dacbert";
fsType = "nfs";

View File

@ -1,37 +1,14 @@
{ nixpkgs, config, lib, pkgs, modulesPath, ... }:
{
system.build.tarball = pkgs.callPackage (nixpkgs + "/nixos/lib/make-system-tarball.nix") {
extraArgs = "--owner=0";
compressCommand = "cat";
compressionExtension = "";
storeContents = [
{
object = config.system.build.toplevel;
symlink = "none";
}
];
contents = [
{
source = config.system.build.toplevel + "/init";
target = "/sbin/init";
}
];
extraCommands = "mkdir -p proc sys dev";
};
boot.initrd.kernelModules = [ ];
boot.initrd.includeDefaultModules = false;
boot.initrd.availableKernelModules = lib.mkForce [ "usbhid" ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
boot.initrd.kernelParams = [
"verbose"
];
swapDevices = [ ];
hardware.enableRedistributableFirmware = true;
hardware.bluetooth.enable = true;
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
nixpkgs.config.packageOverrides = pkgs: {
@ -74,6 +51,7 @@
environment.systemPackages = with pkgs; [
libraspberrypi
raspberrypi-eeprom
iw
vim
wget
mpv

View File

@ -7,11 +7,13 @@
firmwareConfig = lib.mkDefault ''
gpu_mem=256
dtparam=audio=on
# disable uart, enable bluetooth
enable_uart=0
'';
};
# linuxPackages_latest doesn't boot
# FIXME: needs u-boot or .dtb?
kernelPackages = pkgs.linuxPackages_rpi4;
kernelPackages = pkgs.linuxPackages_latest;
kernelParams = [
"verbose" "shell_on_fail"
"elevator=deadline"
@ -24,8 +26,11 @@
supportedFilesystems = lib.mkForce [
"nfs"
];
# keyboard support for debugging
availableKernelModules = [ "usb_storage" "usbhid" ];
includeDefaultModules = false;
availableKernelModules = [
"genet"
"usbhid"
];
};
tmpOnTmpfs = true;
@ -38,8 +43,7 @@
neededForBoot = true;
};
# don't build .dtb files as long as we don't use them
hardware.deviceTree.enable = false;
hardware.deviceTree.enable = true;
environment.systemPackages = with pkgs; [
libraspberrypi
@ -58,16 +62,24 @@
system.build.tftproot = pkgs.runCommand "tftproot-${config.networking.hostName}" {} ''
mkdir -p $out
cp -rs ${pkgs.raspberrypifw}/share/raspberrypi/boot/* $out/
rm -f $out/kernel8.img $out/initrd.img
ln -s ${config.system.build.kernel}/Image $out/kernel8.img
ln -s ${config.system.build.initialRamdisk}/initrd $out/initrd.img
ln -sf ${config.system.build.kernel}/Image $out/kernel8.img
ln -sf ${config.system.build.initialRamdisk}/initrd $out/initrd.img
chmod u+w $out/overlays
rm -fr $out/*.dtb $out/overlays
for f in $(find ${config.hardware.deviceTree.package}/ -name \*.dtb) ; do
ln -s $f $out/
done
cat << EOF > $out/config.txt
kernel=kernel8.img
initramfs initrd.img followkernel
arm_64bit=1
${toString config.boot.loader.raspberryPi.firmwareConfig}
EOF
echo "dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 verbose init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams}" > $out/cmdline.txt
echo "dwc_otg.lpm_enable=0 init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams}" > $out/cmdline.txt
'';
}