diff --git a/meta-arm-autonomy/classes/xenguest-image-extra.bbclass b/meta-arm-autonomy/classes/xenguest-image-extra.bbclass index 502a083f..533b9739 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 3dcc28b4..ece17f76 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 4c1b4a87..a3f987ae 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"