[meta-arm] arm-autonomy/xenguest-mkimage: add extra ramdisk support

Submitted by Kamil Dziezyk on Oct. 14, 2020, 11:54 a.m. | Patch ID: 177248

Details

Message ID 20201014115426.2608-1-kamil.dziezyk@arm.com
State New
Headers show

Commit Message

Kamil Dziezyk Oct. 14, 2020, 11:54 a.m.
Some guest images requires a ramdisk, that is built with a custom recipe.
This patch adds an option '--xen-ramdisk',
for xenguest-mkimage script to cover that.
Extra ramdisk support is also added to xenguest-image-extra bbclass,
via 'XENGUEST_EXTRA_RAMDISK' variable.

Issue-Id: SCM-1276
Change-Id: I8ec74a37c0c96ca83a3489911186f3b3262f80fd
Signed-off-by: Kamil Dziezyk <kamil.dziezyk@arm.com>
---
 .../classes/xenguest-image-extra.bbclass        | 12 ++++++++++++
 .../documentation/xenguest-mkimage.md           |  2 ++
 .../xenguest/files/xenguest-mkimage             | 17 +++++++++++++++++
 3 files changed, 31 insertions(+)

Patch hide | download patch | download mbox

diff --git a/meta-arm-autonomy/classes/xenguest-image-extra.bbclass b/meta-arm-autonomy/classes/xenguest-image-extra.bbclass
index 502a083..533b973 100644
--- a/meta-arm-autonomy/classes/xenguest-image-extra.bbclass
+++ b/meta-arm-autonomy/classes/xenguest-image-extra.bbclass
@@ -12,6 +12,11 @@  inherit xenguest-image
 # recipes, the last recipe setting it will prevail.
 XENGUEST_EXTRA_DTB ??= ""
 
+# Add a ramdisk file for the guest
+# Only one file should be added, if this is set multiple times or in several
+# recipes, the last recipe setting it will prevail.
+XENGUEST_EXTRA_RAMDISK ??= ""
+
 # Append something to the guest xen configuration
 # All files here will be merged together in the final xen configuration
 # This can contain several files or be used in several recipes
@@ -49,6 +54,13 @@  do_deploy_append() {
         call_xenguest_mkimage partial --xen-device-tree=${XENGUEST_EXTRA_DTB}
     fi
 
+    if [ -n "${XENGUEST_EXTRA_RAMDISK}" ]; then
+        if [ ! -f ${XENGUEST_EXTRA_RAMDISK} ]; then
+            die "xenguest-image: DTB file ${XENGUEST_EXTRA_RAMDISK} does not exist"
+        fi
+        call_xenguest_mkimage partial --xen-ramdisk=${XENGUEST_EXTRA_RAMDISK}
+    fi
+
     if [ -n "${XENGUEST_EXTRA_XENCONFIG}" ]; then
         for f in ${XENGUEST_EXTRA_XENCONFIG}; do
             if [ ! -f $f ]; then
diff --git a/meta-arm-autonomy/documentation/xenguest-mkimage.md b/meta-arm-autonomy/documentation/xenguest-mkimage.md
index 3dcc28b..ece17f7 100644
--- a/meta-arm-autonomy/documentation/xenguest-mkimage.md
+++ b/meta-arm-autonomy/documentation/xenguest-mkimage.md
@@ -99,6 +99,8 @@  For a detailed help on available operations, please use:
   times to add several command line options.
 - --xen-device-tree=FILE: add dtb FILE as device tree. This both adding the
   file to the image and modifying the xen configuration to use it.
+- --xen-ramdisk=FILE: add ramdisk FILE as guest ramdisk. This both adding the
+  file to the image and modifying the xen configuration to use it.
 - --init-script=FILE: add guest init script. The script is embedded inside the
   image file. Several script can be added and the basename of FILE is used to
   distinguish them (calling the option twice with the same file will update the
diff --git a/meta-arm-autonomy/recipes-extended/xenguest/files/xenguest-mkimage b/meta-arm-autonomy/recipes-extended/xenguest/files/xenguest-mkimage
index 4c1b4a8..a3f987a 100755
--- a/meta-arm-autonomy/recipes-extended/xenguest/files/xenguest-mkimage
+++ b/meta-arm-autonomy/recipes-extended/xenguest/files/xenguest-mkimage
@@ -82,6 +82,9 @@  Xen configuration for the guest
 --xen-device-tree=      disable device tree parameter in xen configuration
 --xen-device-tree=FILE  set guest device tree in xen configuration and add
                          file to xen files
+--xen-ramdisk=          disable ramdisk parameter in xen configuration
+--xen-ramdisk=FILE      set guest ramdisk in xen configuration and add
+                         file to xen files
 --xen-disk=             disable disk parameter in xen configuration
 --xen-disk=DEV          set guest disk to device DEV (phy:DEV,xvda,w is set)
 --xen-append=FILE       append FILE content to xen configuration
@@ -668,6 +671,20 @@  for arg in "${@}"; do
                 install -m 644 ${optarg} ${IMAGE_TMPDIR}/files/guest.dtb
             fi
             ;;
+        --xen-ramdisk=*)
+            if [ -z "${optarg}" ]; then
+                xen_config_disable_param "ramdisk"
+                rm -f ${IMAGE_TMPDIR}/files/ramdisk.img
+            else
+                if [ ! -f ${optarg} ]; then
+                    echo "Error: invalid ramdisk file ${optarg}"
+                    exit 1
+                fi
+                xen_config_set_string "ramdisk" "files/ramdisk.img"
+                mkdir -p ${IMAGE_TMPDIR}/files
+                install -m 644 ${optarg} ${IMAGE_TMPDIR}/files/ramdisk.img
+            fi
+            ;;
         --xen-disk=*)
             if [ -z "${optarg}" ]; then
                 xen_config_disable_param "disk"

Comments

Diego Sueiro Oct. 14, 2020, 12:02 p.m.
On Wed, Oct 14, 2020 at 12:55 PM, Kamil Dziezyk wrote:

>
> Some guest images requires a ramdisk, that is built with a custom recipe.
> This patch adds an option '--xen-ramdisk',
> for xenguest-mkimage script to cover that.
> Extra ramdisk support is also added to xenguest-image-extra bbclass,
> via 'XENGUEST_EXTRA_RAMDISK' variable.
> 
> Issue-Id: SCM-1276
> Change-Id: I8ec74a37c0c96ca83a3489911186f3b3262f80fd
> Signed-off-by: Kamil Dziezyk <kamil.dziezyk@arm.com>

Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>

> ---
>  .../classes/xenguest-image-extra.bbclass        | 12 ++++++++++++
>  .../documentation/xenguest-mkimage.md           |  2 ++
>  .../xenguest/files/xenguest-mkimage             | 17 +++++++++++++++++
>  3 files changed, 31 insertions(+)
> 
> diff --git a/meta-arm-autonomy/classes/xenguest-image-extra.bbclass
> b/meta-arm-autonomy/classes/xenguest-image-extra.bbclass
> index 502a083..533b973 100644
> --- a/meta-arm-autonomy/classes/xenguest-image-extra.bbclass
> +++ b/meta-arm-autonomy/classes/xenguest-image-extra.bbclass
> @@ -12,6 +12,11 @@ inherit xenguest-image
>  # recipes, the last recipe setting it will prevail.
>  XENGUEST_EXTRA_DTB ??= ""
>  
> +# Add a ramdisk file for the guest
> +# Only one file should be added, if this is set multiple times or in several
> +# recipes, the last recipe setting it will prevail.
> +XENGUEST_EXTRA_RAMDISK ??= ""
> +
>  # Append something to the guest xen configuration
>  # All files here will be merged together in the final xen configuration
>  # This can contain several files or be used in several recipes
> @@ -49,6 +54,13 @@ do_deploy_append() {
>          call_xenguest_mkimage partial --xen-device-tree=${XENGUEST_EXTRA_DTB}
>      fi
>  
> +    if [ -n "${XENGUEST_EXTRA_RAMDISK}" ]; then
> +        if [ ! -f ${XENGUEST_EXTRA_RAMDISK} ]; then
> +            die "xenguest-image: DTB file ${XENGUEST_EXTRA_RAMDISK} does not
> exist"
> +        fi
> +        call_xenguest_mkimage partial --xen-ramdisk=${XENGUEST_EXTRA_RAMDISK}
> +    fi
> +
>      if [ -n "${XENGUEST_EXTRA_XENCONFIG}" ]; then
>          for f in ${XENGUEST_EXTRA_XENCONFIG}; do
>              if [ ! -f $f ]; then
> diff --git a/meta-arm-autonomy/documentation/xenguest-mkimage.md
> b/meta-arm-autonomy/documentation/xenguest-mkimage.md
> index 3dcc28b..ece17f7 100644
> --- a/meta-arm-autonomy/documentation/xenguest-mkimage.md
> +++ b/meta-arm-autonomy/documentation/xenguest-mkimage.md
> @@ -99,6 +99,8 @@ For a detailed help on available operations, please use:
>    times to add several command line options.
>  - --xen-device-tree=FILE: add dtb FILE as device tree. This both adding the
>    file to the image and modifying the xen configuration to use it.
> +- --xen-ramdisk=FILE: add ramdisk FILE as guest ramdisk. This both adding the
> +  file to the image and modifying the xen configuration to use it.
>  - --init-script=FILE: add guest init script. The script is embedded inside
> the
>    image file. Several script can be added and the basename of FILE is used to
>    distinguish them (calling the option twice with the same file will update
> the
> diff --git
> a/meta-arm-autonomy/recipes-extended/xenguest/files/xenguest-mkimage
> b/meta-arm-autonomy/recipes-extended/xenguest/files/xenguest-mkimage
> index 4c1b4a8..a3f987a 100755
> --- a/meta-arm-autonomy/recipes-extended/xenguest/files/xenguest-mkimage
> +++ b/meta-arm-autonomy/recipes-extended/xenguest/files/xenguest-mkimage
> @@ -82,6 +82,9 @@ Xen configuration for the guest
>  --xen-device-tree=      disable device tree parameter in xen configuration
>  --xen-device-tree=FILE  set guest device tree in xen configuration and add
>                           file to xen files
> +--xen-ramdisk=          disable ramdisk parameter in xen configuration
> +--xen-ramdisk=FILE      set guest ramdisk in xen configuration and add
> +                         file to xen files
>  --xen-disk=             disable disk parameter in xen configuration
>  --xen-disk=DEV          set guest disk to device DEV (phy:DEV,xvda,w is set)
>  --xen-append=FILE       append FILE content to xen configuration
> @@ -668,6 +671,20 @@ for arg in "${@}"; do
>                  install -m 644 ${optarg} ${IMAGE_TMPDIR}/files/guest.dtb
>              fi
>              ;;
> +        --xen-ramdisk=*)
> +            if [ -z "${optarg}" ]; then
> +                xen_config_disable_param "ramdisk"
> +                rm -f ${IMAGE_TMPDIR}/files/ramdisk.img
> +            else
> +                if [ ! -f ${optarg} ]; then
> +                    echo "Error: invalid ramdisk file ${optarg}"
> +                    exit 1
> +                fi
> +                xen_config_set_string "ramdisk" "files/ramdisk.img"
> +                mkdir -p ${IMAGE_TMPDIR}/files
> +                install -m 644 ${optarg} ${IMAGE_TMPDIR}/files/ramdisk.img
> +            fi
> +            ;;
>          --xen-disk=*)
>              if [ -z "${optarg}" ]; then
>                  xen_config_disable_param "disk"
> -- 
> 2.17.1
> 
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#1205): https://lists.yoctoproject.org/g/meta-arm/message/1205
Mute This Topic: https://lists.yoctoproject.org/mt/77503465/3617530
Group Owner: meta-arm+owner@lists.yoctoproject.org
Unsubscribe: https://lists.yoctoproject.org/g/meta-arm/unsub [oe-patchwork@oe-patch.openembedded.org]
-=-=-=-=-=-=-=-=-=-=-=-