aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Lutomirski <luto@kernel.org>2019-09-27 10:26:26 -0700
committerGitHub <noreply@github.com>2019-09-27 10:26:26 -0700
commitd0f2d5509491770f0f5d2034cd5d51f3701d7cd1 (patch)
tree2b53413fbe74ba172e449c34aa83abf3159ae591
parent87757db3d4177bcbee0d60ab2ebb47f08ce18c66 (diff)
parent22d2ae781fec7de7d23983b4d2ef0a729db460b0 (diff)
downloadvirtme-d0f2d5509491770f0f5d2034cd5d51f3701d7cd1.tar.gz
Merge pull request #39 from marcosps/mpdesouza_mkinitramfs
Make virtme-mkinitramfs great again
-rwxr-xr-xsetup.py1
-rwxr-xr-xvirtme-mkinitramfs36
-rwxr-xr-xvirtme/commands/mkinitramfs.py56
3 files changed, 63 insertions, 30 deletions
diff --git a/setup.py b/setup.py
index 03c6061..a0b804e 100755
--- a/setup.py
+++ b/setup.py
@@ -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())