From 89ab0d27c99ce4899829ab45001c0955db1149ab Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: Thu, 7 Jan 2021 00:56:11 +0100 Subject: libre: uboot4extlinux-sunxi: lower maintenance costs - We can now do cross builds of u-boot: - We can now more easily work on the package as we don't need an ARM computer for that anymore. - It also enable people already using Parabola on x86 to more easily install, test, or repair u-boot for an ARM computer as users can simply install it on microSD cards without needing to use ARM chroots. - There is now an install script to install u-boot: - It makes things easier for users as it is more similar to grub-install than dd commands. - It also does many checks at the same time to avoid data loss. - The commands to split packages are now shared between all package_ functions. This lower maintenance. - How to add a new board has been made more clear. Comparison with other distributions (for consistency): - u-boot doesn't have anything to handle the installation and update of u-boot binaries if UEFI is not used. - Debian has an u-boot-install-sunxi script which handles way more cases than what I wrote (it even handles GPT and so on and even has a manual), but there seems to be no tools to update u-boot. - Openembedded doesn't seem to have anything special in the u-boot recipe in openembedded-core Signed-off-by: Denis 'GNUtoo' Carikli --- .../0001-Add-tool-to-dump-sunxi-images.patch | 85 ++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 libre/uboot4extlinux-sunxi/0001-Add-tool-to-dump-sunxi-images.patch (limited to 'libre/uboot4extlinux-sunxi/0001-Add-tool-to-dump-sunxi-images.patch') diff --git a/libre/uboot4extlinux-sunxi/0001-Add-tool-to-dump-sunxi-images.patch b/libre/uboot4extlinux-sunxi/0001-Add-tool-to-dump-sunxi-images.patch new file mode 100644 index 000000000..ee89767f2 --- /dev/null +++ b/libre/uboot4extlinux-sunxi/0001-Add-tool-to-dump-sunxi-images.patch @@ -0,0 +1,85 @@ +From b4e67c5112b8d8ec8f9255af057c3515c5ea71c1 Mon Sep 17 00:00:00 2001 +From: Denis 'GNUtoo' Carikli +Date: Sat, 29 May 2021 19:14:22 +0200 +Subject: [PATCH] Add tool to dump sunxi images + + $./tools/dumpimage -l ~/work/temp/lime1.img + Allwinner eGON image, size: 24576 bytes + SPL header version 0.2 + DT name: sun7i-a20-olinuxino-lime2-emmc + $ ./tools/dumpimage -l ~/work/temp/parabola.img + Allwinner eGON image, size: 24576 bytes + SPL header version 0.2 + DT name: sun7i-a20-olinuxino-lime2-emmc + +TODO: +- why do we have the lime2 dt detected above? is the + env a leftover from the previous image somehow? +- Handle block devices: + $ sudo ./tools/dumpimage -l /dev/sdb + Image Type: MVEBU Boot from (null) Image + Image version:0 + Data Size: -4 Bytes = 4194304.00 KiB = 4096.00 MiB + Load Address: 00000000 + Entry Point: 00000000 +- Make it easily parsable by tools +- Force type to sunxi_egon + +Signed-off-by: Denis 'GNUtoo' Carikli +--- + tools/dumpimage.c | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +diff --git a/tools/dumpimage.c b/tools/dumpimage.c +index e5481435a7..9d0d0c448b 100644 +--- a/tools/dumpimage.c ++++ b/tools/dumpimage.c +@@ -71,6 +71,9 @@ int main(int argc, char **argv) + char *ptr; + int retval = EXIT_SUCCESS; + struct image_type_params *tparams = NULL; ++ off_t offset = 0; ++ ++ offset = 8192; /* Allwinner SOCs */ + + params.cmdname = *argv; + +@@ -159,6 +162,14 @@ int main(int argc, char **argv) + exit(EXIT_FAILURE); + } + ++ /* Handle block devices */ ++ if (sbuf.st_size == 0) { ++ /* 1M should be sufficient as we have the first partition that ++ * is typically aligned at 1M for MBR partitioning. ++ */ ++ sbuf.st_size = 1024*1024; ++ } ++ + if ((uint32_t)sbuf.st_size < tparams->header_size) { + fprintf(stderr, "%s: Bad size: \"%s\" is not valid image\n", + params.cmdname, params.imagefile); +@@ -182,7 +193,7 @@ int main(int argc, char **argv) + * Extract the data files from within the matched + * image type. Returns the error code if not matched + */ +- retval = dumpimage_extract_subimage(tparams, ptr, &sbuf); ++ retval = dumpimage_extract_subimage(tparams, ptr + offset, &sbuf); + if (retval) + fprintf(stderr, "%s: Can't extract subimage from %s\n", + params.cmdname, params.imagefile); +@@ -191,10 +202,9 @@ int main(int argc, char **argv) + * Print the image information for matched image type + * Returns the error code if not matched + */ +- retval = imagetool_verify_print_header(ptr, &sbuf, tparams, ++ retval = imagetool_verify_print_header(ptr + offset, &sbuf, tparams, + ¶ms); + } +- + (void)munmap((void *)ptr, sbuf.st_size); + (void)close(ifd); + +-- +2.31.1 + -- cgit v1.2.3