Allow a custom disk image

This commit is contained in:
Ciro Santilli 六四事件 法轮功
2020-10-27 00:00:01 +00:00
parent f6be232ea8
commit 196d5be280
2 changed files with 18 additions and 7 deletions

View File

@@ -243,6 +243,9 @@ Enable or disable ccache: https://cirosantilli.com/linux-kernel-module-cheat#cca
To have some fun when the kernel starts to beat you. To have some fun when the kernel starts to beat you.
''' '''
) )
self.add_argument(
'--disk-image',
)
self.add_argument( self.add_argument(
'--dry-run', '--dry-run',
default=False, default=False,
@@ -1216,13 +1219,14 @@ Incompatible archs are skipped.
env['image_elf'] = env['vmlinux'] env['image_elf'] = env['vmlinux']
if env['_args_given']['linux_exec']: if env['_args_given']['linux_exec']:
env['image'] = env['linux_exec'] env['image'] = env['linux_exec']
if env['emulator'] == 'gem5': if not env['_args_given']['disk_image']:
if env['ramfs']: if env['emulator'] == 'gem5':
env['disk_image'] = None if env['ramfs']:
env['disk_image'] = None
else:
env['disk_image'] = env['rootfs_raw_file']
else: else:
env['disk_image'] = env['rootfs_raw_file'] env['disk_image'] = env['qcow2_file']
else:
env['disk_image'] = env['qcow2_file']
# Android # Android
if not env['_args_given']['android_base_dir']: if not env['_args_given']['android_base_dir']:

9
run
View File

@@ -521,6 +521,8 @@ Extra options to append at the end of the emulator command line.
use_disk_image = self.env['disk_image'] is not None and \ use_disk_image = self.env['disk_image'] is not None and \
os.path.exists(self.env['disk_image']) or \ os.path.exists(self.env['disk_image']) or \
not self.env['baremetal'] not self.env['baremetal']
if self.env['_args_given']['disk_image'] and not os.path.exists(self.env['disk_image']) :
raise_rootfs_not_found()
if self.env['emulator'] == 'gem5': if self.env['emulator'] == 'gem5':
if self.env['quiet']: if self.env['quiet']:
show_stdout = False show_stdout = False
@@ -827,10 +829,15 @@ Extra options to append at the end of the emulator command line.
'-device', 'ide-hd,drive=img-blkreplay', LF, '-device', 'ide-hd,drive=img-blkreplay', LF,
]) ])
if use_disk_image: if use_disk_image:
if os.path.splitext(self.env['disk_image'])[1] == '.qcow2':
disk_format = 'qcow2'
else:
disk_format = 'raw'
extra_emulator_args.extend([ extra_emulator_args.extend([
'-drive', '-drive',
'file={},format=qcow2,if={}{}{}'.format( 'file={},format={},if={}{}{}'.format(
self.env['disk_image'], self.env['disk_image'],
disk_format,
driveif, driveif,
snapshot, snapshot,
rrid rrid