Add extra boot args to the livemedia-creator iso templates

This adds a new livemedia-creator argument, --extra-boot-args, which can
be used to add arguments to the kernel command-line in the templates.

Resolves: rhbz#1689314
This commit is contained in:
Brian C. Lane 2019-03-14 09:45:40 -07:00
parent 7c1f29af5a
commit c15a976832
14 changed files with 35 additions and 26 deletions

View File

@ -1,4 +1,4 @@
<%page args="kernels, runtime_img, basearch, inroot, outroot, product, isolabel"/> <%page args="kernels, runtime_img, basearch, inroot, outroot, product, isolabel, extra_boot_args"/>
<% <%
configdir="tmp/config_files/aarch64" configdir="tmp/config_files/aarch64"
PXEBOOTDIR="images/pxeboot" PXEBOOTDIR="images/pxeboot"
@ -54,7 +54,7 @@ mkdir ${KERNELDIR}
%> %>
treeinfo images-${basearch} ${img|basename} ${img} treeinfo images-${basearch} ${img|basename} ${img}
%endfor %endfor
<%include file="efi.tmpl" args="configdir=configdir, KERNELDIR=KERNELDIR, efiarch32=None, efiarch64=efiarch, isolabel=isolabel"/> <%include file="efi.tmpl" args="configdir=configdir, KERNELDIR=KERNELDIR, efiarch32=None, efiarch64=efiarch, isolabel=isolabel, extra_boot_args=extra_boot_args"/>
%endif %endif
# Create optional product.img and updates.img # Create optional product.img and updates.img

View File

@ -27,16 +27,16 @@ search --no-floppy --set=root -l '@ISOLABEL@'
### BEGIN /etc/grub.d/10_linux ### ### BEGIN /etc/grub.d/10_linux ###
menuentry 'Start @PRODUCT@ @VERSION@' --class red --class gnu-linux --class gnu --class os { menuentry 'Start @PRODUCT@ @VERSION@' --class red --class gnu-linux --class gnu --class os {
linux @KERNELPATH@ @ROOT@ rd.live.image quiet linux @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image quiet
initrd @INITRDPATH@ initrd @INITRDPATH@
} }
menuentry 'Test this media & start @PRODUCT@ @VERSION@' --class red --class gnu-linux --class gnu --class os { menuentry 'Test this media & start @PRODUCT@ @VERSION@' --class red --class gnu-linux --class gnu --class os {
linux @KERNELPATH@ @ROOT@ rd.live.image rd.live.check quiet linux @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image rd.live.check quiet
initrd @INITRDPATH@ initrd @INITRDPATH@
} }
submenu 'Troubleshooting -->' { submenu 'Troubleshooting -->' {
menuentry 'Install @PRODUCT@ @VERSION@ in basic graphics mode' --class red --class gnu-linux --class gnu --class os { menuentry 'Install @PRODUCT@ @VERSION@ in basic graphics mode' --class red --class gnu-linux --class gnu --class os {
linux @KERNELPATH@ @ROOT@ rd.live.image nomodeset quiet linux @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image nomodeset quiet
initrd @INITRDPATH@ initrd @INITRDPATH@
} }
} }

View File

@ -6,12 +6,12 @@ echo -e "\nWelcome to the @PRODUCT@ @VERSION@ installer!\n\n"
for BITS in 32 64; do for BITS in 32 64; do
if [ -d "/ppc/ppc${BITS}" ]; then if [ -d "/ppc/ppc${BITS}" ]; then
menuentry "Start @PRODUCT@ @VERSION@ (${BITS}-bit kernel)" $BITS --class fedora --class gnu-linux --class gnu --class os { menuentry "Start @PRODUCT@ @VERSION@ (${BITS}-bit kernel)" $BITS --class fedora --class gnu-linux --class gnu --class os {
linux /ppc/ppc${2}/vmlinuz @ROOT@ ro rd.live.image quiet linux /ppc/ppc${2}/vmlinuz @ROOT@ @EXTRA@ ro rd.live.image quiet
initrd /ppc/ppc${2}/initrd.img initrd /ppc/ppc${2}/initrd.img
} }
menuentry "Test this media & start @PRODUCT@ @VERSION@ (${BITS}-bit kernel)" $BITS --class fedora --class gnu-linux --class gnu --class os { menuentry "Test this media & start @PRODUCT@ @VERSION@ (${BITS}-bit kernel)" $BITS --class fedora --class gnu-linux --class gnu --class os {
linux /ppc/ppc${2}/vmlinuz @ROOT@ rd.live.image rd.live.check ro quiet linux /ppc/ppc${2}/vmlinuz @ROOT@ @EXTRA@ rd.live.image rd.live.check ro quiet
initrd /ppc/ppc${2}/initrd.img initrd /ppc/ppc${2}/initrd.img
} }

View File

@ -1 +1 @@
ro ramdisk_size=40000 cio_ignore=all,!condev ro ramdisk_size=40000 cio_ignore=all,!condev @EXTRA@

View File

@ -5,9 +5,9 @@ timeout 60
hiddenmenu hiddenmenu
title Start @PRODUCT@ @VERSION@ title Start @PRODUCT@ @VERSION@
findiso findiso
kernel @KERNELPATH@ @ROOT@ rd.live.image quiet kernel @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image quiet
initrd @INITRDPATH@ initrd @INITRDPATH@
title Test this media & start @PRODUCT@ @VERSION@ title Test this media & start @PRODUCT@ @VERSION@
findiso findiso
kernel @KERNELPATH@ @ROOT@ rd.live.image rd.live.check quiet kernel @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image rd.live.check quiet
initrd @INITRDPATH@ initrd @INITRDPATH@

View File

@ -21,20 +21,20 @@ search --no-floppy --set=root -l '@ISOLABEL@'
### BEGIN /etc/grub.d/10_linux ### ### BEGIN /etc/grub.d/10_linux ###
menuentry 'Start @PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os { menuentry 'Start @PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os {
linuxefi @KERNELPATH@ @ROOT@ rd.live.image quiet linuxefi @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image quiet
initrdefi @INITRDPATH@ initrdefi @INITRDPATH@
} }
menuentry 'Test this media & start @PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os { menuentry 'Test this media & start @PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os {
linuxefi @KERNELPATH@ @ROOT@ rd.live.image rd.live.check quiet linuxefi @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image rd.live.check quiet
initrdefi @INITRDPATH@ initrdefi @INITRDPATH@
} }
submenu 'Troubleshooting -->' { submenu 'Troubleshooting -->' {
menuentry 'Start @PRODUCT@ @VERSION@ in basic graphics mode' --class fedora --class gnu-linux --class gnu --class os { menuentry 'Start @PRODUCT@ @VERSION@ in basic graphics mode' --class fedora --class gnu-linux --class gnu --class os {
linuxefi @KERNELPATH@ @ROOT@ rd.live.image xdriver=vesa nomodeset quiet linuxefi @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image xdriver=vesa nomodeset quiet
initrdefi @INITRDPATH@ initrdefi @INITRDPATH@
} }
menuentry 'Rescue a @PRODUCT@ system' --class fedora --class gnu-linux --class gnu --class os { menuentry 'Rescue a @PRODUCT@ system' --class fedora --class gnu-linux --class gnu --class os {
linuxefi @KERNELPATH@ @ROOT@ rd.live.image rescue quiet linuxefi @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image rescue quiet
initrdefi @INITRDPATH@ initrdefi @INITRDPATH@
} }
} }

View File

@ -61,13 +61,13 @@ menu separator # insert an empty line
label linux label linux
menu label ^Start @PRODUCT@ @VERSION@ menu label ^Start @PRODUCT@ @VERSION@
kernel vmlinuz kernel vmlinuz
append initrd=initrd.img @ROOT@ rd.live.image quiet append initrd=initrd.img @ROOT@ @EXTRA@ rd.live.image quiet
label check label check
menu label Test this ^media & start @PRODUCT@ @VERSION@ menu label Test this ^media & start @PRODUCT@ @VERSION@
menu default menu default
kernel vmlinuz kernel vmlinuz
append initrd=initrd.img @ROOT@ rd.live.image rd.live.check quiet append initrd=initrd.img @ROOT@ @EXTRA@ rd.live.image rd.live.check quiet
menu separator # insert an empty line menu separator # insert an empty line
@ -83,7 +83,7 @@ label vesa
@PRODUCT@ @VERSION@. @PRODUCT@ @VERSION@.
endtext endtext
kernel vmlinuz kernel vmlinuz
append initrd=initrd.img @ROOT@ rd.live.image xdriver=vesa nomodeset quiet append initrd=initrd.img @ROOT@ @EXTRA@ rd.live.image xdriver=vesa nomodeset quiet
label rescue label rescue
menu indent count 5 menu indent count 5
@ -93,7 +93,7 @@ label rescue
and edit config files to try to get it booting again. and edit config files to try to get it booting again.
endtext endtext
kernel vmlinuz kernel vmlinuz
append initrd=initrd.img @ROOT@ rd.live.image rescue quiet append initrd=initrd.img @ROOT@ @EXTRA@ rd.live.image rescue quiet
label memtest label memtest
menu label Run a ^memory test menu label Run a ^memory test

View File

@ -1,4 +1,4 @@
<%page args="configdir, KERNELDIR, efiarch32, efiarch64, isolabel"/> <%page args="configdir, KERNELDIR, efiarch32, efiarch64, isolabel, extra_boot_args"/>
<% <%
from string import lower from string import lower
EFIBOOTDIR="EFI/BOOT" EFIBOOTDIR="EFI/BOOT"
@ -53,6 +53,7 @@ ${make_efiboot("images/efiboot.img")}
replace @KERNELPATH@ /${kdir}/vmlinuz ${eficonf} replace @KERNELPATH@ /${kdir}/vmlinuz ${eficonf}
replace @INITRDPATH@ /${kdir}/initrd.img ${eficonf} replace @INITRDPATH@ /${kdir}/initrd.img ${eficonf}
replace @ISOLABEL@ '${isolabel}' ${eficonf} replace @ISOLABEL@ '${isolabel}' ${eficonf}
replace @EXTRA@ '${extra_boot_args}' ${eficonf}
%if disk: %if disk:
replace @ROOT@ root=live:LABEL=ANACONDA ${eficonf} replace @ROOT@ root=live:LABEL=ANACONDA ${eficonf}
%else: %else:

View File

@ -1,4 +1,4 @@
<%page args="kernels, runtime_img, basearch, libdir, inroot, outroot, product, isolabel"/> <%page args="kernels, runtime_img, basearch, libdir, inroot, outroot, product, isolabel, extra_boot_args"/>
<% <%
configdir="tmp/config_files/ppc" configdir="tmp/config_files/ppc"
BOOTDIR="ppc" BOOTDIR="ppc"
@ -46,6 +46,7 @@ install ${configdir}/grub.cfg.in ${GRUBDIR}/grub.cfg
replace @PRODUCT@ '${product.name}' ${GRUBDIR}/grub.cfg replace @PRODUCT@ '${product.name}' ${GRUBDIR}/grub.cfg
replace @VERSION@ ${product.version} ${GRUBDIR}/grub.cfg replace @VERSION@ ${product.version} ${GRUBDIR}/grub.cfg
replace @ROOT@ 'root=live:CDLABEL=${isolabel|udev}' ${GRUBDIR}/grub.cfg replace @ROOT@ 'root=live:CDLABEL=${isolabel|udev}' ${GRUBDIR}/grub.cfg
replace @EXTRA@ '${extra_boot_args}' ${GRUBDIR}/grub.cfg
## copy mapping and magic files needed for isos ## copy mapping and magic files needed for isos
install ${configdir}/mapping ${BOOTDIR} install ${configdir}/mapping ${BOOTDIR}

View File

@ -1,4 +1,4 @@
<%page args="kernels, runtime_img, runtime_base, basearch, outroot"/> <%page args="kernels, runtime_img, runtime_base, basearch, outroot, extra_boot_args"/>
<% <%
configdir="tmp/config_files/s390" configdir="tmp/config_files/s390"
BOOTDIR="images" BOOTDIR="images"
@ -21,6 +21,7 @@ install ${configdir}/generic.ins .
## configure bootloader ## configure bootloader
replace @INITRD_LOAD_ADDRESS@ ${INITRD_ADDRESS} generic.ins replace @INITRD_LOAD_ADDRESS@ ${INITRD_ADDRESS} generic.ins
replace @EXTRA@ ${extra_boot_args} generic.prm
## install kernel ## install kernel
installkernel images-${basearch} ${kernel.path} ${KERNELDIR}/kernel.img installkernel images-${basearch} ${kernel.path} ${KERNELDIR}/kernel.img

View File

@ -1,4 +1,4 @@
<%page args="kernels, runtime_img, basearch, outroot, product, isolabel"/> <%page args="kernels, runtime_img, basearch, outroot, product, isolabel, extra_boot_args"/>
<% <%
configdir="tmp/config_files/x86" configdir="tmp/config_files/x86"
SYSLINUXDIR="usr/share/syslinux" SYSLINUXDIR="usr/share/syslinux"
@ -27,6 +27,7 @@ install boot/memtest* ${BOOTDIR}/memtest
replace @VERSION@ ${product.version} ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg replace @VERSION@ ${product.version} ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg
replace @PRODUCT@ '${product.name}' ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg replace @PRODUCT@ '${product.name}' ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg
replace @ROOT@ 'root=live:CDLABEL=${isolabel|udev}' ${BOOTDIR}/isolinux.cfg replace @ROOT@ 'root=live:CDLABEL=${isolabel|udev}' ${BOOTDIR}/isolinux.cfg
replace @EXTRA@ '${extra_boot_args}' ${BOOTDIR}/isolinux.cfg
## install kernels ## install kernels
mkdir ${KERNELDIR} mkdir ${KERNELDIR}
@ -66,7 +67,7 @@ hardlink ${KERNELDIR}/initrd.img ${BOOTDIR}
efigraft += " {0}={1}/{0}".format(img,outroot) efigraft += " {0}={1}/{0}".format(img,outroot)
efihybrid = "--uefi --mac" if domacboot else "--uefi" efihybrid = "--uefi --mac" if domacboot else "--uefi"
%> %>
<%include file="efi.tmpl" args="configdir=configdir, KERNELDIR=KERNELDIR, efiarch32=efiarch32, efiarch64=efiarch64, isolabel=isolabel"/> <%include file="efi.tmpl" args="configdir=configdir, KERNELDIR=KERNELDIR, efiarch32=efiarch32, efiarch64=efiarch64, isolabel=isolabel, extra_boot_args=extra_boot_args"/>
%endif %endif
# Create optional product.img and updates.img # Create optional product.img and updates.img

View File

@ -341,7 +341,8 @@ def make_livecd(opts, mount_dir, work_dir):
tb = TreeBuilder(product=product, arch=arch, domacboot=opts.domacboot, tb = TreeBuilder(product=product, arch=arch, domacboot=opts.domacboot,
inroot=mount_dir, outroot=work_dir, inroot=mount_dir, outroot=work_dir,
runtime=RUNTIME, isolabel=isolabel, runtime=RUNTIME, isolabel=isolabel,
templatedir=joinpaths(opts.lorax_templates,"live/")) templatedir=joinpaths(opts.lorax_templates,"live/"),
extra_boot_args=opts.extra_boot_args)
log.info( "Rebuilding initrds" ) log.info( "Rebuilding initrds" )
if not opts.dracut_args: if not opts.dracut_args:
dracut_args = DRACUT_DEFAULT dracut_args = DRACUT_DEFAULT

View File

@ -173,7 +173,8 @@ class RuntimeBuilder(object):
class TreeBuilder(object): class TreeBuilder(object):
'''Builds the arch-specific boot images. '''Builds the arch-specific boot images.
inroot should be the installtree root (the newly-built runtime dir)''' inroot should be the installtree root (the newly-built runtime dir)'''
def __init__(self, product, arch, inroot, outroot, runtime, isolabel, domacboot=False, doupgrade=True, templatedir=None, add_templates=None, add_template_vars=None, workdir=None): def __init__(self, product, arch, inroot, outroot, runtime, isolabel, domacboot=False, doupgrade=True,
templatedir=None, add_templates=None, add_template_vars=None, workdir=None, extra_boot_args=""):
# NOTE: if you pass an arg named "runtime" to a mako template it'll # NOTE: if you pass an arg named "runtime" to a mako template it'll
# clobber some mako internal variables - hence "runtime_img". # clobber some mako internal variables - hence "runtime_img".
@ -182,7 +183,7 @@ class TreeBuilder(object):
inroot=inroot, outroot=outroot, inroot=inroot, outroot=outroot,
basearch=arch.basearch, libdir=arch.libdir, basearch=arch.basearch, libdir=arch.libdir,
isolabel=isolabel, udev=udev_escape, domacboot=domacboot, doupgrade=doupgrade, isolabel=isolabel, udev=udev_escape, domacboot=domacboot, doupgrade=doupgrade,
workdir=workdir) workdir=workdir, extra_boot_args=extra_boot_args)
self._runner = LoraxTemplateRunner(inroot, outroot, templatedir=templatedir) self._runner = LoraxTemplateRunner(inroot, outroot, templatedir=templatedir)
self._runner.defaults = self.vars self._runner.defaults = self.vars
self.add_templates = add_templates or [] self.add_templates = add_templates or []

View File

@ -114,6 +114,9 @@ def lorax_parser():
parser.add_argument( "--nomacboot", action="store_false", default=False, parser.add_argument( "--nomacboot", action="store_false", default=False,
dest="domacboot") dest="domacboot")
parser.add_argument("--extra-boot-args", default="", dest="extra_boot_args",
help="Extra arguments to add to the bootloader kernel cmdline in the templates")
image_group = parser.add_argument_group("disk/fs image arguments") image_group = parser.add_argument_group("disk/fs image arguments")
image_group.add_argument( "--disk-image", type=os.path.abspath, image_group.add_argument( "--disk-image", type=os.path.abspath,
help="Path to disk image to use for creating final image" ) help="Path to disk image to use for creating final image" )