From ec6759a098253be08d8a344465af7bcb066cc9a3 Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Mon, 18 Apr 2016 18:00:32 +0300 Subject: [PATCH 01/11] sd-image-armv7l-multiplatform: Add boot console for BeagleBone Black --- .../modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix b/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix index 957a8ff9ce6d..036183fe2a0a 100644 --- a/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix +++ b/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix @@ -23,7 +23,7 @@ in boot.loader.generic-extlinux-compatible.enable = true; boot.kernelPackages = pkgs.linuxPackages_latest; - boot.kernelParams = ["console=ttyS0,115200n8" "console=ttymxc0,115200n8" "console=ttyAMA0,115200n8" "console=tty0"]; + boot.kernelParams = ["console=ttyS0,115200n8" "console=ttymxc0,115200n8" "console=ttyAMA0,115200n8" "console=ttyO0,115200n8" "console=tty0"]; # FIXME: this probably should be in installation-device.nix users.extraUsers.root.initialHashedPassword = ""; From b6b7da20be30d0807c3f7f804ab2bf5d4c553f94 Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Mon, 18 Apr 2016 18:01:42 +0300 Subject: [PATCH 02/11] sd-image-*: Set verbose kernel loglevel Much easier to debug boot issues this way... --- nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix | 1 + nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix b/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix index 036183fe2a0a..715deca02b58 100644 --- a/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix +++ b/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix @@ -24,6 +24,7 @@ in boot.kernelPackages = pkgs.linuxPackages_latest; boot.kernelParams = ["console=ttyS0,115200n8" "console=ttymxc0,115200n8" "console=ttyAMA0,115200n8" "console=ttyO0,115200n8" "console=tty0"]; + boot.consoleLogLevel = 7; # FIXME: this probably should be in installation-device.nix users.extraUsers.root.initialHashedPassword = ""; diff --git a/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix b/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix index e7163f10a3c3..dc196468139a 100644 --- a/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix +++ b/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix @@ -26,6 +26,7 @@ in boot.loader.generic-extlinux-compatible.enable = true; boot.kernelPackages = pkgs.linuxPackages_rpi; + boot.consoleLogLevel = 7; # FIXME: this probably should be in installation-device.nix users.extraUsers.root.initialHashedPassword = ""; From 1268f0753f32256250aa65133c3a19b49cf508da Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Mon, 18 Apr 2016 19:57:08 +0300 Subject: [PATCH 03/11] U-Boot: Build for the Beaglebone Black --- pkgs/misc/uboot/default.nix | 6 ++++++ pkgs/top-level/all-packages.nix | 1 + 2 files changed, 7 insertions(+) diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix index 605208a757b4..9a30fedfd541 100644 --- a/pkgs/misc/uboot/default.nix +++ b/pkgs/misc/uboot/default.nix @@ -68,6 +68,12 @@ in rec { filesToInstall = ["u-boot-sunxi-with-spl.bin"]; }; + ubootBeagleboneBlack = buildUBoot rec { + defconfig = "am335x_boneblack_defconfig"; + targetPlatforms = ["armv7l-linux"]; + filesToInstall = ["MLO" "u-boot.img"]; + }; + ubootJetsonTK1 = buildUBoot rec { defconfig = "jetson-tk1_defconfig"; targetPlatforms = ["armv7l-linux"]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f1aa34d165a2..fd12c6409266 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11401,6 +11401,7 @@ in buildUBoot ubootTools ubootBananaPi + ubootBeagleboneBlack ubootJetsonTK1 ubootPcduino3Nano ubootRaspberryPi From 428b51dd2ff7042099125fd6cd3060e8b090dbaa Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Sat, 23 Apr 2016 14:43:59 +0300 Subject: [PATCH 04/11] U-Boot: 2016.01 -> 2016.05 Amongst many minor things, the USB keyboard becomes operative on the Raspberry Pi. Yay! --- pkgs/misc/uboot/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix index 9a30fedfd541..a2b27c67dce0 100644 --- a/pkgs/misc/uboot/default.nix +++ b/pkgs/misc/uboot/default.nix @@ -10,13 +10,13 @@ let stdenv.mkDerivation (rec { name = "uboot-${defconfig}-${version}"; - version = "2016.01"; + version = "2016.05"; nativeBuildInputs = [ bc dtc ]; src = fetchurl { url = "ftp://ftp.denx.de/pub/u-boot/u-boot-${version}.tar.bz2"; - sha256 = "1md5jpq5n9jh08s7sdkjrvg2q7kpzwa7yrpgl9581ncrjfx2yyg5"; + sha256 = "0wdivib8kbm17qr6r7n7wyzg5vnwpagvwk5m0z80rbssc5sj5l47"; }; configurePhase = '' From 4108e0324e498395e9baa1af27985e9e986116ce Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Sat, 23 Apr 2016 14:44:19 +0300 Subject: [PATCH 05/11] U-Boot: Build for the Raspberry Pi 2 & 3 --- pkgs/misc/uboot/default.nix | 12 ++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 14 insertions(+) diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix index a2b27c67dce0..1deb90e2f842 100644 --- a/pkgs/misc/uboot/default.nix +++ b/pkgs/misc/uboot/default.nix @@ -92,6 +92,18 @@ in rec { filesToInstall = ["u-boot.bin"]; }; + ubootRaspberryPi2 = buildUBoot rec { + defconfig = "rpi_2_defconfig"; + targetPlatforms = ["armv7l-linux"]; + filesToInstall = ["u-boot.bin"]; + }; + + ubootRaspberryPi3 = buildUBoot rec { + defconfig = "rpi_3_32b_defconfig"; + targetPlatforms = ["armv7l-linux"]; + filesToInstall = ["u-boot.bin"]; + }; + # Intended only for QEMU's vexpress-a9 emulation target! ubootVersatileExpressCA9 = buildUBoot rec { defconfig = "vexpress_ca9x4_defconfig"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index fd12c6409266..1630f37a5c18 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11405,6 +11405,8 @@ in ubootJetsonTK1 ubootPcduino3Nano ubootRaspberryPi + ubootRaspberryPi2 + ubootRaspberryPi3 ubootVersatileExpressCA9 ubootWandboard ; From 18572e23590f7407be60926e6d98d1a3580571c1 Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Thu, 2 Jun 2016 19:51:38 +0300 Subject: [PATCH 06/11] U-Boot: Drop Versatile build I had broken this at some point and the patch conflicts quite often. Hopefully soon the Raspberry Pi 2 emulation in QEMU can be used instead. --- pkgs/misc/uboot/default.nix | 8 -- .../vexpress-Use-config_distro_bootcmd.patch | 82 ------------------- pkgs/top-level/all-packages.nix | 1 - 3 files changed, 91 deletions(-) delete mode 100644 pkgs/misc/uboot/vexpress-Use-config_distro_bootcmd.patch diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix index 1deb90e2f842..2cf9cbb1ab80 100644 --- a/pkgs/misc/uboot/default.nix +++ b/pkgs/misc/uboot/default.nix @@ -104,14 +104,6 @@ in rec { filesToInstall = ["u-boot.bin"]; }; - # Intended only for QEMU's vexpress-a9 emulation target! - ubootVersatileExpressCA9 = buildUBoot rec { - defconfig = "vexpress_ca9x4_defconfig"; - targetPlatforms = ["armv7l-linux"]; - filesToInstall = ["u-boot"]; - patches = [ ./vexpress-Use-config_distro_bootcmd.patch ]; - }; - ubootWandboard = buildUBoot rec { defconfig = "wandboard_defconfig"; targetPlatforms = ["armv7l-linux"]; diff --git a/pkgs/misc/uboot/vexpress-Use-config_distro_bootcmd.patch b/pkgs/misc/uboot/vexpress-Use-config_distro_bootcmd.patch deleted file mode 100644 index 218132c7758e..000000000000 --- a/pkgs/misc/uboot/vexpress-Use-config_distro_bootcmd.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 98f62c27fe481dc2d444d70265268d2369d8a998 Mon Sep 17 00:00:00 2001 -From: Tuomas Tynkkynen -Date: Mon, 8 Jun 2015 22:29:23 +0300 -Subject: [PATCH] vexpress: Use config_distro_bootcmd - -Also had to hack cli_readline.c, as one codepath in -cli_readline_into_buffer doesn't respect the timeout. ---- - common/cli_readline.c | 12 +++++++++++- - configs/vexpress_ca9x4_defconfig | 2 -- - include/configs/vexpress_common.h | 2 +- - 3 files changed, 12 insertions(+), 4 deletions(-) - -diff --git a/common/cli_readline.c b/common/cli_readline.c -index c1476e4..5063a0a 100644 ---- a/common/cli_readline.c -+++ b/common/cli_readline.c -@@ -517,6 +517,7 @@ int cli_readline_into_buffer(const char *const prompt, char *buffer, - int plen = 0; /* prompt length */ - int col; /* output column cnt */ - char c; -+ int first = 1; - - /* print prompt */ - if (prompt) { -@@ -528,7 +529,16 @@ int cli_readline_into_buffer(const char *const prompt, char *buffer, - for (;;) { - if (bootretry_tstc_timeout()) - return -2; /* timed out */ -- WATCHDOG_RESET(); /* Trigger watchdog, if needed */ -+ if (first && timeout) { -+ uint64_t etime = endtick(timeout); -+ -+ while (!tstc()) { /* while no incoming data */ -+ if (get_ticks() >= etime) -+ return -2; /* timed out */ -+ WATCHDOG_RESET(); -+ } -+ first = 0; -+ } - - #ifdef CONFIG_SHOW_ACTIVITY - while (!tstc()) { -diff --git a/configs/vexpress_ca9x4_defconfig b/configs/vexpress_ca9x4_defconfig -index 2947fc1..9a5123d 100644 ---- a/configs/vexpress_ca9x4_defconfig -+++ b/configs/vexpress_ca9x4_defconfig -@@ -5,11 +5,9 @@ CONFIG_TARGET_VEXPRESS_CA9X4=y - # CONFIG_CMD_IMLS is not set - # CONFIG_CMD_XIMG is not set - # CONFIG_CMD_EDITENV is not set --# CONFIG_CMD_ENV_EXISTS is not set - # CONFIG_CMD_LOADB is not set - # CONFIG_CMD_LOADS is not set - # CONFIG_CMD_FPGA is not set --# CONFIG_CMD_ECHO is not set - # CONFIG_CMD_ITEST is not set - # CONFIG_CMD_SETEXPR is not set - # CONFIG_CMD_NFS is not set -diff --git a/include/configs/vexpress_common.h b/include/configs/vexpress_common.h -index 98f6ae9..062532a 100644 ---- a/include/configs/vexpress_common.h -+++ b/include/configs/vexpress_common.h -@@ -185,7 +185,6 @@ - CONFIG_SYS_INIT_RAM_SIZE - \ - GENERATED_GBL_DATA_SIZE) - #define CONFIG_SYS_INIT_SP_ADDR CONFIG_SYS_GBL_DATA_OFFSET --#define CONFIG_CMD_ECHO - - #include - -@@ -225,6 +224,7 @@ - #define CONFIG_EXTRA_ENV_SETTINGS \ - CONFIG_PLATFORM_ENV_SETTINGS \ - BOOTENV \ -+ "fdtfile=vexpress-v2p-ca9.dtb\0" \ - "console=ttyAMA0,38400n8\0" \ - "dram=1024M\0" \ - "root=/dev/sda1 rw\0" \ --- -2.6.0 - diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1630f37a5c18..e809b5a2b215 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11407,7 +11407,6 @@ in ubootRaspberryPi ubootRaspberryPi2 ubootRaspberryPi3 - ubootVersatileExpressCA9 ubootWandboard ; From d8cd615720524bf7600ff31e4ba3779264c084e9 Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Sun, 19 Jun 2016 22:47:30 +0300 Subject: [PATCH 07/11] raspberrypifw: 1.20160315 -> 1.20160620 - Use fetchFromGitHub - Some files in bin/ are now shell scripts, so skip patchelf on any non-ELF files. With this U-Boot can be successfully launched on a RPi 3. --- .../linux/firmware/raspberrypi/default.nix | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/pkgs/os-specific/linux/firmware/raspberrypi/default.nix b/pkgs/os-specific/linux/firmware/raspberrypi/default.nix index 0c61aee9713e..4787eb57afd3 100644 --- a/pkgs/os-specific/linux/firmware/raspberrypi/default.nix +++ b/pkgs/os-specific/linux/firmware/raspberrypi/default.nix @@ -1,15 +1,14 @@ -{stdenv, fetchurl }: +{ stdenv, fetchFromGitHub }: -let +stdenv.mkDerivation rec { + name = "raspberrypi-firmware-${version}"; + version = "1.20160620"; - rev = "1.20160315"; - -in stdenv.mkDerivation { - name = "raspberrypi-firmware-${rev}"; - - src = fetchurl { - url = "https://github.com/raspberrypi/firmware/archive/${rev}.tar.gz"; - sha256 = "0a7ycv01s0kk84szsh51hy2mjjil1dzdk0g7k83h50d5nya090fl"; + src = fetchFromGitHub { + owner = "raspberrypi"; + repo = "firmware"; + rev = version; + sha256 = "06g691px0abndp5zvz2ba1g675rcqb64n055h5ahgnlck5cdpawg"; }; installPhase = '' @@ -19,8 +18,10 @@ in stdenv.mkDerivation { cp opt/vc/LICENCE $out/share/raspberrypi for f in $out/bin/*; do - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$f" - patchelf --set-rpath "$out/lib" "$f" + if isELF "$f"; then + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$f" + patchelf --set-rpath "$out/lib" "$f" + fi done ''; From 36f4a8a485732da98e1fcf40945ecda305677579 Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Sun, 19 Jun 2016 22:49:36 +0300 Subject: [PATCH 08/11] sd-image-armv7l-multiplatform.nix: Preliminary Raspberry Pi 2/3 support - RPi3 successfully gets to U-Boot, but then fails to boot the kernel due to a missing device tree file. This should get added to the 4.8 kernel release once this patch is merged: https://lkml.org/lkml/2016/6/1/841 - RPi2 is not tested, but it should successfully boot the NixOS image. --- .../cd-dvd/sd-image-armv7l-multiplatform.nix | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix b/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix index 715deca02b58..80fb47072286 100644 --- a/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix +++ b/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix @@ -19,6 +19,9 @@ in "it cannot be cross compiled"; }; + # Needed by RPi firmware + nixpkgs.config.allowUnfree = true; + boot.loader.grub.enable = false; boot.loader.generic-extlinux-compatible.enable = true; @@ -30,8 +33,23 @@ in users.extraUsers.root.initialHashedPassword = ""; sdImage = { - populateBootCommands = '' + populateBootCommands = let + configTxt = pkgs.writeText "config.txt" '' + [pi2] + kernel=u-boot-rpi2.bin + + [pi3] + kernel=u-boot-rpi3.bin + enable_uart=1 + ''; + in '' + for f in bootcode.bin fixup.dat start.elf; do + cp ${pkgs.raspberrypifw}/share/raspberrypi/boot/$f boot/ + done + cp ${pkgs.ubootRaspberryPi2}/u-boot.bin boot/u-boot-rpi2.bin + cp ${pkgs.ubootRaspberryPi3}/u-boot.bin boot/u-boot-rpi3.bin + cp ${configTxt} boot/config.txt ${extlinux-conf-builder} -t 3 -c ${config.system.build.toplevel} -d ./boot - ''; + ''; }; } From 1d069ff6ac902d5e146949c7d2140655072ebab8 Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Sun, 3 Jul 2016 21:35:10 +0300 Subject: [PATCH 09/11] rtl8723bs: Support all Linux --- pkgs/os-specific/linux/rtl8723bs/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/rtl8723bs/default.nix b/pkgs/os-specific/linux/rtl8723bs/default.nix index e8cc1f40067e..046445345903 100644 --- a/pkgs/os-specific/linux/rtl8723bs/default.nix +++ b/pkgs/os-specific/linux/rtl8723bs/default.nix @@ -32,7 +32,7 @@ stdenv.mkDerivation rec { description = "Realtek SDIO Wi-Fi driver"; homepage = "https://github.com/hadess/rtl8723bs"; license = stdenv.lib.licenses.gpl2; - platforms = [ "x86_64-linux" "i686-linux" "armv7l-linux" ]; + platforms = stdenv.lib.platforms.linux; broken = ! versionAtLeast kernel.version "3.19"; maintainers = with maintainers; [ elitak ]; }; From 44955a73b20a57526c7bf7e7a0e900f1a4a82f0f Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Mon, 4 Jul 2016 01:50:47 +0300 Subject: [PATCH 10/11] platforms.nix: Enable DTB for the ARMv6 Raspberry Pi --- pkgs/top-level/platforms.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/top-level/platforms.nix b/pkgs/top-level/platforms.nix index 8ffe1a60af5a..83859f821d87 100644 --- a/pkgs/top-level/platforms.nix +++ b/pkgs/top-level/platforms.nix @@ -136,6 +136,7 @@ rec { kernelMajor = "2.6"; kernelHeadersBaseConfig = "bcm2835_defconfig"; kernelBaseConfig = "bcmrpi_defconfig"; + kernelDTB = true; kernelArch = "arm"; kernelAutoModules = false; kernelExtraConfig = From 55aecd308eff773c7ee6ce754ed75fcf69bde133 Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Mon, 4 Jul 2016 01:50:37 +0300 Subject: [PATCH 11/11] linux-rpi: 4.1.20-XXX -> 4.4.13-1.20160620-1 - Add a patch to unset CONFIG_LOCALVERSION in the v7 build. - Copy all the device trees to match the upstream names so U-Boot can find them. (This is a hack.) --- pkgs/os-specific/linux/kernel/linux-rpi.nix | 50 ++++++++++++++++----- 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/linux-rpi.nix b/pkgs/os-specific/linux/kernel/linux-rpi.nix index 777662718af6..a069e7606ccc 100644 --- a/pkgs/os-specific/linux/kernel/linux-rpi.nix +++ b/pkgs/os-specific/linux/kernel/linux-rpi.nix @@ -1,21 +1,47 @@ -{ stdenv, fetchurl, perl, buildLinux, ... } @ args: +{ stdenv, fetchFromGitHub, perl, buildLinux, ... } @ args: let + modDirVersion = "4.4.13"; + tag = "1.20160620-1"; +in +stdenv.lib.overrideDerivation (import ./generic.nix (args // rec { + version = "${modDirVersion}-${tag}"; + inherit modDirVersion; - rev = "f4b20d47d7df7927967fcd524324b145cfc9e2f9"; - -in import ./generic.nix (args // rec { - version = "4.1.y-${rev}"; - - modDirVersion = "4.1.20-v7"; - - src = fetchurl { - url = "https://api.github.com/repos/raspberrypi/linux/tarball/${rev}"; - name = "linux-raspberrypi-${version}.tar.gz"; - sha256 = "0x17hlbi7lpmmnp24dnkync5gzj57j84j0nlrcv1lv9fahjkqsm2"; + src = fetchFromGitHub { + owner = "raspberrypi"; + repo = "linux"; + rev = "raspberrypi-kernel_${tag}"; + sha256 = "0bydlzmd9mar07j6dihhzn1xm6vpn92y33vf1qsdkl3hjil6brfc"; }; features.iwlwifi = true; extraMeta.hydraPlatforms = []; +})) (oldAttrs: { + postConfigure = '' + # The v7 defconfig has this set to '-v7' which screws up our modDirVersion. + sed -i $buildRoot/.config -e 's/^CONFIG_LOCALVERSION=.*/CONFIG_LOCALVERSION=""/' + ''; + + postFixup = '' + # Make copies of the DTBs so that U-Boot finds them, as it is looking for the upstream names. + # This is ugly as heck. + copyDTB() { + if [ -f "$out/dtbs/$1" ]; then + cp -v "$out/dtbs/$1" "$out/dtbs/$2" + fi + } + + # I am not sure if all of these are correct... + copyDTB bcm2708-rpi-b.dtb bcm2835-rpi-a.dtb + copyDTB bcm2708-rpi-b.dtb bcm2835-rpi-b.dtb + copyDTB bcm2708-rpi-b.dtb bcm2835-rpi-b-rev2.dtb + copyDTB bcm2708-rpi-b-plus.dtb bcm2835-rpi-a-plus.dtb + copyDTB bcm2708-rpi-b-plus.dtb bcm2835-rpi-b-plus.dtb + copyDTB bcm2708-rpi-b-plus.dtb bcm2835-rpi-zero.dtb + copyDTB bcm2708-rpi-cm.dtb bcm2835-rpi-cm.dtb + copyDTB bcm2709-rpi-2-b.dtb bcm2836-rpi-2-b.dtb + copyDTB bcm2710-rpi-3-b.dtb bcm2837-rpi-3-b.dtb + ''; })