From 5952adfd55a06b725edd41b7a54b58ac81cb30ea Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Fri, 22 Apr 2016 21:19:29 +0000 Subject: [PATCH] Add kernel arg passing support --- server/build_image.py | 18 +++++++++++++----- server/iso_files/grub.cfg | 2 +- server/iso_files/loopback.cfg | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/server/build_image.py b/server/build_image.py index 89e8b91..a79db6c 100755 --- a/server/build_image.py +++ b/server/build_image.py @@ -25,6 +25,10 @@ parser.add_argument( dest='image_dir', action='store', required=True) +parser.add_argument( + '--kernel-arg', + dest='kernel_args', + action='append') parser.add_argument( '--module', dest='modules', @@ -87,13 +91,14 @@ class ImageBuilder(object): 'loopback.cfg': 'boot/grub/loopback.cfg', } - def __init__(self, source_iso, image_dir, archive, arch, release, modules): + def __init__(self, source_iso, image_dir, archive, arch, release, modules, kernel_args): self._source_iso = source_iso self._image_dir = image_dir self._archive = archive self._arch = arch self._release = release self._modules = modules or [] + self._kernel_args = kernel_args or [] self._ico_server_path = os.path.dirname(sys.argv[0]) @@ -259,9 +264,11 @@ class ImageBuilder(object): def _CopyISOFiles(self, union_path): for source, dest in self._ISO_COPIES.items(): - shutil.copyfile( - os.path.join(self._ico_server_path, 'iso_files', source), - os.path.join(union_path, dest)) + source_path = os.path.join(self._ico_server_path, 'iso_files', source) + dest_path = os.path.join(union_path, dest) + with open(source_path, 'r') as source_fh, open(dest_path, 'w') as dest_fh: + for line in source_fh: + dest_fh.write(line.replace('$KERNEL_ARGS', ' '.join(self._kernel_args))) def _CreateISO(self, union_path, timestamp): dest_iso = os.path.join(self._image_dir, '%d.iso' % timestamp) @@ -322,7 +329,8 @@ def main(): FLAGS.archive, FLAGS.arch, FLAGS.release, - FLAGS.modules) + FLAGS.modules, + FLAGS.kernel_args) builder.BuildImage() diff --git a/server/iso_files/grub.cfg b/server/iso_files/grub.cfg index ac32bf2..2cc51d4 100644 --- a/server/iso_files/grub.cfg +++ b/server/iso_files/grub.cfg @@ -2,6 +2,6 @@ set timeout=5 terminal_output console menuentry "Ubuntu Server Live Image" { - linux /casper/vmlinuz.efi boot=casper root=LABEL=ISOIMAGE nomodeset + linux /casper/vmlinuz.efi boot=casper root=LABEL=ISOIMAGE nomodeset $KERNEL_ARGS initrd /casper/initrd.lz } diff --git a/server/iso_files/loopback.cfg b/server/iso_files/loopback.cfg index 98bf4ea..ef37d44 100644 --- a/server/iso_files/loopback.cfg +++ b/server/iso_files/loopback.cfg @@ -2,6 +2,6 @@ set timeout=5 terminal_output console menuentry "Ubuntu Server Live Image" { - linux /casper/vmlinuz.efi boot=casper iso-scan/filename=${iso_path} nomodeset + linux /casper/vmlinuz.efi boot=casper iso-scan/filename=${iso_path} nomodeset $KERNEL_ARGS initrd /casper/initrd.lz }