From a3649184b922455f5d1655640f7378c23b3d651f Mon Sep 17 00:00:00 2001 From: Astro Date: Thu, 17 Mar 2022 18:32:42 +0100 Subject: [PATCH] rpi-netboot: add dtb, use linuxPackages_latest --- hosts/dacbert/default.nix | 10 +++------- hosts/rpi-netboot/default.nix | 32 +++++--------------------------- modules/rpi-netboot.nix | 30 +++++++++++++++++++++--------- 3 files changed, 29 insertions(+), 43 deletions(-) diff --git a/hosts/dacbert/default.nix b/hosts/dacbert/default.nix index 1f3f825d..32fbdcd3 100644 --- a/hosts/dacbert/default.nix +++ b/hosts/dacbert/default.nix @@ -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"; diff --git a/hosts/rpi-netboot/default.nix b/hosts/rpi-netboot/default.nix index f9e1460c..c7c27d33 100644 --- a/hosts/rpi-netboot/default.nix +++ b/hosts/rpi-netboot/default.nix @@ -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 diff --git a/modules/rpi-netboot.nix b/modules/rpi-netboot.nix index 1e62dde0..61694501 100644 --- a/modules/rpi-netboot.nix +++ b/modules/rpi-netboot.nix @@ -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 ''; }