diff options
author | Andrew Lutomirski <luto@kernel.org> | 2019-09-27 10:26:26 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-27 10:26:26 -0700 |
commit | d0f2d5509491770f0f5d2034cd5d51f3701d7cd1 (patch) | |
tree | 2b53413fbe74ba172e449c34aa83abf3159ae591 | |
parent | 87757db3d4177bcbee0d60ab2ebb47f08ce18c66 (diff) | |
parent | 22d2ae781fec7de7d23983b4d2ef0a729db460b0 (diff) | |
download | virtme-d0f2d5509491770f0f5d2034cd5d51f3701d7cd1.tar.gz |
Merge pull request #39 from marcosps/mpdesouza_mkinitramfs
Make virtme-mkinitramfs great again
-rwxr-xr-x | setup.py | 1 | ||||
-rwxr-xr-x | virtme-mkinitramfs | 36 | ||||
-rwxr-xr-x | virtme/commands/mkinitramfs.py | 56 |
3 files changed, 63 insertions, 30 deletions
@@ -27,6 +27,7 @@ setup( 'console_scripts': [ 'virtme-run = virtme.commands.run:main', 'virtme-configkernel = virtme.commands.configkernel:main', + 'virtme-mkinitramfs = virtme.commands.mkinitramfs:main', ] }, scripts = [ diff --git a/virtme-mkinitramfs b/virtme-mkinitramfs index 67722b7..84361ad 100755 --- a/virtme-mkinitramfs +++ b/virtme-mkinitramfs @@ -6,34 +6,10 @@ # as a file called LICENSE with SHA-256 hash: # 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 -import argparse -import modfinder -import virtmods -import mkinitramfs +import sys +if sys.version_info < (3,3): + print('virtme requires Python 3.3 or higher') + sys.exit(1) -_ARGPARSER = argparse.ArgumentParser( - description='Generate initramfs image for virtme', -) -_ARGPARSER.add_argument('--mod-kversion', action='store', default=None) -_ARGPARSER.add_argument('--rw', action='store_true', default=False) - -def main(): - import sys - - args = _ARGPARSER.parse_args() - - config = mkinitramfs.Config() - - if args.mod_kversion is not None: - config.modfiles = modfinder.find_modules_from_install( - virtmods.MODALIASES, kver=args.mod_kversion) - - if args.rw: - config.access = 'rw' - - mkinitramfs.mkinitramfs(sys.stdout.buffer, config) - - return 0 - -if __name__ == '__main__': - exit(main()) +from virtme.commands import mkinitramfs +exit(mkinitramfs.main()) diff --git a/virtme/commands/mkinitramfs.py b/virtme/commands/mkinitramfs.py new file mode 100755 index 0000000..563c98b --- /dev/null +++ b/virtme/commands/mkinitramfs.py @@ -0,0 +1,56 @@ +# -*- mode: python -*- +# virtme-mkinitramfs: Generate an initramfs image for virtme +# Copyright © 2014 Andy Lutomirski +# Licensed under the GPLv2, which is available in the virtme distribution +# as a file called LICENSE with SHA-256 hash: +# 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 + +import argparse +from .. import modfinder +from .. import virtmods +from .. import mkinitramfs + +def make_parser(): + parser = argparse.ArgumentParser( + description='Generate an initramfs image for virtme', + ) + + parser.add_argument('--mod-kversion', action='store', default=None, + help='Find kernel modules related to kernel version set') + + parser.add_argument('--rw', action='store_true', default=False, + help='Mount initramfs as rw. Default is ro') + + parser.add_argument('--outfile', action='store', default=None, + help='Filename of the resulting initramfs file. Default: send initramfs to stdout') + + return parser + +def main(): + import sys + + args = make_parser().parse_args() + + config = mkinitramfs.Config() + + if args.mod_kversion is not None: + config.modfiles = modfinder.find_modules_from_install( + virtmods.MODALIASES, kver=args.mod_kversion) + + # search for busybox in the root filesystem + config.busybox = mkinitramfs.find_busybox(root = '/', is_native = True) + + if args.rw: + config.access = 'rw' + + if args.outfile is None: + buf = sys.stdout.buffer + else: + buf = open(args.outfile, 'w+b') + + mkinitramfs.mkinitramfs(buf, config) + + return 0 + +if __name__ == '__main__': + exit(main()) |