diff mbox series

start-qemu.sh: Remove BOOT_FILES variable and call qemu directly in secure,swupdate and normal path

Message ID 20220303144517.4182918-1-Srinuvasan_A@mentor.com (mailing list archive)
State New
Headers show
Series start-qemu.sh: Remove BOOT_FILES variable and call qemu directly in secure,swupdate and normal path | expand

Commit Message

Srinuvasan Arjunan March 3, 2022, 2:45 p.m. UTC
From: Srinuvasan A <srinuvasan_a@mentor.com>

Broke the normal boot part.
Fixed them.

-append takes arguments inside double quotes(""). If we escape
and pass the " along with the value the final command would form
like what we would expect.

qemu-system-x86_64 .... -append " root=/dev/sda console=ttyS0"

But when the shell parses it, due to how whitespace splitting works
for arguments passed via a variable, it parses the first quote(")
as argument 1 and root=dev/sda as argument 2 and messing up the
command.
It should ideally treat the whole " root=/dev/sda console=ttyS0" as
a single argument.

hence Maintaining argument splitting is complex. A simpler one for here is to
avoid BOOT_FILES and unrole the actual qemu call with its different
kernels into the secure, swupdate and normal path.

Signed-off-by: Srinuvasan A <srinuvasan_a@mentor.com>
---
 start-qemu.sh | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

Comments

Jan Kiszka March 3, 2022, 2:54 p.m. UTC | #1
On 03.03.22 15:45, Srinuvasan A wrote:
> From: Srinuvasan A <srinuvasan_a@mentor.com>
> 
> Broke the normal boot part.
> Fixed them.
> 
> -append takes arguments inside double quotes(""). If we escape
> and pass the " along with the value the final command would form
> like what we would expect.
> 
> qemu-system-x86_64 .... -append " root=/dev/sda console=ttyS0"
> 
> But when the shell parses it, due to how whitespace splitting works
> for arguments passed via a variable, it parses the first quote(")
> as argument 1 and root=dev/sda as argument 2 and messing up the
> command.
> It should ideally treat the whole " root=/dev/sda console=ttyS0" as
> a single argument.
> 
> hence Maintaining argument splitting is complex. A simpler one for here is to

"Hence maintaining..."

> avoid BOOT_FILES and unrole the actual qemu call with its different
> kernels into the secure, swupdate and normal path.
> 
> Signed-off-by: Srinuvasan A <srinuvasan_a@mentor.com>
> ---
>  start-qemu.sh | 23 ++++++++++++++---------
>  1 file changed, 14 insertions(+), 9 deletions(-)
> 
> diff --git a/start-qemu.sh b/start-qemu.sh
> index a7e0588..d19cd98 100755
> --- a/start-qemu.sh
> +++ b/start-qemu.sh
> @@ -121,22 +121,27 @@ if [ -n "${SECURE_BOOT}" ]; then
>  			-global ICH9-LPC.disable_s3=1 \
>  			-global isa-fdc.driveA= "
>  
> -		BOOT_FILES="-drive if=pflash,format=raw,unit=0,readonly=on,file=${ovmf_code} \
> +		${QEMU_PATH}${QEMU} \
> +			-m 1G -serial mon:stdio -netdev user,id=net \
> +		        -drive if=pflash,format=raw,unit=0,readonly=on,file=${ovmf_code} \
>  			-drive if=pflash,format=raw,file=${ovmf_vars} \
> -			-drive file=${IMAGE_PREFIX}.wic.img,discard=unmap,if=none,id=disk,format=raw"
> +			-drive file=${IMAGE_PREFIX}.wic.img,discard=unmap,if=none,id=disk,format=raw ${QEMU_EXTRA_ARGS} "$@"
> +
>  elif [ -n "${SWUPDATE_BOOT}" ]; then
> -		BOOT_FILES="-drive file=${IMAGE_PREFIX}.wic.img,discard=unmap,if=none,id=disk,format=raw \
> -			-bios OVMF.fd "
> +		${QEMU_PATH}${QEMU} \
> +			-m 1G -serial mon:stdio -netdev user,id=net \
> +		        -drive file=${IMAGE_PREFIX}.wic.img,discard=unmap,if=none,id=disk,format=raw \
> +			-bios OVMF.fd ${QEMU_EXTRA_ARGS} "$@"
> +
>  else
>  		IMAGE_FILE=$(ls ${IMAGE_PREFIX}.ext4.img)
>  
>  		KERNEL_FILE=$(ls ${IMAGE_PREFIX}-vmlinu* | tail -1)
>  		INITRD_FILE=$(ls ${IMAGE_PREFIX}-initrd.img* | tail -1)
>  
> -		BOOT_FILES="-drive file=${IMAGE_FILE},discard=unmap,if=none,id=disk,format=raw \
> +		${QEMU_PATH}${QEMU} \
> +			-m 1G -serial mon:stdio -netdev user,id=net \
> +                        -drive file=${IMAGE_FILE},discard=unmap,if=none,id=disk,format=raw \
>  			-kernel ${KERNEL_FILE} -append "${KERNEL_CMDLINE}" \
> -			-initrd ${INITRD_FILE}"
> +			-initrd ${INITRD_FILE} ${QEMU_EXTRA_ARGS} "$@"
>  fi
> -${QEMU_PATH}${QEMU} \
> -			-m 1G -serial mon:stdio -netdev user,id=net \
> -			${BOOT_FILES} ${QEMU_EXTRA_ARGS} "$@"

Functionally fine, but your indention is not consistent (mostly tabs,
not not always).

When you do a v2, you could use that chance and factor out the common
arguments into a variable (-m 1G -serial mon:stdio -netdev user,id=net).

Jan
diff mbox series

Patch

diff --git a/start-qemu.sh b/start-qemu.sh
index a7e0588..d19cd98 100755
--- a/start-qemu.sh
+++ b/start-qemu.sh
@@ -121,22 +121,27 @@  if [ -n "${SECURE_BOOT}" ]; then
 			-global ICH9-LPC.disable_s3=1 \
 			-global isa-fdc.driveA= "
 
-		BOOT_FILES="-drive if=pflash,format=raw,unit=0,readonly=on,file=${ovmf_code} \
+		${QEMU_PATH}${QEMU} \
+			-m 1G -serial mon:stdio -netdev user,id=net \
+		        -drive if=pflash,format=raw,unit=0,readonly=on,file=${ovmf_code} \
 			-drive if=pflash,format=raw,file=${ovmf_vars} \
-			-drive file=${IMAGE_PREFIX}.wic.img,discard=unmap,if=none,id=disk,format=raw"
+			-drive file=${IMAGE_PREFIX}.wic.img,discard=unmap,if=none,id=disk,format=raw ${QEMU_EXTRA_ARGS} "$@"
+
 elif [ -n "${SWUPDATE_BOOT}" ]; then
-		BOOT_FILES="-drive file=${IMAGE_PREFIX}.wic.img,discard=unmap,if=none,id=disk,format=raw \
-			-bios OVMF.fd "
+		${QEMU_PATH}${QEMU} \
+			-m 1G -serial mon:stdio -netdev user,id=net \
+		        -drive file=${IMAGE_PREFIX}.wic.img,discard=unmap,if=none,id=disk,format=raw \
+			-bios OVMF.fd ${QEMU_EXTRA_ARGS} "$@"
+
 else
 		IMAGE_FILE=$(ls ${IMAGE_PREFIX}.ext4.img)
 
 		KERNEL_FILE=$(ls ${IMAGE_PREFIX}-vmlinu* | tail -1)
 		INITRD_FILE=$(ls ${IMAGE_PREFIX}-initrd.img* | tail -1)
 
-		BOOT_FILES="-drive file=${IMAGE_FILE},discard=unmap,if=none,id=disk,format=raw \
+		${QEMU_PATH}${QEMU} \
+			-m 1G -serial mon:stdio -netdev user,id=net \
+                        -drive file=${IMAGE_FILE},discard=unmap,if=none,id=disk,format=raw \
 			-kernel ${KERNEL_FILE} -append "${KERNEL_CMDLINE}" \
-			-initrd ${INITRD_FILE}"
+			-initrd ${INITRD_FILE} ${QEMU_EXTRA_ARGS} "$@"
 fi
-${QEMU_PATH}${QEMU} \
-			-m 1G -serial mon:stdio -netdev user,id=net \
-			${BOOT_FILES} ${QEMU_EXTRA_ARGS} "$@"