Message ID | 87h8b6ia13.fsf@ponder |
---|---|
State | Accepted |
Headers | show |
Series | [bug#35217] gnu: u-boot: Update to 2019.04. | expand |
Context | Check | Description |
---|---|---|
cbaines/applying patch | fail | Apply failed |
> On 2019-04-10, Vagrant Cascadian wrote: > * gnu/packages/bootloaders (u-boot): Update to 2019.04. ... > (u-boot-am335x-evm): New variable. > (u-boot-am335x-boneblack): Deprecate variable. The am335x-boneblack configuration was dropped from upstream. The am335x-evm image is considerably larger than the am335x-boneblack images, which leads to issues when installing at a device offset, as it will overwrite the first partition unless the first partition starts significantly later than most tools (parted, cfdisk) default of sector 2048 (beagleboard.org images start the first partition at sector 8192). The embedded-os-installation code should probably check to make sure they aren't trampling the first partition if installing to the raw device offset. Alternately, it's possible to copy the u-boot.img onto the first FAT partition of the microSD/eMMC, which will be loaded instead of the offset. But that takes some rethinking of how to install the bootloader (which would be good to not diverge from upstream for other platforms, such as u-boot-novena). I've unsuccessfully tried to make a minimal variant of the am335x-evm that only supports the beaglebone black, by removing the other device trees, which made it considerably smaller, but not small enough. Disabling NAND and related features might still be possible, but I haven't managed to get a configuration that compiles. So there's no clear upgrade path for existing beaglebone black installs. The upside to all this is that am335x-evm supports multiple boards! In light of all that, I'm not sure what a proper way forward is... live well, vagrant
Hi Vagrant, On Wed, 10 Apr 2019 15:22:18 -0700 Vagrant Cascadian <vagrant@debian.org> wrote: > > On 2019-04-10, Vagrant Cascadian wrote: > > * gnu/packages/bootloaders (u-boot): Update to 2019.04. > ... > > (u-boot-am335x-evm): New variable. > > (u-boot-am335x-boneblack): Deprecate variable. > > The am335x-boneblack configuration was dropped from upstream. > > The am335x-evm image is considerably larger than the am335x-boneblack > images, which leads to issues when installing at a device offset, as it > will overwrite the first partition unless the first partition starts > significantly later than most tools (parted, cfdisk) default of sector > 2048 (beagleboard.org images start the first partition at sector 8192). > > The embedded-os-installation code should probably check to make sure > they aren't trampling the first partition if installing to the raw > device offset. That would make the parted bindings a hard dependency, probably even build-side. But I think that would still be better than the alternative: destroying user filesystems. > Alternately, it's possible to copy the u-boot.img onto the first FAT > partition of the microSD/eMMC, which will be loaded instead of the > offset. But that takes some rethinking of how to install the bootloader > (which would be good to not diverge from upstream for other platforms, > such as u-boot-novena). Yeah, I think sooner or later it's going to come to this. Might as well bite the bullet now. > In light of all that, I'm not sure what a proper way forward is... Yeah, sounds like a bad situation with no nice solution that allows updating of existing installations. In that case, keeping existing installations on the old version would be preferrable to breaking them.
diff --git a/gnu/local.mk b/gnu/local.mk index 6c39c3fef5..d8b74c0650 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1307,6 +1307,7 @@ dist_patch_DATA = \ %D%/packages/patches/totem-meson-easy-codec.patch \ %D%/packages/patches/tuxpaint-stamps-path.patch \ %D%/packages/patches/twinkle-include-qregexpvalidator.patch \ + %D%/packages/patches/u-boot-fix-mkimage-header-verification.patch \ %D%/packages/patches/unzip-CVE-2014-8139.patch \ %D%/packages/patches/unzip-CVE-2014-8140.patch \ %D%/packages/patches/unzip-CVE-2014-8141.patch \ diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index d6ef7d52b5..6064e699f8 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -378,7 +378,7 @@ tree binary files. These are board description files used by Linux and BSD.") (define u-boot (package (name "u-boot") - (version "2019.01") + (version "2019.04") (source (origin (method url-fetch) (uri (string-append @@ -386,7 +386,10 @@ tree binary files. These are board description files used by Linux and BSD.") "u-boot-" version ".tar.bz2")) (sha256 (base32 - "08hwsmh5xsb1gcxsv8gvx00bai938dm5y3889n8jif3a8rd7xgah")))) + "1vwv4bgbl7fjcm073zrphn17hnz5h5h778f88ivdsgbb2lnpgdvn")) + (patches + (search-patches + "u-boot-fix-mkimage-header-verification.patch")))) (native-inputs `(("bc" ,bc) ("bison" ,bison) @@ -577,8 +580,11 @@ board-independent tools."))) (define-public u-boot-malta (make-u-boot-package "malta" "mips64el-linux-gnuabi64")) -(define-public u-boot-beagle-bone-black - (make-u-boot-package "am335x_boneblack" "arm-linux-gnueabihf")) +(define-public u-boot-am335x-evm + (make-u-boot-package "am335x_evm" "arm-linux-gnueabihf")) + +(define-public u-boot-am335x-boneblack + (deprecated-package "u-boot-am335x-boneblack" u-boot-am335x-evm)) (define-public (make-u-boot-sunxi64-package board triplet) (let ((base (make-u-boot-package board triplet))) @@ -637,7 +643,7 @@ board-independent tools."))) also initializes the boards (RAM etc). This U-Boot is built for Novena. Be advised that this version, contrary -to Novena upstream, does not load u-boot.img from the first patition.") +to Novena upstream, does not load u-boot.img from the first partition.") (arguments (substitute-keyword-arguments (package-arguments base) ((#:phases phases) @@ -647,7 +653,7 @@ to Novena upstream, does not load u-boot.img from the first patition.") ;; allowing it to be installed at a device offset. (lambda _ (substitute* "configs/novena_defconfig" - (("CONFIG_SPL_FAT_SUPPORT=y") "# CONFIG_SPL_FAT_SUPPORT is not set")) + (("CONFIG_SPL_FS_FAT=y") "# CONFIG_SPL_FS_FAT is not set")) #t))))))))) (define-public u-boot-cubieboard diff --git a/gnu/packages/patches/u-boot-fix-mkimage-header-verification.patch b/gnu/packages/patches/u-boot-fix-mkimage-header-verification.patch new file mode 100644 index 0000000000..a24519d2f4 --- /dev/null +++ b/gnu/packages/patches/u-boot-fix-mkimage-header-verification.patch @@ -0,0 +1,48 @@ +From da8dc3e61bab213b322eafeffa2802585508f288 Mon Sep 17 00:00:00 2001 +From: Jordan Hand <jordanhand22@gmail.com> +Date: Tue, 9 Apr 2019 10:36:09 -0700 +Subject: [PATCH] fdt: Fix mkimage list to try every header type +Origin: https://patchwork.ozlabs.org/patch/1082572/ + +Signed-off-by: Jordan Hand <jorhand@microsoft.com> +--- + tools/mkimage.c | 23 +++++++++++++++-------- + 1 file changed, 15 insertions(+), 8 deletions(-) + +diff --git a/tools/mkimage.c b/tools/mkimage.c +index 2899adff81..d1e1a6743d 100644 +--- a/tools/mkimage.c ++++ b/tools/mkimage.c +@@ -403,14 +403,21 @@ int main(int argc, char **argv) + exit (EXIT_FAILURE); + } + +- /* +- * scan through mkimage registry for all supported image types +- * and verify the input image file header for match +- * Print the image information for matched image type +- * Returns the error code if not matched +- */ +- retval = imagetool_verify_print_header_by_type(ptr, &sbuf, +- tparams, ¶ms); ++ if (params.fflag) { ++ /* ++ * Verifies the header format based on the expected header for image ++ * type in tparams ++ */ ++ retval = imagetool_verify_print_header_by_type(ptr, &sbuf, ++ tparams, ¶ms); ++ } else { ++ /** ++ * When listing the image, we are not given the image type. Simply check all ++ * image types to find one that matches our header ++ */ ++ retval = imagetool_verify_print_header(ptr, &sbuf, ++ tparams, ¶ms); ++ } + + (void) munmap((void *)ptr, sbuf.st_size); + (void) close (ifd); +-- +2.20.1 +