DistroKit Mailinglist
 help / color / mirror / Atom feed
* [DistroKit] [PATCH 0/5] enable uploading kernel, dtb and initramfs over fastboot and boot it on Rock3A
@ 2023-06-06 14:31 Johannes Zink
  2023-06-06 14:31 ` [DistroKit] [PATCH 1/5] v8a: enable initrd generation Johannes Zink
                   ` (4 more replies)
  0 siblings, 5 replies; 31+ messages in thread
From: Johannes Zink @ 2023-06-06 14:31 UTC (permalink / raw)
  To: distrokit; +Cc: Johannes Zink, patchwork-jzi

This series enables building Android sparse images of kernel, dtb and
initramfs for the Radxa Rock3A, enables mounting corresponding ram-files
as fastboot partitions in the barebox fastboot gadget, and adds support
for booting the image uploaded via fastboot.

This can be useful in situations, where booting a Linux system is
required on such target without touching the nonvolatile storage, e.g.
for debugging purposes.

For uploading kernel, dtb and initramfs use

fastboot flash kernel    platform-v8a/images/kernel-sparse.img
fastboot flash dtb       platform-v8a/images/dtb-rock3a-sparse.img
fastboot flash initramfs platform-v8a/images/initramfs-sparse.img

then for booting either use the barebox command

boot fastboot

or pass the bootcommand over fastboot from the host via

fastboot oem exec boot fastboot

Best regards
Johannes

To: distrokit@pengutronix.de
Cc: patchwork-jzi@pengutronix.de

Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
---
Johannes Zink (5):
      v8a: enable initrd generation
      v8a: kernel: enable initramfs in kernel config
      v8a: images: generate sparse images from rock3a initramfs, kernel and dtb
      v8a: barebox: enable loading kernel, dtb and initrd via fastboot
      v8a: barebox: add a boot target for fastboot loaded image files

 .../barebox-common-defaultenv/boot/fastboot         |  7 +++++++
 .../barebox-common-defaultenv/nv/fastboot.acm       |  1 +
 .../barebox-common-defaultenv/nv/fastboot.bbu       |  1 +
 .../nv/fastboot.partitions                          |  1 +
 .../nv/usbgadget.autostart                          |  1 +
 configs/platform-v8a/config/images/rock3a.config    | 21 +++++++++++++++++++++
 configs/platform-v8a/kernelconfig                   | 16 +++++++++++++---
 configs/platform-v8a/platformconfig                 | 10 +++++++++-
 8 files changed, 54 insertions(+), 4 deletions(-)
---
base-commit: 282b5aff9aecf141de5040f896a9a10081596350
change-id: 20230606-default_enable_fastboot_rock3a-3223c6b01647

Best regards,
-- 
Johannes Zink <j.zink@pengutronix.de>




^ permalink raw reply	[flat|nested] 31+ messages in thread

* [DistroKit] [PATCH 1/5] v8a: enable initrd generation
  2023-06-06 14:31 [DistroKit] [PATCH 0/5] enable uploading kernel, dtb and initramfs over fastboot and boot it on Rock3A Johannes Zink
@ 2023-06-06 14:31 ` Johannes Zink
  2023-06-06 14:37   ` Ahmad Fatoum
  2023-06-06 14:31 ` [DistroKit] [PATCH 2/5] v8a: kernel: enable initramfs in kernel config Johannes Zink
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 31+ messages in thread
From: Johannes Zink @ 2023-06-06 14:31 UTC (permalink / raw)
  To: distrokit; +Cc: Johannes Zink, patchwork-jzi

also generate rootfs as cpio.gz, as this allows loading it as initramfs.

Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
---
 configs/platform-v8a/platformconfig | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/configs/platform-v8a/platformconfig b/configs/platform-v8a/platformconfig
index 4e479660f6b7..4d7dfeae9d66 100644
--- a/configs/platform-v8a/platformconfig
+++ b/configs/platform-v8a/platformconfig
@@ -261,7 +261,15 @@ PTXCONF_IMAGE_KERNEL_INSTALL_EARLY=y
 
 # PTXCONF_IMAGE_RAUC is not set
 PTXCONF_IMAGE_ROCK3A=y
-# PTXCONF_IMAGE_ROOT_CPIO is not set
+PTXCONF_IMAGE_ROOT_CPIO=y
+# PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_MODE_NONE is not set
+PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_MODE_GZ=y
+# PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_MODE_ZSTD is not set
+# PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_MODE_XZ is not set
+# PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_MODE_LZOP is not set
+# PTXCONF_IMAGE_ROOT_CPIO_CUSTOM_COMPRESSION is not set
+PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_SUFFIX=".gz"
+PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_UTIL="gzip"
 PTXCONF_IMAGE_ROOT_EXT=y
 PTXCONF_IMAGE_ROOT_EXT_SIZE="125%"
 # PTXCONF_IMAGE_ROOT_EXT_EXT2 is not set

-- 
2.39.2




^ permalink raw reply	[flat|nested] 31+ messages in thread

* [DistroKit] [PATCH 2/5] v8a: kernel: enable initramfs in kernel config
  2023-06-06 14:31 [DistroKit] [PATCH 0/5] enable uploading kernel, dtb and initramfs over fastboot and boot it on Rock3A Johannes Zink
  2023-06-06 14:31 ` [DistroKit] [PATCH 1/5] v8a: enable initrd generation Johannes Zink
@ 2023-06-06 14:31 ` Johannes Zink
  2023-06-06 14:37   ` Ahmad Fatoum
  2023-06-06 14:31 ` [DistroKit] [PATCH 3/5] v8a: images: generate sparse images from rock3a initramfs, kernel and dtb Johannes Zink
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 31+ messages in thread
From: Johannes Zink @ 2023-06-06 14:31 UTC (permalink / raw)
  To: distrokit; +Cc: Johannes Zink, patchwork-jzi

Enable gzip and zstd compressed initramfs images for all v8a boards.
This allows to boot an initrd passed to the bootloader without touching
the rootfs on a blockdevice.

Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
---
 configs/platform-v8a/kernelconfig | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/configs/platform-v8a/kernelconfig b/configs/platform-v8a/kernelconfig
index 3c0fed78de15..4ebbb1ed7cd7 100644
--- a/configs/platform-v8a/kernelconfig
+++ b/configs/platform-v8a/kernelconfig
@@ -205,7 +205,15 @@ CONFIG_NET_NS=y
 CONFIG_SCHED_AUTOGROUP=y
 # CONFIG_SYSFS_DEPRECATED is not set
 # CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+# CONFIG_RD_BZIP2 is not set
+# CONFIG_RD_LZMA is not set
+# CONFIG_RD_XZ is not set
+# CONFIG_RD_LZO is not set
+# CONFIG_RD_LZ4 is not set
+CONFIG_RD_ZSTD=y
 # CONFIG_BOOT_CONFIG is not set
 # CONFIG_INITRAMFS_PRESERVE_MTIME is not set
 CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
@@ -6163,9 +6171,9 @@ CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_DEFLATE=y
 CONFIG_LZO_COMPRESS=m
 CONFIG_LZO_DECOMPRESS=m
-CONFIG_ZSTD_COMMON=m
+CONFIG_ZSTD_COMMON=y
 CONFIG_ZSTD_COMPRESS=m
-CONFIG_ZSTD_DECOMPRESS=m
+CONFIG_ZSTD_DECOMPRESS=y
 CONFIG_XZ_DEC=y
 CONFIG_XZ_DEC_X86=y
 CONFIG_XZ_DEC_POWERPC=y
@@ -6176,6 +6184,8 @@ CONFIG_XZ_DEC_SPARC=y
 # CONFIG_XZ_DEC_MICROLZMA is not set
 CONFIG_XZ_DEC_BCJ=y
 # CONFIG_XZ_DEC_TEST is not set
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_ZSTD=y
 CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_INTERVAL_TREE=y
 CONFIG_XARRAY_MULTI=y

-- 
2.39.2




^ permalink raw reply	[flat|nested] 31+ messages in thread

* [DistroKit] [PATCH 3/5] v8a: images: generate sparse images from rock3a initramfs, kernel and dtb
  2023-06-06 14:31 [DistroKit] [PATCH 0/5] enable uploading kernel, dtb and initramfs over fastboot and boot it on Rock3A Johannes Zink
  2023-06-06 14:31 ` [DistroKit] [PATCH 1/5] v8a: enable initrd generation Johannes Zink
  2023-06-06 14:31 ` [DistroKit] [PATCH 2/5] v8a: kernel: enable initramfs in kernel config Johannes Zink
@ 2023-06-06 14:31 ` Johannes Zink
  2023-06-06 14:41   ` Ahmad Fatoum
  2023-06-06 14:31 ` [DistroKit] [PATCH 4/5] v8a: barebox: enable loading kernel, dtb and initrd via fastboot Johannes Zink
  2023-06-06 14:31 ` [DistroKit] [PATCH 5/5] v8a: barebox: add a boot target for fastboot loaded image files Johannes Zink
  4 siblings, 1 reply; 31+ messages in thread
From: Johannes Zink @ 2023-06-06 14:31 UTC (permalink / raw)
  To: distrokit; +Cc: Johannes Zink, patchwork-jzi

This allows to load the images to barebox using android fastboot, since
otherwise the sparse header is missing and the image size is not
properly aligned as required by fastboot.

Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
---
 configs/platform-v8a/config/images/rock3a.config | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/configs/platform-v8a/config/images/rock3a.config b/configs/platform-v8a/config/images/rock3a.config
index 522d82cdc9c9..cb0c7c4e575d 100644
--- a/configs/platform-v8a/config/images/rock3a.config
+++ b/configs/platform-v8a/config/images/rock3a.config
@@ -44,3 +44,24 @@ image barebox-rock3a.norimg {
 		image = "barebox-rock3a.img"
 	}
 }
+
+image initramfs-sparse.img {
+	android-sparse {
+		image = "root.cpio.gz"
+		block-size = 4k
+	}
+}
+
+image kernel-sparse.img {
+	android-sparse {
+		image = "linuximage"
+		block-size = 4k
+	}
+}
+
+image dtb-rock3a-sparse.img {
+	android-sparse {
+		image = "rk3568-rock-3a.dtb"
+		block-size = 4k
+	}
+}

-- 
2.39.2




^ permalink raw reply	[flat|nested] 31+ messages in thread

* [DistroKit] [PATCH 4/5] v8a: barebox: enable loading kernel, dtb and initrd via fastboot
  2023-06-06 14:31 [DistroKit] [PATCH 0/5] enable uploading kernel, dtb and initramfs over fastboot and boot it on Rock3A Johannes Zink
                   ` (2 preceding siblings ...)
  2023-06-06 14:31 ` [DistroKit] [PATCH 3/5] v8a: images: generate sparse images from rock3a initramfs, kernel and dtb Johannes Zink
@ 2023-06-06 14:31 ` Johannes Zink
  2023-06-06 14:44   ` Ahmad Fatoum
  2023-06-06 14:31 ` [DistroKit] [PATCH 5/5] v8a: barebox: add a boot target for fastboot loaded image files Johannes Zink
  4 siblings, 1 reply; 31+ messages in thread
From: Johannes Zink @ 2023-06-06 14:31 UTC (permalink / raw)
  To: distrokit; +Cc: Johannes Zink, patchwork-jzi

This allows to load kernel, dtb and initrd as sparse images to
RAM-files.

While at it, also enable the acm gadget, which exposes the barebox shell
as an USB gadget and autostart the usb gadgets.

Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
---
 configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm        | 1 +
 configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu        | 1 +
 configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions | 1 +
 configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart | 1 +
 4 files changed, 4 insertions(+)

diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm
new file mode 100644
index 000000000000..d00491fd7e5b
--- /dev/null
+++ b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm
@@ -0,0 +1 @@
+1
diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu
new file mode 100644
index 000000000000..d00491fd7e5b
--- /dev/null
+++ b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu
@@ -0,0 +1 @@
+1
diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions
new file mode 100644
index 000000000000..a67f90305dd6
--- /dev/null
+++ b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions
@@ -0,0 +1 @@
+/dev/mmc0(sd)o,/dev/mmc1(emmc)o,/tmp/kernel(kernel)c,/tmp/initramfs(initramfs)c,/tmp/oftree(oftree)c
diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart b/configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart
new file mode 100644
index 000000000000..d00491fd7e5b
--- /dev/null
+++ b/configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart
@@ -0,0 +1 @@
+1

-- 
2.39.2




^ permalink raw reply	[flat|nested] 31+ messages in thread

* [DistroKit] [PATCH 5/5] v8a: barebox: add a boot target for fastboot loaded image files
  2023-06-06 14:31 [DistroKit] [PATCH 0/5] enable uploading kernel, dtb and initramfs over fastboot and boot it on Rock3A Johannes Zink
                   ` (3 preceding siblings ...)
  2023-06-06 14:31 ` [DistroKit] [PATCH 4/5] v8a: barebox: enable loading kernel, dtb and initrd via fastboot Johannes Zink
@ 2023-06-06 14:31 ` Johannes Zink
  2023-06-06 14:47   ` Ahmad Fatoum
  4 siblings, 1 reply; 31+ messages in thread
From: Johannes Zink @ 2023-06-06 14:31 UTC (permalink / raw)
  To: distrokit; +Cc: Johannes Zink, patchwork-jzi

This allows to boot a kernel with dtb and initrd entirely from RAM after
loading it via Android Fastboot by simply calling 'boot fastboot'.

Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
---
 configs/platform-v8a/barebox-common-defaultenv/boot/fastboot | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/configs/platform-v8a/barebox-common-defaultenv/boot/fastboot b/configs/platform-v8a/barebox-common-defaultenv/boot/fastboot
new file mode 100755
index 000000000000..a06414d582bf
--- /dev/null
+++ b/configs/platform-v8a/barebox-common-defaultenv/boot/fastboot
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+global.bootm.image=/tmp/kernel
+global.bootm.initrd=/tmp/initramfs
+global.bootm.oftree=/tmp/oftree
+
+global.linux.bootargs.dyn.root="rdinit=/sbin/init root=/dev/ram"

-- 
2.39.2




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 1/5] v8a: enable initrd generation
  2023-06-06 14:31 ` [DistroKit] [PATCH 1/5] v8a: enable initrd generation Johannes Zink
@ 2023-06-06 14:37   ` Ahmad Fatoum
  2023-06-06 14:44     ` Johannes Zink
  0 siblings, 1 reply; 31+ messages in thread
From: Ahmad Fatoum @ 2023-06-06 14:37 UTC (permalink / raw)
  To: Johannes Zink, distrokit; +Cc: patchwork-jzi

On 06.06.23 16:31, Johannes Zink wrote:
> also generate rootfs as cpio.gz, as this allows loading it as initramfs.

You enable both CONFIG_RD_GZIP and CONFIG_RD_ZSTD (which I am fine with),
but you decide here for cpio.gz. Any particular reason?

> 
> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
> ---
>  configs/platform-v8a/platformconfig | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/configs/platform-v8a/platformconfig b/configs/platform-v8a/platformconfig
> index 4e479660f6b7..4d7dfeae9d66 100644
> --- a/configs/platform-v8a/platformconfig
> +++ b/configs/platform-v8a/platformconfig
> @@ -261,7 +261,15 @@ PTXCONF_IMAGE_KERNEL_INSTALL_EARLY=y
>  
>  # PTXCONF_IMAGE_RAUC is not set
>  PTXCONF_IMAGE_ROCK3A=y
> -# PTXCONF_IMAGE_ROOT_CPIO is not set
> +PTXCONF_IMAGE_ROOT_CPIO=y
> +# PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_MODE_NONE is not set
> +PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_MODE_GZ=y
> +# PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_MODE_ZSTD is not set
> +# PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_MODE_XZ is not set
> +# PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_MODE_LZOP is not set
> +# PTXCONF_IMAGE_ROOT_CPIO_CUSTOM_COMPRESSION is not set
> +PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_SUFFIX=".gz"
> +PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_UTIL="gzip"
>  PTXCONF_IMAGE_ROOT_EXT=y
>  PTXCONF_IMAGE_ROOT_EXT_SIZE="125%"
>  # PTXCONF_IMAGE_ROOT_EXT_EXT2 is not set
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 2/5] v8a: kernel: enable initramfs in kernel config
  2023-06-06 14:31 ` [DistroKit] [PATCH 2/5] v8a: kernel: enable initramfs in kernel config Johannes Zink
@ 2023-06-06 14:37   ` Ahmad Fatoum
  0 siblings, 0 replies; 31+ messages in thread
From: Ahmad Fatoum @ 2023-06-06 14:37 UTC (permalink / raw)
  To: Johannes Zink, distrokit; +Cc: patchwork-jzi

On 06.06.23 16:31, Johannes Zink wrote:
> Enable gzip and zstd compressed initramfs images for all v8a boards.
> This allows to boot an initrd passed to the bootloader without touching
> the rootfs on a blockdevice.
> 
> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>

Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de>

> ---
>  configs/platform-v8a/kernelconfig | 16 +++++++++++++---
>  1 file changed, 13 insertions(+), 3 deletions(-)
> 
> diff --git a/configs/platform-v8a/kernelconfig b/configs/platform-v8a/kernelconfig
> index 3c0fed78de15..4ebbb1ed7cd7 100644
> --- a/configs/platform-v8a/kernelconfig
> +++ b/configs/platform-v8a/kernelconfig
> @@ -205,7 +205,15 @@ CONFIG_NET_NS=y
>  CONFIG_SCHED_AUTOGROUP=y
>  # CONFIG_SYSFS_DEPRECATED is not set
>  # CONFIG_RELAY is not set
> -# CONFIG_BLK_DEV_INITRD is not set
> +CONFIG_BLK_DEV_INITRD=y
> +CONFIG_INITRAMFS_SOURCE=""
> +CONFIG_RD_GZIP=y
> +# CONFIG_RD_BZIP2 is not set
> +# CONFIG_RD_LZMA is not set
> +# CONFIG_RD_XZ is not set
> +# CONFIG_RD_LZO is not set
> +# CONFIG_RD_LZ4 is not set
> +CONFIG_RD_ZSTD=y
>  # CONFIG_BOOT_CONFIG is not set
>  # CONFIG_INITRAMFS_PRESERVE_MTIME is not set
>  CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
> @@ -6163,9 +6171,9 @@ CONFIG_ZLIB_INFLATE=y
>  CONFIG_ZLIB_DEFLATE=y
>  CONFIG_LZO_COMPRESS=m
>  CONFIG_LZO_DECOMPRESS=m
> -CONFIG_ZSTD_COMMON=m
> +CONFIG_ZSTD_COMMON=y
>  CONFIG_ZSTD_COMPRESS=m
> -CONFIG_ZSTD_DECOMPRESS=m
> +CONFIG_ZSTD_DECOMPRESS=y
>  CONFIG_XZ_DEC=y
>  CONFIG_XZ_DEC_X86=y
>  CONFIG_XZ_DEC_POWERPC=y
> @@ -6176,6 +6184,8 @@ CONFIG_XZ_DEC_SPARC=y
>  # CONFIG_XZ_DEC_MICROLZMA is not set
>  CONFIG_XZ_DEC_BCJ=y
>  # CONFIG_XZ_DEC_TEST is not set
> +CONFIG_DECOMPRESS_GZIP=y
> +CONFIG_DECOMPRESS_ZSTD=y
>  CONFIG_GENERIC_ALLOCATOR=y
>  CONFIG_INTERVAL_TREE=y
>  CONFIG_XARRAY_MULTI=y
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 3/5] v8a: images: generate sparse images from rock3a initramfs, kernel and dtb
  2023-06-06 14:31 ` [DistroKit] [PATCH 3/5] v8a: images: generate sparse images from rock3a initramfs, kernel and dtb Johannes Zink
@ 2023-06-06 14:41   ` Ahmad Fatoum
  2023-06-06 14:42     ` Ahmad Fatoum
  2023-06-06 14:47     ` Johannes Zink
  0 siblings, 2 replies; 31+ messages in thread
From: Ahmad Fatoum @ 2023-06-06 14:41 UTC (permalink / raw)
  To: Johannes Zink, distrokit; +Cc: patchwork-jzi

On 06.06.23 16:31, Johannes Zink wrote:
> This allows to load the images to barebox using android fastboot, since
> otherwise the sparse header is missing and the image size is not
> properly aligned as required by fastboot.

IME fastboot just complains and transfers the files anyway. In that
case building sparse images just adds complication. Did your fastboot
command fail without this change?

> 
> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
> ---
>  configs/platform-v8a/config/images/rock3a.config | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/configs/platform-v8a/config/images/rock3a.config b/configs/platform-v8a/config/images/rock3a.config
> index 522d82cdc9c9..cb0c7c4e575d 100644
> --- a/configs/platform-v8a/config/images/rock3a.config
> +++ b/configs/platform-v8a/config/images/rock3a.config
> @@ -44,3 +44,24 @@ image barebox-rock3a.norimg {
>  		image = "barebox-rock3a.img"
>  	}
>  }
> +
> +image initramfs-sparse.img {
> +	android-sparse {
> +		image = "root.cpio.gz"
> +		block-size = 4k
> +	}
> +}
> +
> +image kernel-sparse.img {
> +	android-sparse {
> +		image = "linuximage"
> +		block-size = 4k
> +	}
> +}
> +
> +image dtb-rock3a-sparse.img {
> +	android-sparse {
> +		image = "rk3568-rock-3a.dtb"
> +		block-size = 4k
> +	}
> +}
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 3/5] v8a: images: generate sparse images from rock3a initramfs, kernel and dtb
  2023-06-06 14:41   ` Ahmad Fatoum
@ 2023-06-06 14:42     ` Ahmad Fatoum
  2023-06-06 14:49       ` Johannes Zink
  2023-06-06 14:47     ` Johannes Zink
  1 sibling, 1 reply; 31+ messages in thread
From: Ahmad Fatoum @ 2023-06-06 14:42 UTC (permalink / raw)
  To: Johannes Zink, distrokit; +Cc: patchwork-jzi

On 06.06.23 16:41, Ahmad Fatoum wrote:
> On 06.06.23 16:31, Johannes Zink wrote:
>> This allows to load the images to barebox using android fastboot, since
>> otherwise the sparse header is missing and the image size is not
>> properly aligned as required by fastboot.
> 
> IME fastboot just complains and transfers the files anyway. In that
> case building sparse images just adds complication. Did your fastboot
> command fail without this change?
> 
>>
>> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
>> ---
>>  configs/platform-v8a/config/images/rock3a.config | 21 +++++++++++++++++++++
>>  1 file changed, 21 insertions(+)
>>
>> diff --git a/configs/platform-v8a/config/images/rock3a.config b/configs/platform-v8a/config/images/rock3a.config
>> index 522d82cdc9c9..cb0c7c4e575d 100644
>> --- a/configs/platform-v8a/config/images/rock3a.config
>> +++ b/configs/platform-v8a/config/images/rock3a.config
>> @@ -44,3 +44,24 @@ image barebox-rock3a.norimg {
>>  		image = "barebox-rock3a.img"
>>  	}
>>  }
>> +
>> +image initramfs-sparse.img {
>> +	android-sparse {
>> +		image = "root.cpio.gz"
>> +		block-size = 4k
>> +	}
>> +}
>> +
>> +image kernel-sparse.img {
>> +	android-sparse {
>> +		image = "linuximage"
>> +		block-size = 4k
>> +	}
>> +}

Also, these two aren't rock3a specific, so they shouldn't be here
especially not with such generic sounding names.

>> +
>> +image dtb-rock3a-sparse.img {
>> +	android-sparse {
>> +		image = "rk3568-rock-3a.dtb"
>> +		block-size = 4k
>> +	}
>> +}
>>
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 4/5] v8a: barebox: enable loading kernel, dtb and initrd via fastboot
  2023-06-06 14:31 ` [DistroKit] [PATCH 4/5] v8a: barebox: enable loading kernel, dtb and initrd via fastboot Johannes Zink
@ 2023-06-06 14:44   ` Ahmad Fatoum
  2023-06-06 14:54     ` Johannes Zink
  2023-06-06 15:04     ` Jan Lübbe
  0 siblings, 2 replies; 31+ messages in thread
From: Ahmad Fatoum @ 2023-06-06 14:44 UTC (permalink / raw)
  To: Johannes Zink, distrokit; +Cc: patchwork-jzi

On 06.06.23 16:31, Johannes Zink wrote:
> This allows to load kernel, dtb and initrd as sparse images to
> RAM-files.
> 
> While at it, also enable the acm gadget, which exposes the barebox shell
> as an USB gadget and autostart the usb gadgets.
> 
> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
> ---
>  configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm        | 1 +
>  configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu        | 1 +
>  configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions | 1 +
>  configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart | 1 +
>  4 files changed, 4 insertions(+)
> 
> diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm
> new file mode 100644
> index 000000000000..d00491fd7e5b
> --- /dev/null
> +++ b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm
> @@ -0,0 +1 @@
> +1
> diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu
> new file mode 100644
> index 000000000000..d00491fd7e5b
> --- /dev/null
> +++ b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu
> @@ -0,0 +1 @@
> +1
> diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions
> new file mode 100644
> index 000000000000..a67f90305dd6
> --- /dev/null
> +++ b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions
> @@ -0,0 +1 @@
> +/dev/mmc0(sd)o,/dev/mmc1(emmc)o,/tmp/kernel(kernel)c,/tmp/initramfs(initramfs)c,/tmp/oftree(oftree)c

1) Why not export the barebox update handler?
2) Is sd also mmc0 and emmc mmc1 on the i.MX8M boards? Because those use the
   same environment

> diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart b/configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart
> new file mode 100644
> index 000000000000..d00491fd7e5b
> --- /dev/null
> +++ b/configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart
> @@ -0,0 +1 @@
> +1
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 1/5] v8a: enable initrd generation
  2023-06-06 14:37   ` Ahmad Fatoum
@ 2023-06-06 14:44     ` Johannes Zink
  2023-06-06 14:59       ` Jan Lübbe
  0 siblings, 1 reply; 31+ messages in thread
From: Johannes Zink @ 2023-06-06 14:44 UTC (permalink / raw)
  To: Ahmad Fatoum, distrokit; +Cc: patchwork-jzi

Hi Ahmad,

On 6/6/23 16:37, Ahmad Fatoum wrote:
> On 06.06.23 16:31, Johannes Zink wrote:
>> also generate rootfs as cpio.gz, as this allows loading it as initramfs.
> 
> You enable both CONFIG_RD_GZIP and CONFIG_RD_ZSTD (which I am fine with),
> but you decide here for cpio.gz. Any particular reason?

afaik ZSTD support is rather new and I wanted to have maximum flexibility when 
reusing the initramfs, even with older kernels - i.e. being able to mix a 
ptxdist-built initramfs with older kernels. I opted to also support zstd, to 
allow booting future initramfs' on current kernels, should gzip support ever be 
dropped in the future.

However, I think we could probably drop the zstd support, if you are concerned 
about image size.

Johannes

> 
>>
>> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
>> ---
>>   configs/platform-v8a/platformconfig | 10 +++++++++-
>>   1 file changed, 9 insertions(+), 1 deletion(-)
>>
>> diff --git a/configs/platform-v8a/platformconfig b/configs/platform-v8a/platformconfig
>> index 4e479660f6b7..4d7dfeae9d66 100644
>> --- a/configs/platform-v8a/platformconfig
>> +++ b/configs/platform-v8a/platformconfig
>> @@ -261,7 +261,15 @@ PTXCONF_IMAGE_KERNEL_INSTALL_EARLY=y
>>   
>>   # PTXCONF_IMAGE_RAUC is not set
>>   PTXCONF_IMAGE_ROCK3A=y
>> -# PTXCONF_IMAGE_ROOT_CPIO is not set
>> +PTXCONF_IMAGE_ROOT_CPIO=y
>> +# PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_MODE_NONE is not set
>> +PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_MODE_GZ=y
>> +# PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_MODE_ZSTD is not set
>> +# PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_MODE_XZ is not set
>> +# PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_MODE_LZOP is not set
>> +# PTXCONF_IMAGE_ROOT_CPIO_CUSTOM_COMPRESSION is not set
>> +PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_SUFFIX=".gz"
>> +PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_UTIL="gzip"
>>   PTXCONF_IMAGE_ROOT_EXT=y
>>   PTXCONF_IMAGE_ROOT_EXT_SIZE="125%"
>>   # PTXCONF_IMAGE_ROOT_EXT_EXT2 is not set
>>
> 

-- 
Pengutronix e.K.                | Johannes Zink                  |
Steuerwalder Str. 21            | https://www.pengutronix.de/    |
31137 Hildesheim, Germany       | Phone: +49-5121-206917-0       |
Amtsgericht Hildesheim, HRA 2686| Fax:   +49-5121-206917-5555    |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 5/5] v8a: barebox: add a boot target for fastboot loaded image files
  2023-06-06 14:31 ` [DistroKit] [PATCH 5/5] v8a: barebox: add a boot target for fastboot loaded image files Johannes Zink
@ 2023-06-06 14:47   ` Ahmad Fatoum
  2023-06-06 15:07     ` Jan Lübbe
  0 siblings, 1 reply; 31+ messages in thread
From: Ahmad Fatoum @ 2023-06-06 14:47 UTC (permalink / raw)
  To: Johannes Zink, distrokit; +Cc: patchwork-jzi

On 06.06.23 16:31, Johannes Zink wrote:
> This allows to boot a kernel with dtb and initrd entirely from RAM after
> loading it via Android Fastboot by simply calling 'boot fastboot'.
> 
> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
> ---
>  configs/platform-v8a/barebox-common-defaultenv/boot/fastboot | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/configs/platform-v8a/barebox-common-defaultenv/boot/fastboot b/configs/platform-v8a/barebox-common-defaultenv/boot/fastboot
> new file mode 100755
> index 000000000000..a06414d582bf
> --- /dev/null
> +++ b/configs/platform-v8a/barebox-common-defaultenv/boot/fastboot
> @@ -0,0 +1,7 @@
> +#!/bin/sh
> +
> +global.bootm.image=/tmp/kernel
> +global.bootm.initrd=/tmp/initramfs
> +global.bootm.oftree=/tmp/oftree
> +
> +global.linux.bootargs.dyn.root="rdinit=/sbin/init root=/dev/ram"

Isn't rdinit=/sbin/init the default?

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 3/5] v8a: images: generate sparse images from rock3a initramfs, kernel and dtb
  2023-06-06 14:41   ` Ahmad Fatoum
  2023-06-06 14:42     ` Ahmad Fatoum
@ 2023-06-06 14:47     ` Johannes Zink
  2023-06-06 14:51       ` Ahmad Fatoum
  1 sibling, 1 reply; 31+ messages in thread
From: Johannes Zink @ 2023-06-06 14:47 UTC (permalink / raw)
  To: Ahmad Fatoum, distrokit; +Cc: patchwork-jzi

On 6/6/23 16:41, Ahmad Fatoum wrote:
> On 06.06.23 16:31, Johannes Zink wrote:
>> This allows to load the images to barebox using android fastboot, since
>> otherwise the sparse header is missing and the image size is not
>> properly aligned as required by fastboot.
> 
> IME fastboot just complains and transfers the files anyway. In that
> case building sparse images just adds complication. Did your fastboot
> command fail without this change?
> 

Uploading non-sparse images failed with an error

Invalid sparse file format at header magic 

error: write_sparse_skip_chunk: don't care size 45251584 is not a multiple of 
the block size 4096

at the host tool, which is why I decided to use sparse images. It saves upload 
time anyway, at least for the initramfs, so it's a good idea to use sparse 
images, anyway.

Johannes


>>
>> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
>> ---
>>   configs/platform-v8a/config/images/rock3a.config | 21 +++++++++++++++++++++
>>   1 file changed, 21 insertions(+)
>>
>> diff --git a/configs/platform-v8a/config/images/rock3a.config b/configs/platform-v8a/config/images/rock3a.config
>> index 522d82cdc9c9..cb0c7c4e575d 100644
>> --- a/configs/platform-v8a/config/images/rock3a.config
>> +++ b/configs/platform-v8a/config/images/rock3a.config
>> @@ -44,3 +44,24 @@ image barebox-rock3a.norimg {
>>   		image = "barebox-rock3a.img"
>>   	}
>>   }
>> +
>> +image initramfs-sparse.img {
>> +	android-sparse {
>> +		image = "root.cpio.gz"
>> +		block-size = 4k
>> +	}
>> +}
>> +
>> +image kernel-sparse.img {
>> +	android-sparse {
>> +		image = "linuximage"
>> +		block-size = 4k
>> +	}
>> +}
>> +
>> +image dtb-rock3a-sparse.img {
>> +	android-sparse {
>> +		image = "rk3568-rock-3a.dtb"
>> +		block-size = 4k
>> +	}
>> +}
>>
> 

-- 
Pengutronix e.K.                | Johannes Zink                  |
Steuerwalder Str. 21            | https://www.pengutronix.de/    |
31137 Hildesheim, Germany       | Phone: +49-5121-206917-0       |
Amtsgericht Hildesheim, HRA 2686| Fax:   +49-5121-206917-5555    |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 3/5] v8a: images: generate sparse images from rock3a initramfs, kernel and dtb
  2023-06-06 14:42     ` Ahmad Fatoum
@ 2023-06-06 14:49       ` Johannes Zink
  2023-06-06 14:54         ` Ahmad Fatoum
  0 siblings, 1 reply; 31+ messages in thread
From: Johannes Zink @ 2023-06-06 14:49 UTC (permalink / raw)
  To: Ahmad Fatoum, distrokit; +Cc: patchwork-jzi

On 6/6/23 16:42, Ahmad Fatoum wrote:
> On 06.06.23 16:41, Ahmad Fatoum wrote:
>> On 06.06.23 16:31, Johannes Zink wrote:
>>> This allows to load the images to barebox using android fastboot, since
>>> otherwise the sparse header is missing and the image size is not
>>> properly aligned as required by fastboot.
>>
>> IME fastboot just complains and transfers the files anyway. In that
>> case building sparse images just adds complication. Did your fastboot
>> command fail without this change?
>>
>>>
>>> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
>>> ---
>>>   configs/platform-v8a/config/images/rock3a.config | 21 +++++++++++++++++++++
>>>   1 file changed, 21 insertions(+)
>>>
>>> diff --git a/configs/platform-v8a/config/images/rock3a.config b/configs/platform-v8a/config/images/rock3a.config
>>> index 522d82cdc9c9..cb0c7c4e575d 100644
>>> --- a/configs/platform-v8a/config/images/rock3a.config
>>> +++ b/configs/platform-v8a/config/images/rock3a.config
>>> @@ -44,3 +44,24 @@ image barebox-rock3a.norimg {
>>>   		image = "barebox-rock3a.img"
>>>   	}
>>>   }
>>> +
>>> +image initramfs-sparse.img {
>>> +	android-sparse {
>>> +		image = "root.cpio.gz"
>>> +		block-size = 4k
>>> +	}
>>> +}
>>> +
>>> +image kernel-sparse.img {
>>> +	android-sparse {
>>> +		image = "linuximage"
>>> +		block-size = 4k
>>> +	}
>>> +}
> 
> Also, these two aren't rock3a specific, so they shouldn't be here
> especially not with such generic sounding names.

ack, gonna move them to a separate config for v2 of this series. Though, I 
think they should keep their generic names, as they can be used across all 
other v8a targets.

Johannes

> 
>>> +
>>> +image dtb-rock3a-sparse.img {
>>> +	android-sparse {
>>> +		image = "rk3568-rock-3a.dtb"
>>> +		block-size = 4k
>>> +	}
>>> +}
>>>
>>
> 

-- 
Pengutronix e.K.                | Johannes Zink                  |
Steuerwalder Str. 21            | https://www.pengutronix.de/    |
31137 Hildesheim, Germany       | Phone: +49-5121-206917-0       |
Amtsgericht Hildesheim, HRA 2686| Fax:   +49-5121-206917-5555    |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 3/5] v8a: images: generate sparse images from rock3a initramfs, kernel and dtb
  2023-06-06 14:47     ` Johannes Zink
@ 2023-06-06 14:51       ` Ahmad Fatoum
  2023-06-06 15:04         ` Johannes Zink
  0 siblings, 1 reply; 31+ messages in thread
From: Ahmad Fatoum @ 2023-06-06 14:51 UTC (permalink / raw)
  To: Johannes Zink, distrokit; +Cc: patchwork-jzi

Hello Johannes,

On 06.06.23 16:47, Johannes Zink wrote:
> On 6/6/23 16:41, Ahmad Fatoum wrote:
>> On 06.06.23 16:31, Johannes Zink wrote:
>>> This allows to load the images to barebox using android fastboot, since
>>> otherwise the sparse header is missing and the image size is not
>>> properly aligned as required by fastboot.
>>
>> IME fastboot just complains and transfers the files anyway. In that
>> case building sparse images just adds complication. Did your fastboot
>> command fail without this change?
>>
> 
> Uploading non-sparse images failed with an error
> 
> Invalid sparse file format at header magic
> error: write_sparse_skip_chunk: don't care size 45251584 is not a multiple of the block size 4096
> 
> at the host tool, which is why I decided to use sparse images.

Can you describe how to reproduce this with a normal DistroKit build?

> It saves upload time anyway, at least for the initramfs, so it's a good idea to use sparse images, anyway.

Sparse is a compression algorithm, albeit a very primitive one. Your kernel and
initrd should already be compressed, so if you have savings from compressing
them again with sparse, there's something wrong IMO.

The device tree is small enough that it shouldn't matter.

Cheers,
Ahmad


> 
> Johannes
> 
> 
>>>
>>> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
>>> ---
>>>   configs/platform-v8a/config/images/rock3a.config | 21 +++++++++++++++++++++
>>>   1 file changed, 21 insertions(+)
>>>
>>> diff --git a/configs/platform-v8a/config/images/rock3a.config b/configs/platform-v8a/config/images/rock3a.config
>>> index 522d82cdc9c9..cb0c7c4e575d 100644
>>> --- a/configs/platform-v8a/config/images/rock3a.config
>>> +++ b/configs/platform-v8a/config/images/rock3a.config
>>> @@ -44,3 +44,24 @@ image barebox-rock3a.norimg {
>>>           image = "barebox-rock3a.img"
>>>       }
>>>   }
>>> +
>>> +image initramfs-sparse.img {
>>> +    android-sparse {
>>> +        image = "root.cpio.gz"
>>> +        block-size = 4k
>>> +    }
>>> +}
>>> +
>>> +image kernel-sparse.img {
>>> +    android-sparse {
>>> +        image = "linuximage"
>>> +        block-size = 4k
>>> +    }
>>> +}
>>> +
>>> +image dtb-rock3a-sparse.img {
>>> +    android-sparse {
>>> +        image = "rk3568-rock-3a.dtb"
>>> +        block-size = 4k
>>> +    }
>>> +}
>>>
>>
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 3/5] v8a: images: generate sparse images from rock3a initramfs, kernel and dtb
  2023-06-06 14:49       ` Johannes Zink
@ 2023-06-06 14:54         ` Ahmad Fatoum
  0 siblings, 0 replies; 31+ messages in thread
From: Ahmad Fatoum @ 2023-06-06 14:54 UTC (permalink / raw)
  To: Johannes Zink, distrokit; +Cc: patchwork-jzi

On 06.06.23 16:49, Johannes Zink wrote:
> On 6/6/23 16:42, Ahmad Fatoum wrote:
>> On 06.06.23 16:41, Ahmad Fatoum wrote:
>>> On 06.06.23 16:31, Johannes Zink wrote:
>>>> This allows to load the images to barebox using android fastboot, since
>>>> otherwise the sparse header is missing and the image size is not
>>>> properly aligned as required by fastboot.
>>>
>>> IME fastboot just complains and transfers the files anyway. In that
>>> case building sparse images just adds complication. Did your fastboot
>>> command fail without this change?
>>>
>>>>
>>>> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
>>>> ---
>>>>   configs/platform-v8a/config/images/rock3a.config | 21 +++++++++++++++++++++
>>>>   1 file changed, 21 insertions(+)
>>>>
>>>> diff --git a/configs/platform-v8a/config/images/rock3a.config b/configs/platform-v8a/config/images/rock3a.config
>>>> index 522d82cdc9c9..cb0c7c4e575d 100644
>>>> --- a/configs/platform-v8a/config/images/rock3a.config
>>>> +++ b/configs/platform-v8a/config/images/rock3a.config
>>>> @@ -44,3 +44,24 @@ image barebox-rock3a.norimg {
>>>>           image = "barebox-rock3a.img"
>>>>       }
>>>>   }
>>>> +
>>>> +image initramfs-sparse.img {
>>>> +    android-sparse {
>>>> +        image = "root.cpio.gz"
>>>> +        block-size = 4k
>>>> +    }
>>>> +}
>>>> +
>>>> +image kernel-sparse.img {
>>>> +    android-sparse {
>>>> +        image = "linuximage"
>>>> +        block-size = 4k
>>>> +    }
>>>> +}
>>
>> Also, these two aren't rock3a specific, so they shouldn't be here
>> especially not with such generic sounding names.
> 
> ack, gonna move them to a separate config for v2 of this series. Though, I think they should keep their generic names, as they can be used across all other v8a targets.

Their name should be aligned with the file they are in unless
they are removed.

> 
> Johannes
> 
>>
>>>> +
>>>> +image dtb-rock3a-sparse.img {
>>>> +    android-sparse {
>>>> +        image = "rk3568-rock-3a.dtb"
>>>> +        block-size = 4k
>>>> +    }
>>>> +}
>>>>
>>>
>>
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 4/5] v8a: barebox: enable loading kernel, dtb and initrd via fastboot
  2023-06-06 14:44   ` Ahmad Fatoum
@ 2023-06-06 14:54     ` Johannes Zink
  2023-06-08  7:36       ` Ahmad Fatoum
  2023-06-06 15:04     ` Jan Lübbe
  1 sibling, 1 reply; 31+ messages in thread
From: Johannes Zink @ 2023-06-06 14:54 UTC (permalink / raw)
  To: Ahmad Fatoum, distrokit; +Cc: patchwork-jzi

Hi Ahmad,

On 6/6/23 16:44, Ahmad Fatoum wrote:
> On 06.06.23 16:31, Johannes Zink wrote:
>> This allows to load kernel, dtb and initrd as sparse images to
>> RAM-files.
>>
>> While at it, also enable the acm gadget, which exposes the barebox shell
>> as an USB gadget and autostart the usb gadgets.
>>
>> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
>> ---
>>   configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm        | 1 +
>>   configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu        | 1 +
>>   configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions | 1 +
>>   configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart | 1 +
>>   4 files changed, 4 insertions(+)
>>
>> diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm
>> new file mode 100644
>> index 000000000000..d00491fd7e5b
>> --- /dev/null
>> +++ b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm
>> @@ -0,0 +1 @@
>> +1
>> diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu
>> new file mode 100644
>> index 000000000000..d00491fd7e5b
>> --- /dev/null
>> +++ b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu
>> @@ -0,0 +1 @@
>> +1
>> diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions
>> new file mode 100644
>> index 000000000000..a67f90305dd6
>> --- /dev/null
>> +++ b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions
>> @@ -0,0 +1 @@
>> +/dev/mmc0(sd)o,/dev/mmc1(emmc)o,/tmp/kernel(kernel)c,/tmp/initramfs(initramfs)c,/tmp/oftree(oftree)c
> 
> 1) Why not export the barebox update handler?

simple: I forgot to add it... will add it in v2.

> 2) Is sd also mmc0 and emmc mmc1 on the i.MX8M boards? Because those use the
>     same environment

not in general, no. Maybe use 
/dev/mmc0(mmc0)o,/dev/mmc1(mmc1)o,/dev/mmc2(mmc2)o instead?

Johannes

> 
>> diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart b/configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart
>> new file mode 100644
>> index 000000000000..d00491fd7e5b
>> --- /dev/null
>> +++ b/configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart
>> @@ -0,0 +1 @@
>> +1
>>
> 

-- 
Pengutronix e.K.                | Johannes Zink                  |
Steuerwalder Str. 21            | https://www.pengutronix.de/    |
31137 Hildesheim, Germany       | Phone: +49-5121-206917-0       |
Amtsgericht Hildesheim, HRA 2686| Fax:   +49-5121-206917-5555    |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 1/5] v8a: enable initrd generation
  2023-06-06 14:44     ` Johannes Zink
@ 2023-06-06 14:59       ` Jan Lübbe
  2023-06-06 15:02         ` Johannes Zink
  0 siblings, 1 reply; 31+ messages in thread
From: Jan Lübbe @ 2023-06-06 14:59 UTC (permalink / raw)
  To: Johannes Zink, Ahmad Fatoum, distrokit; +Cc: patchwork-jzi

On Tue, 2023-06-06 at 16:44 +0200, Johannes Zink wrote:
> Hi Ahmad,
> 
> On 6/6/23 16:37, Ahmad Fatoum wrote:
> > On 06.06.23 16:31, Johannes Zink wrote:
> > > also generate rootfs as cpio.gz, as this allows loading it as initramfs.
> > 
> > You enable both CONFIG_RD_GZIP and CONFIG_RD_ZSTD (which I am fine with),
> > but you decide here for cpio.gz. Any particular reason?
> 
> afaik ZSTD support is rather new and I wanted to have maximum flexibility when 
> reusing the initramfs, even with older kernels - i.e. being able to mix a 
> ptxdist-built initramfs with older kernels. I opted to also support zstd, to 
> allow booting future initramfs' on current kernels, should gzip support ever be 
> dropped in the future.
> 
> However, I think we could probably drop the zstd support, if you are concerned 
> about image size.

CONFIG_KERNEL_ZSTD is supported since 5.9:
https://cateee.net/lkddb/web-lkddb/KERNEL_ZSTD.html

In cases where an old kernel should be booted with this new initramfs, you can
just recompress it with gz on the host (which is trivial compared to building it
in the first place).

I'd suggest just going with zstd only.

Jan
-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 1/5] v8a: enable initrd generation
  2023-06-06 14:59       ` Jan Lübbe
@ 2023-06-06 15:02         ` Johannes Zink
  0 siblings, 0 replies; 31+ messages in thread
From: Johannes Zink @ 2023-06-06 15:02 UTC (permalink / raw)
  To: Jan Lübbe, Ahmad Fatoum, distrokit; +Cc: patchwork-jzi

Hi Jan,

On 6/6/23 16:59, Jan Lübbe wrote:
> On Tue, 2023-06-06 at 16:44 +0200, Johannes Zink wrote:
>> Hi Ahmad,
>>
>> On 6/6/23 16:37, Ahmad Fatoum wrote:
>>> On 06.06.23 16:31, Johannes Zink wrote:
>>>> also generate rootfs as cpio.gz, as this allows loading it as initramfs.
>>>
>>> You enable both CONFIG_RD_GZIP and CONFIG_RD_ZSTD (which I am fine with),
>>> but you decide here for cpio.gz. Any particular reason?
>>
>> afaik ZSTD support is rather new and I wanted to have maximum flexibility when
>> reusing the initramfs, even with older kernels - i.e. being able to mix a
>> ptxdist-built initramfs with older kernels. I opted to also support zstd, to
>> allow booting future initramfs' on current kernels, should gzip support ever be
>> dropped in the future.
>>
>> However, I think we could probably drop the zstd support, if you are concerned
>> about image size.
> 
> CONFIG_KERNEL_ZSTD is supported since 5.9:
> https://cateee.net/lkddb/web-lkddb/KERNEL_ZSTD.html
> 
> In cases where an old kernel should be booted with this new initramfs, you can
> just recompress it with gz on the host (which is trivial compared to building it
> in the first place).
> 
> I'd suggest just going with zstd only.
> 
> Jan

ack, gonna change support to zstd and drop gz in v2 of this series.

Johannes

-- 
Pengutronix e.K.                | Johannes Zink                  |
Steuerwalder Str. 21            | https://www.pengutronix.de/    |
31137 Hildesheim, Germany       | Phone: +49-5121-206917-0       |
Amtsgericht Hildesheim, HRA 2686| Fax:   +49-5121-206917-5555    |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 3/5] v8a: images: generate sparse images from rock3a initramfs, kernel and dtb
  2023-06-06 14:51       ` Ahmad Fatoum
@ 2023-06-06 15:04         ` Johannes Zink
  2023-06-06 15:26           ` Ahmad Fatoum
  0 siblings, 1 reply; 31+ messages in thread
From: Johannes Zink @ 2023-06-06 15:04 UTC (permalink / raw)
  To: Ahmad Fatoum, distrokit; +Cc: patchwork-jzi

On 6/6/23 16:51, Ahmad Fatoum wrote:
> Hello Johannes,
> 
> On 06.06.23 16:47, Johannes Zink wrote:
>> On 6/6/23 16:41, Ahmad Fatoum wrote:
>>> On 06.06.23 16:31, Johannes Zink wrote:
>>>> This allows to load the images to barebox using android fastboot, since
>>>> otherwise the sparse header is missing and the image size is not
>>>> properly aligned as required by fastboot.
>>>
>>> IME fastboot just complains and transfers the files anyway. In that
>>> case building sparse images just adds complication. Did your fastboot
>>> command fail without this change?
>>>
>>
>> Uploading non-sparse images failed with an error
>>
>> Invalid sparse file format at header magic
>> error: write_sparse_skip_chunk: don't care size 45251584 is not a multiple of the block size 4096
>>
>> at the host tool, which is why I decided to use sparse images.
> 
> Can you describe how to reproduce this with a normal DistroKit build?

sure, just apply this series (or at least patch 1/5 for initrd generation), run 
ptxdist images and expose a fastboot partition on the DUT by calling

usbgadget -A /tmp/initramfs(initramfs)c

then use fastboot to upload the cpio.gz from your distrokit build dir

fastboot flash initramfs platform-v8a/images/initramfs-sparse.img

Johannes

> 
>> It saves upload time anyway, at least for the initramfs, so it's a good idea to use sparse images, anyway.
> 
> Sparse is a compression algorithm, albeit a very primitive one. Your kernel and
> initrd should already be compressed, so if you have savings from compressing
> them again with sparse, there's something wrong IMO.
> 
> The device tree is small enough that it shouldn't matter.
> 
> Cheers,
> Ahmad
> 
> 
>>
>> Johannes
>>
>>
>>>>
>>>> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
>>>> ---
>>>>    configs/platform-v8a/config/images/rock3a.config | 21 +++++++++++++++++++++
>>>>    1 file changed, 21 insertions(+)
>>>>
>>>> diff --git a/configs/platform-v8a/config/images/rock3a.config b/configs/platform-v8a/config/images/rock3a.config
>>>> index 522d82cdc9c9..cb0c7c4e575d 100644
>>>> --- a/configs/platform-v8a/config/images/rock3a.config
>>>> +++ b/configs/platform-v8a/config/images/rock3a.config
>>>> @@ -44,3 +44,24 @@ image barebox-rock3a.norimg {
>>>>            image = "barebox-rock3a.img"
>>>>        }
>>>>    }
>>>> +
>>>> +image initramfs-sparse.img {
>>>> +    android-sparse {
>>>> +        image = "root.cpio.gz"
>>>> +        block-size = 4k
>>>> +    }
>>>> +}
>>>> +
>>>> +image kernel-sparse.img {
>>>> +    android-sparse {
>>>> +        image = "linuximage"
>>>> +        block-size = 4k
>>>> +    }
>>>> +}
>>>> +
>>>> +image dtb-rock3a-sparse.img {
>>>> +    android-sparse {
>>>> +        image = "rk3568-rock-3a.dtb"
>>>> +        block-size = 4k
>>>> +    }
>>>> +}
>>>>
>>>
>>
> 

-- 
Pengutronix e.K.                | Johannes Zink                  |
Steuerwalder Str. 21            | https://www.pengutronix.de/    |
31137 Hildesheim, Germany       | Phone: +49-5121-206917-0       |
Amtsgericht Hildesheim, HRA 2686| Fax:   +49-5121-206917-5555    |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 4/5] v8a: barebox: enable loading kernel, dtb and initrd via fastboot
  2023-06-06 14:44   ` Ahmad Fatoum
  2023-06-06 14:54     ` Johannes Zink
@ 2023-06-06 15:04     ` Jan Lübbe
  2023-06-06 15:14       ` Johannes Zink
  1 sibling, 1 reply; 31+ messages in thread
From: Jan Lübbe @ 2023-06-06 15:04 UTC (permalink / raw)
  To: Ahmad Fatoum, Johannes Zink, distrokit; +Cc: patchwork-jzi

On Tue, 2023-06-06 at 16:44 +0200, Ahmad Fatoum wrote:
> > +/dev/mmc0(sd)o,/dev/mmc1(emmc)o,/tmp/kernel(kernel)c,/tmp/initramfs(initramfs)c,/tmp/oftree(oftree)c

Perhaps use ram-kernel, ram-initramfs and ram-oftree to make it obvious that
these are not written to persistent storage?

Jan
-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 5/5] v8a: barebox: add a boot target for fastboot loaded image files
  2023-06-06 14:47   ` Ahmad Fatoum
@ 2023-06-06 15:07     ` Jan Lübbe
  2023-06-06 15:13       ` Johannes Zink
  2023-06-09  9:53       ` Johannes Zink
  0 siblings, 2 replies; 31+ messages in thread
From: Jan Lübbe @ 2023-06-06 15:07 UTC (permalink / raw)
  To: Ahmad Fatoum, Johannes Zink, distrokit; +Cc: patchwork-jzi

On Tue, 2023-06-06 at 16:47 +0200, Ahmad Fatoum wrote:
> On 06.06.23 16:31, Johannes Zink wrote:
> > This allows to boot a kernel with dtb and initrd entirely from RAM after
> > loading it via Android Fastboot by simply calling 'boot fastboot'.
> > 
> > Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
> > ---
> >  configs/platform-v8a/barebox-common-defaultenv/boot/fastboot | 7 +++++++
> >  1 file changed, 7 insertions(+)
> > 
> > diff --git a/configs/platform-v8a/barebox-common-defaultenv/boot/fastboot b/configs/platform-v8a/barebox-common-defaultenv/boot/fastboot
> > new file mode 100755
> > index 000000000000..a06414d582bf
> > --- /dev/null
> > +++ b/configs/platform-v8a/barebox-common-defaultenv/boot/fastboot
> > @@ -0,0 +1,7 @@
> > +#!/bin/sh
> > +
> > +global.bootm.image=/tmp/kernel
> > +global.bootm.initrd=/tmp/initramfs
> > +global.bootm.oftree=/tmp/oftree
> > +
> > +global.linux.bootargs.dyn.root="rdinit=/sbin/init root=/dev/ram"
> 
> Isn't rdinit=/sbin/init the default?

rd=/init is the defaut. root=/dev/ram is not needed, AFAIR, it's for initrd, not
initramfs.

Also, we could add a symlink /init -> /sbin/init, which would simplify using
this initramfs with a bootloaders not passing the correct cmdline.

Jan
-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 5/5] v8a: barebox: add a boot target for fastboot loaded image files
  2023-06-06 15:07     ` Jan Lübbe
@ 2023-06-06 15:13       ` Johannes Zink
  2023-06-09  9:53       ` Johannes Zink
  1 sibling, 0 replies; 31+ messages in thread
From: Johannes Zink @ 2023-06-06 15:13 UTC (permalink / raw)
  To: Jan Lübbe, Ahmad Fatoum, distrokit; +Cc: patchwork-jzi

Hi Jan,

On 6/6/23 17:07, Jan Lübbe wrote:
> On Tue, 2023-06-06 at 16:47 +0200, Ahmad Fatoum wrote:
>> On 06.06.23 16:31, Johannes Zink wrote:
>>> This allows to boot a kernel with dtb and initrd entirely from RAM after
>>> loading it via Android Fastboot by simply calling 'boot fastboot'.
>>>
>>> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
>>> ---
>>>   configs/platform-v8a/barebox-common-defaultenv/boot/fastboot | 7 +++++++
>>>   1 file changed, 7 insertions(+)
>>>
>>> diff --git a/configs/platform-v8a/barebox-common-defaultenv/boot/fastboot b/configs/platform-v8a/barebox-common-defaultenv/boot/fastboot
>>> new file mode 100755
>>> index 000000000000..a06414d582bf
>>> --- /dev/null
>>> +++ b/configs/platform-v8a/barebox-common-defaultenv/boot/fastboot
>>> @@ -0,0 +1,7 @@
>>> +#!/bin/sh
>>> +
>>> +global.bootm.image=/tmp/kernel
>>> +global.bootm.initrd=/tmp/initramfs
>>> +global.bootm.oftree=/tmp/oftree
>>> +
>>> +global.linux.bootargs.dyn.root="rdinit=/sbin/init root=/dev/ram"
>>
>> Isn't rdinit=/sbin/init the default?
> 
> rd=/init is the defaut. root=/dev/ram is not needed, AFAIR, it's for initrd, not
> initramfs.

actually root=/dev/ram is needed, I found out the hard way, if it is missing 
the kernel complains it cannot mount a rootfs and will panic (though there 
might be a kernel config option to avoid this, I have not looked _too_ deep 
into it). Also, it is slightly different for v7a, where root=/dev/ram0 needs to 
be set instead of root=/dev/ram, so if there is a way to avoid this, I'd be 
happy to generalize things...

Johannes

> 
> Also, we could add a symlink /init -> /sbin/init, which would simplify using
> this initramfs with a bootloaders not passing the correct cmdline.
> 
> Jan

-- 
Pengutronix e.K.                | Johannes Zink                  |
Steuerwalder Str. 21            | https://www.pengutronix.de/    |
31137 Hildesheim, Germany       | Phone: +49-5121-206917-0       |
Amtsgericht Hildesheim, HRA 2686| Fax:   +49-5121-206917-5555    |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 4/5] v8a: barebox: enable loading kernel, dtb and initrd via fastboot
  2023-06-06 15:04     ` Jan Lübbe
@ 2023-06-06 15:14       ` Johannes Zink
  2023-06-06 15:16         ` Jan Lübbe
  0 siblings, 1 reply; 31+ messages in thread
From: Johannes Zink @ 2023-06-06 15:14 UTC (permalink / raw)
  To: Jan Lübbe, Ahmad Fatoum, distrokit; +Cc: patchwork-jzi

Hi Jan,

On 6/6/23 17:04, Jan Lübbe wrote:
> On Tue, 2023-06-06 at 16:44 +0200, Ahmad Fatoum wrote:
>>> +/dev/mmc0(sd)o,/dev/mmc1(emmc)o,/tmp/kernel(kernel)c,/tmp/initramfs(initramfs)c,/tmp/oftree(oftree)c
> 
> Perhaps use ram-kernel, ram-initramfs and ram-oftree to make it obvious that
> these are not written to persistent storage?
> 
> Jan

sounds sensibel to me, gonna add it in v2. Maybe I should change the boot name 
target as well, e.g. to fastboot-ram instead of fastboot?

Johannes

-- 
Pengutronix e.K.                | Johannes Zink                  |
Steuerwalder Str. 21            | https://www.pengutronix.de/    |
31137 Hildesheim, Germany       | Phone: +49-5121-206917-0       |
Amtsgericht Hildesheim, HRA 2686| Fax:   +49-5121-206917-5555    |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 4/5] v8a: barebox: enable loading kernel, dtb and initrd via fastboot
  2023-06-06 15:14       ` Johannes Zink
@ 2023-06-06 15:16         ` Jan Lübbe
  0 siblings, 0 replies; 31+ messages in thread
From: Jan Lübbe @ 2023-06-06 15:16 UTC (permalink / raw)
  To: Johannes Zink, Ahmad Fatoum, distrokit; +Cc: patchwork-jzi

On Tue, 2023-06-06 at 17:14 +0200, Johannes Zink wrote:
> Hi Jan,
> 
> On 6/6/23 17:04, Jan Lübbe wrote:
> > On Tue, 2023-06-06 at 16:44 +0200, Ahmad Fatoum wrote:
> > > > +/dev/mmc0(sd)o,/dev/mmc1(emmc)o,/tmp/kernel(kernel)c,/tmp/initramfs(initramfs)c,/tmp/oftree(oftree)c
> > 
> > Perhaps use ram-kernel, ram-initramfs and ram-oftree to make it obvious that
> > these are not written to persistent storage?
> > 
> > Jan
> 
> sounds sensibel to me, gonna add it in v2. Maybe I should change the boot name 
> target as well, e.g. to fastboot-ram instead of fastboot?

Sounds good.

Jan

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 3/5] v8a: images: generate sparse images from rock3a initramfs, kernel and dtb
  2023-06-06 15:04         ` Johannes Zink
@ 2023-06-06 15:26           ` Ahmad Fatoum
  2023-06-08  7:28             ` Ahmad Fatoum
  0 siblings, 1 reply; 31+ messages in thread
From: Ahmad Fatoum @ 2023-06-06 15:26 UTC (permalink / raw)
  To: Johannes Zink, distrokit; +Cc: patchwork-jzi

On 06.06.23 17:04, Johannes Zink wrote:
> On 6/6/23 16:51, Ahmad Fatoum wrote:
>> Hello Johannes,
>>
>> On 06.06.23 16:47, Johannes Zink wrote:
>>> On 6/6/23 16:41, Ahmad Fatoum wrote:
>>>> On 06.06.23 16:31, Johannes Zink wrote:
>>>>> This allows to load the images to barebox using android fastboot, since
>>>>> otherwise the sparse header is missing and the image size is not
>>>>> properly aligned as required by fastboot.
>>>>
>>>> IME fastboot just complains and transfers the files anyway. In that
>>>> case building sparse images just adds complication. Did your fastboot
>>>> command fail without this change?
>>>>
>>>
>>> Uploading non-sparse images failed with an error
>>>
>>> Invalid sparse file format at header magic
>>> error: write_sparse_skip_chunk: don't care size 45251584 is not a multiple of the block size 4096
>>>
>>> at the host tool, which is why I decided to use sparse images.
>>
>> Can you describe how to reproduce this with a normal DistroKit build?
> 
> sure, just apply this series (or at least patch 1/5 for initrd generation), run ptxdist images and expose a fastboot partition on the DUT by calling
> 
> usbgadget -A /tmp/initramfs(initramfs)c
> 
> then use fastboot to upload the cpio.gz from your distrokit build dir
> 
> fastboot flash initramfs platform-v8a/images/initramfs-sparse.img

I can reproduce this with fastboot version 28.0.2-debian.
It wasn't always like that. I assume -S 0 wasn't always the
default, but I haven't checked the code. I think it's worth a bug
report.

>>> It saves upload time anyway, at least for the initramfs, so it's a good idea to use sparse images, anyway.
>>
>> Sparse is a compression algorithm, albeit a very primitive one. Your kernel and
>> initrd should already be compressed, so if you have savings from compressing
>> them again with sparse, there's something wrong IMO.
>>
>> The device tree is small enough that it shouldn't matter.

As mentioned, I don't think double compression is useful.
On our side, we can likely just use -S 1 to restore the old behavior.

Cheers,
Ahmad

>>
>> Cheers,
>> Ahmad
>>
>>
>>>
>>> Johannes
>>>
>>>
>>>>>
>>>>> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
>>>>> ---
>>>>>    configs/platform-v8a/config/images/rock3a.config | 21 +++++++++++++++++++++
>>>>>    1 file changed, 21 insertions(+)
>>>>>
>>>>> diff --git a/configs/platform-v8a/config/images/rock3a.config b/configs/platform-v8a/config/images/rock3a.config
>>>>> index 522d82cdc9c9..cb0c7c4e575d 100644
>>>>> --- a/configs/platform-v8a/config/images/rock3a.config
>>>>> +++ b/configs/platform-v8a/config/images/rock3a.config
>>>>> @@ -44,3 +44,24 @@ image barebox-rock3a.norimg {
>>>>>            image = "barebox-rock3a.img"
>>>>>        }
>>>>>    }
>>>>> +
>>>>> +image initramfs-sparse.img {
>>>>> +    android-sparse {
>>>>> +        image = "root.cpio.gz"
>>>>> +        block-size = 4k
>>>>> +    }
>>>>> +}
>>>>> +
>>>>> +image kernel-sparse.img {
>>>>> +    android-sparse {
>>>>> +        image = "linuximage"
>>>>> +        block-size = 4k
>>>>> +    }
>>>>> +}
>>>>> +
>>>>> +image dtb-rock3a-sparse.img {
>>>>> +    android-sparse {
>>>>> +        image = "rk3568-rock-3a.dtb"
>>>>> +        block-size = 4k
>>>>> +    }
>>>>> +}
>>>>>
>>>>
>>>
>>
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 3/5] v8a: images: generate sparse images from rock3a initramfs, kernel and dtb
  2023-06-06 15:26           ` Ahmad Fatoum
@ 2023-06-08  7:28             ` Ahmad Fatoum
  0 siblings, 0 replies; 31+ messages in thread
From: Ahmad Fatoum @ 2023-06-08  7:28 UTC (permalink / raw)
  To: Johannes Zink, distrokit; +Cc: patchwork-jzi

On 06.06.23 17:26, Ahmad Fatoum wrote:
> On 06.06.23 17:04, Johannes Zink wrote:
>> On 6/6/23 16:51, Ahmad Fatoum wrote:
>>> On 06.06.23 16:47, Johannes Zink wrote:
>>> Can you describe how to reproduce this with a normal DistroKit build?
>>
>> sure, just apply this series (or at least patch 1/5 for initrd generation), run ptxdist images and expose a fastboot partition on the DUT by calling
>>
>> usbgadget -A /tmp/initramfs(initramfs)c
>>
>> then use fastboot to upload the cpio.gz from your distrokit build dir
>>
>> fastboot flash initramfs platform-v8a/images/initramfs-sparse.img
> 
> I can reproduce this with fastboot version 28.0.2-debian.
> It wasn't always like that. I assume -S 0 wasn't always the
> default, but I haven't checked the code. I think it's worth a bug
> report.

I gave this a try and I am not so sure anymore this is a bug. Small images
are uploaded without problem. This cut off seems to be 8M.

Above 8M, transferred file size is rounded up to be a multiple of 4096 bytes.
Files that are not aligned and bigger than 8M trigger the issue.

I assume we had not noticed this before because we either flash disk images
which are 4K aligned or we flash small images which were < 8M.

I haven't looked into the fastboot client code, but a look would be worthwhile
to decide how to proceed.

>>>> It saves upload time anyway, at least for the initramfs, so it's a good idea to use sparse images, anyway.
>>>
>>> Sparse is a compression algorithm, albeit a very primitive one. Your kernel and
>>> initrd should already be compressed, so if you have savings from compressing
>>> them again with sparse, there's something wrong IMO.
>>>
>>> The device tree is small enough that it shouldn't matter.
> 
> As mentioned, I don't think double compression is useful.
> On our side, we can likely just use -S 1 to restore the old behavior.


-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 4/5] v8a: barebox: enable loading kernel, dtb and initrd via fastboot
  2023-06-06 14:54     ` Johannes Zink
@ 2023-06-08  7:36       ` Ahmad Fatoum
  2023-06-09  6:26         ` Johannes Zink
  0 siblings, 1 reply; 31+ messages in thread
From: Ahmad Fatoum @ 2023-06-08  7:36 UTC (permalink / raw)
  To: Johannes Zink, distrokit; +Cc: patchwork-jzi

On 06.06.23 16:54, Johannes Zink wrote:
> Hi Ahmad,
> 
> On 6/6/23 16:44, Ahmad Fatoum wrote:
>> On 06.06.23 16:31, Johannes Zink wrote:
>>> This allows to load kernel, dtb and initrd as sparse images to
>>> RAM-files.
>>>
>>> While at it, also enable the acm gadget, which exposes the barebox shell
>>> as an USB gadget and autostart the usb gadgets.
>>>
>>> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
>>> ---
>>>   configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm        | 1 +
>>>   configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu        | 1 +
>>>   configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions | 1 +
>>>   configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart | 1 +
>>>   4 files changed, 4 insertions(+)
>>>
>>> diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm
>>> new file mode 100644
>>> index 000000000000..d00491fd7e5b
>>> --- /dev/null
>>> +++ b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm
>>> @@ -0,0 +1 @@
>>> +1
>>> diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu
>>> new file mode 100644
>>> index 000000000000..d00491fd7e5b
>>> --- /dev/null
>>> +++ b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu
>>> @@ -0,0 +1 @@
>>> +1
>>> diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions
>>> new file mode 100644
>>> index 000000000000..a67f90305dd6
>>> --- /dev/null
>>> +++ b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions
>>> @@ -0,0 +1 @@
>>> +/dev/mmc0(sd)o,/dev/mmc1(emmc)o,/tmp/kernel(kernel)c,/tmp/initramfs(initramfs)c,/tmp/oftree(oftree)c
>>
>> 1) Why not export the barebox update handler?
> 
> simple: I forgot to add it... will add it in v2.

You didn't. I now see fastboot.bbu above, which I missed the first time.

> 
>> 2) Is sd also mmc0 and emmc mmc1 on the i.MX8M boards? Because those use the
>>     same environment
> 
> not in general, no. Maybe use /dev/mmc0(mmc0)o,/dev/mmc1(mmc1)o,/dev/mmc2(mmc2)o instead?

Yes, this should do for now. Generally, I think barebox should just support exporting all
devices a user might be interested in. I submitted a patch for that:

https://lore.barebox.org/barebox/20230608072418.3275633-2-a.fatoum@pengutronix.de/T/#u

We could switch over to using this, once the patch is accepted and DistroKit is
updated to a release that has it (unless you want to pick it earlier).


Keep in mind that with either approach, only devices are functional
that barebox has detected. If you boot from SD, barebox might
not need to eMMC at all and thus it would not be detected unless you
(i.e. some init script) do 

  detect mmc0 mmc1 mmc2

Cheers,
Ahmad

>
> Johannes
> 
>>
>>> diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart b/configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart
>>> new file mode 100644
>>> index 000000000000..d00491fd7e5b
>>> --- /dev/null
>>> +++ b/configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart
>>> @@ -0,0 +1 @@
>>> +1
>>>
>>
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 4/5] v8a: barebox: enable loading kernel, dtb and initrd via fastboot
  2023-06-08  7:36       ` Ahmad Fatoum
@ 2023-06-09  6:26         ` Johannes Zink
  0 siblings, 0 replies; 31+ messages in thread
From: Johannes Zink @ 2023-06-09  6:26 UTC (permalink / raw)
  To: Ahmad Fatoum, distrokit; +Cc: patchwork-jzi

On 6/8/23 09:36, Ahmad Fatoum wrote:
> On 06.06.23 16:54, Johannes Zink wrote:
>> Hi Ahmad,
>>
>> On 6/6/23 16:44, Ahmad Fatoum wrote:
>>> On 06.06.23 16:31, Johannes Zink wrote:
>>>> This allows to load kernel, dtb and initrd as sparse images to
>>>> RAM-files.
>>>>
>>>> While at it, also enable the acm gadget, which exposes the barebox shell
>>>> as an USB gadget and autostart the usb gadgets.
>>>>
>>>> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
>>>> ---
>>>>    configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm        | 1 +
>>>>    configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu        | 1 +
>>>>    configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions | 1 +
>>>>    configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart | 1 +
>>>>    4 files changed, 4 insertions(+)
>>>>
>>>> diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm
>>>> new file mode 100644
>>>> index 000000000000..d00491fd7e5b
>>>> --- /dev/null
>>>> +++ b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.acm
>>>> @@ -0,0 +1 @@
>>>> +1
>>>> diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu
>>>> new file mode 100644
>>>> index 000000000000..d00491fd7e5b
>>>> --- /dev/null
>>>> +++ b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.bbu
>>>> @@ -0,0 +1 @@
>>>> +1
>>>> diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions
>>>> new file mode 100644
>>>> index 000000000000..a67f90305dd6
>>>> --- /dev/null
>>>> +++ b/configs/platform-v8a/barebox-common-defaultenv/nv/fastboot.partitions
>>>> @@ -0,0 +1 @@
>>>> +/dev/mmc0(sd)o,/dev/mmc1(emmc)o,/tmp/kernel(kernel)c,/tmp/initramfs(initramfs)c,/tmp/oftree(oftree)c
>>>
>>> 1) Why not export the barebox update handler?
>>
>> simple: I forgot to add it... will add it in v2.
> 
> You didn't. I now see fastboot.bbu above, which I missed the first time.

ack

> 
>>
>>> 2) Is sd also mmc0 and emmc mmc1 on the i.MX8M boards? Because those use the
>>>      same environment
>>
>> not in general, no. Maybe use /dev/mmc0(mmc0)o,/dev/mmc1(mmc1)o,/dev/mmc2(mmc2)o instead?
> 
> Yes, this should do for now. Generally, I think barebox should just support exporting all
> devices a user might be interested in. I submitted a patch for that:
> 
> https://lore.barebox.org/barebox/20230608072418.3275633-2-a.fatoum@pengutronix.de/T/#u
> 
> We could switch over to using this, once the patch is accepted and DistroKit is
> updated to a release that has it (unless you want to pick it earlier).
> 
> 
> Keep in mind that with either approach, only devices are functional
> that barebox has detected. If you boot from SD, barebox might
> not need to eMMC at all and thus it would not be detected unless you
> (i.e. some init script) do
> 
>    detect mmc0 mmc1 mmc2

ack, gonna add that for v2.

Johannes

> 
> Cheers,
> Ahmad
> 
>>
>> Johannes
>>
>>>
>>>> diff --git a/configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart b/configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart
>>>> new file mode 100644
>>>> index 000000000000..d00491fd7e5b
>>>> --- /dev/null
>>>> +++ b/configs/platform-v8a/barebox-common-defaultenv/nv/usbgadget.autostart
>>>> @@ -0,0 +1 @@
>>>> +1
>>>>
>>>
>>
> 

-- 
Pengutronix e.K.                | Johannes Zink                  |
Steuerwalder Str. 21            | https://www.pengutronix.de/    |
31137 Hildesheim, Germany       | Phone: +49-5121-206917-0       |
Amtsgericht Hildesheim, HRA 2686| Fax:   +49-5121-206917-5555    |




^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [DistroKit] [PATCH 5/5] v8a: barebox: add a boot target for fastboot loaded image files
  2023-06-06 15:07     ` Jan Lübbe
  2023-06-06 15:13       ` Johannes Zink
@ 2023-06-09  9:53       ` Johannes Zink
  1 sibling, 0 replies; 31+ messages in thread
From: Johannes Zink @ 2023-06-09  9:53 UTC (permalink / raw)
  To: Jan Lübbe, Ahmad Fatoum, distrokit; +Cc: patchwork-jzi

Hi Jan,

On 6/6/23 17:07, Jan Lübbe wrote:
> On Tue, 2023-06-06 at 16:47 +0200, Ahmad Fatoum wrote:
>> On 06.06.23 16:31, Johannes Zink wrote:
>>> This allows to boot a kernel with dtb and initrd entirely from RAM after
>>> loading it via Android Fastboot by simply calling 'boot fastboot'.
>>>
>>> Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
>>> ---
>>>   configs/platform-v8a/barebox-common-defaultenv/boot/fastboot | 7 +++++++
>>>   1 file changed, 7 insertions(+)
>>>
>>> diff --git a/configs/platform-v8a/barebox-common-defaultenv/boot/fastboot b/configs/platform-v8a/barebox-common-defaultenv/boot/fastboot
>>> new file mode 100755
>>> index 000000000000..a06414d582bf
>>> --- /dev/null
>>> +++ b/configs/platform-v8a/barebox-common-defaultenv/boot/fastboot
>>> @@ -0,0 +1,7 @@
>>> +#!/bin/sh
>>> +
>>> +global.bootm.image=/tmp/kernel
>>> +global.bootm.initrd=/tmp/initramfs
>>> +global.bootm.oftree=/tmp/oftree
>>> +
>>> +global.linux.bootargs.dyn.root="rdinit=/sbin/init root=/dev/ram"
>>
>> Isn't rdinit=/sbin/init the default?
> 
> rd=/init is the defaut. root=/dev/ram is not needed, AFAIR, it's for initrd, not
> initramfs.
> 
> Also, we could add a symlink /init -> /sbin/init, which would simplify using
> this initramfs with a bootloaders not passing the correct cmdline.
> 
> Jan

I have tested the different permutations:

+-------------------+---------------+-----------+
| rdinit=/sbin/init | root=/dev/ram | result    |
+===================+===============+===========+
| set               | set           | boots     |
+-------------------+---------------+-----------+
| set               | not set       | boots     |
+-------------------+---------------+-----------+
| not set           | set           | fails [1] |
+-------------------+---------------+-----------+
| not set           | not set       | fails [1] |
+-------------------+---------------+-----------+


[1] kernel panic after
[    2.545914] /dev/root: Can't open blockdev
[    2.546279] VFS: Cannot open root device "ram" or unknown-block(1,0): error -6

Thus, we can drop the root=/dev/ram, as you suggested. Gonna change it in v2.

Johannes


-- 
Pengutronix e.K.                | Johannes Zink                  |
Steuerwalder Str. 21            | https://www.pengutronix.de/    |
31137 Hildesheim, Germany       | Phone: +49-5121-206917-0       |
Amtsgericht Hildesheim, HRA 2686| Fax:   +49-5121-206917-5555    |




^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2023-06-09  9:53 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-06 14:31 [DistroKit] [PATCH 0/5] enable uploading kernel, dtb and initramfs over fastboot and boot it on Rock3A Johannes Zink
2023-06-06 14:31 ` [DistroKit] [PATCH 1/5] v8a: enable initrd generation Johannes Zink
2023-06-06 14:37   ` Ahmad Fatoum
2023-06-06 14:44     ` Johannes Zink
2023-06-06 14:59       ` Jan Lübbe
2023-06-06 15:02         ` Johannes Zink
2023-06-06 14:31 ` [DistroKit] [PATCH 2/5] v8a: kernel: enable initramfs in kernel config Johannes Zink
2023-06-06 14:37   ` Ahmad Fatoum
2023-06-06 14:31 ` [DistroKit] [PATCH 3/5] v8a: images: generate sparse images from rock3a initramfs, kernel and dtb Johannes Zink
2023-06-06 14:41   ` Ahmad Fatoum
2023-06-06 14:42     ` Ahmad Fatoum
2023-06-06 14:49       ` Johannes Zink
2023-06-06 14:54         ` Ahmad Fatoum
2023-06-06 14:47     ` Johannes Zink
2023-06-06 14:51       ` Ahmad Fatoum
2023-06-06 15:04         ` Johannes Zink
2023-06-06 15:26           ` Ahmad Fatoum
2023-06-08  7:28             ` Ahmad Fatoum
2023-06-06 14:31 ` [DistroKit] [PATCH 4/5] v8a: barebox: enable loading kernel, dtb and initrd via fastboot Johannes Zink
2023-06-06 14:44   ` Ahmad Fatoum
2023-06-06 14:54     ` Johannes Zink
2023-06-08  7:36       ` Ahmad Fatoum
2023-06-09  6:26         ` Johannes Zink
2023-06-06 15:04     ` Jan Lübbe
2023-06-06 15:14       ` Johannes Zink
2023-06-06 15:16         ` Jan Lübbe
2023-06-06 14:31 ` [DistroKit] [PATCH 5/5] v8a: barebox: add a boot target for fastboot loaded image files Johannes Zink
2023-06-06 14:47   ` Ahmad Fatoum
2023-06-06 15:07     ` Jan Lübbe
2023-06-06 15:13       ` Johannes Zink
2023-06-09  9:53       ` Johannes Zink

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox