summaryrefslogtreecommitdiffstats
path: root/external/meta-updater/scripts/run-qemu-ota
diff options
context:
space:
mode:
Diffstat (limited to 'external/meta-updater/scripts/run-qemu-ota')
-rwxr-xr-xexternal/meta-updater/scripts/run-qemu-ota36
1 files changed, 28 insertions, 8 deletions
diff --git a/external/meta-updater/scripts/run-qemu-ota b/external/meta-updater/scripts/run-qemu-ota
index de632970..59301a43 100755
--- a/external/meta-updater/scripts/run-qemu-ota
+++ b/external/meta-updater/scripts/run-qemu-ota
@@ -2,7 +2,7 @@
from argparse import ArgumentParser
from subprocess import Popen
-from os.path import exists
+from os.path import exists, dirname
import sys
from qemucommand import QemuCommand
@@ -13,6 +13,9 @@ def main():
parser = ArgumentParser(description='Run meta-updater image in qemu')
parser.add_argument('imagename', default='core-image-minimal', nargs='?',
help="Either the name of the bitbake image target, or a path to the image to run")
+ parser.add_argument('--uboot-enable', default='yes',
+ help='(yes/no). Determines whether or not to use U-Boot loader for running image, '
+ 'if yes then u-boot binary file will be passed as -bios option into QEMU cmd line.')
parser.add_argument('mac', default=None, nargs='?')
parser.add_argument('--dir', default=DEFAULT_DIR,
help='Path to build directory containing the image and u-boot-qemux86-64.rom')
@@ -20,6 +23,7 @@ def main():
help='Boot using UEFI rather than U-Boot. This requires the image to be built with ' +
'OSTREE_BOOTLOADER = "grub" and OVMF.fd firmware to be installed (try "apt install ovmf")',
action='store_true')
+ parser.add_argument('--bootloader', default=None, help="Path to bootloader, e.g. a u-boot ROM")
parser.add_argument('--machine', default=None, help="Target MACHINE")
kvm_group = parser.add_argument_group()
kvm_group.add_argument('--force-kvm', help='Force use of KVM (default is to autodetect)',
@@ -38,28 +42,44 @@ def main():
help='Give the image a second network card connected to a virtual network. ' +
'This can be used to test Uptane Primary/Secondary communication.')
parser.add_argument('-n', '--dry-run', help='Print qemu command line rather then run it', action='store_true')
+ parser.add_argument('--host-forward',
+ help='Redirect incoming TCP or UDP connections to the host port. '
+ 'Example forwarding guest port 10050 to the host port 10555:'
+ '--host-forward="tcp:0.0.0.0:10556-:10050". '
+ 'For more details please refer to QEMU man page, option <hostfwd>. '
+ 'https://manpages.debian.org/testing/qemu-system-x86/qemu-system-x86_64.1.en.html')
args = parser.parse_args()
+
+ if args.overlay and not exists(args.overlay) and dirname(args.overlay) and not dirname(args.overlay) == '.':
+ print('Error: please provide a file name in the current working directory. ' +
+ 'Overlays do not work properly with other directories.')
+ sys.exit(1)
+ if args.overlay and exists(args.overlay) and args.imagename != parser.get_default('imagename'):
+ # qemu-img amend -o <filename> might work, but it has not yet been done
+ # successfully.
+ print('Warning: cannot change backing image of overlay after it has been created.')
+
try:
qemu_command = QemuCommand(args)
except ValueError as e:
print(e.message)
sys.exit(1)
- print("Launching %s with mac address %s" % (args.imagename, qemu_command.mac_address))
- print("To connect via SSH:")
- print(" ssh -o StrictHostKeyChecking=no root@localhost -p %d" % qemu_command.ssh_port)
- print("To connect to the serial console:")
- print(" nc localhost %d" % qemu_command.serial_port)
-
cmdline = qemu_command.command_line()
if args.overlay and not exists(args.overlay):
- print("Image file %s does not yet exist, creating." % args.overlay)
+ print("Overlay file %s does not yet exist, creating." % args.overlay)
img_cmdline = qemu_command.img_command_line()
if args.dry_run:
print(" ".join(img_cmdline))
else:
Popen(img_cmdline).wait()
+ print("Launching %s with mac address %s" % (args.imagename, qemu_command.mac_address))
+ print("To connect via SSH:")
+ print(" ssh -o StrictHostKeyChecking=no root@localhost -p %d" % qemu_command.ssh_port)
+ print("To connect to the serial console:")
+ print(" nc localhost %d" % qemu_command.serial_port)
+
if args.dry_run:
print(" ".join(cmdline))
else: