diff --git a/boot-qemu.py b/boot-qemu.py index 1426933..4833875 100755 --- a/boot-qemu.py +++ b/boot-qemu.py @@ -47,6 +47,7 @@ def __init__(self): self.gdb = False self.gdb_bin = '' self.gh_json_file = None + self.initrd = None self.interactive = False self.kernel = None self.kernel_dir = None @@ -167,6 +168,8 @@ def _have_dev_kvm_access(self): return os.access('/dev/kvm', os.R_OK | os.W_OK) def _prepare_initrd(self): + if self.initrd: + return self.initrd if not self._initrd_arch: raise RuntimeError('No initrd architecture specified?') return utils.prepare_initrd(self._initrd_arch, @@ -821,6 +824,12 @@ def parse_arguments(): help= 'Use file for downloading rootfs images, instead of querying GitHub API directly' ) + parser.add_argument( + '-I', + '--initrd', + help= + 'Initial ramdisk to use (default: Download ramdisk from ClangBuiltLinux/boot-utils releases)' + ) parser.add_argument( '-k', '--kernel-location', @@ -919,6 +928,12 @@ def parse_arguments(): if args.gh_json_file: runner.gh_json_file = Path(args.gh_json_file).resolve() + if args.initrd: + if not (initrd := Path(args.initrd).resolve()).exists(): + raise FileNotFoundError( + f"Supplied initrd ('{initrd}') does not exist?") + runner.initrd = initrd + if args.memory: runner.memory = args.memory