diff options
author | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2021-01-07 00:56:11 +0100 |
---|---|---|
committer | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2021-07-05 20:17:21 +0200 |
commit | 89ab0d27c99ce4899829ab45001c0955db1149ab (patch) | |
tree | 9735cdba5977682103614a1c99992f1c1009bed7 /libre/uboot4extlinux-sunxi/0001-Add-tool-to-dump-sunxi-images.patch | |
parent | 5f989c87ef5056135de96820f697d825980d13e3 (diff) | |
download | abslibre-89ab0d27c99ce4899829ab45001c0955db1149ab.tar.gz abslibre-89ab0d27c99ce4899829ab45001c0955db1149ab.tar.bz2 abslibre-89ab0d27c99ce4899829ab45001c0955db1149ab.zip |
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 <GNUtoo@cyberdimension.org>
Diffstat (limited to 'libre/uboot4extlinux-sunxi/0001-Add-tool-to-dump-sunxi-images.patch')
-rw-r--r-- | libre/uboot4extlinux-sunxi/0001-Add-tool-to-dump-sunxi-images.patch | 85 |
1 files changed, 85 insertions, 0 deletions
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 <GNUtoo@cyberdimension.org> +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 <GNUtoo@cyberdimension.org> +--- + 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 + |