From 1ecd15c9392ac57fdf4b922f74effa6a67c91150 Mon Sep 17 00:00:00 2001 From: zsdc Date: Fri, 27 Oct 2023 14:15:20 +0300 Subject: vyos_install: T5220: Added `cmdline_extra` option In some platforms, the kernel may need extra options in cmdline to boot properly. The new option allows adding extra parameters to the cmdline: ``` vyos_install: boot_params: cmdline_extra: nosmt mitigations=off # extra parameters for kernel cmdline ``` --- cloudinit/config/cc_vyos_install.py | 14 +++++++++----- config/cloud.cfg.d/20_vyos_install.cfg | 1 + 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/cloudinit/config/cc_vyos_install.py b/cloudinit/config/cc_vyos_install.py index a7c73af4..2c3629f8 100644 --- a/cloudinit/config/cc_vyos_install.py +++ b/cloudinit/config/cc_vyos_install.py @@ -250,6 +250,8 @@ def grub_configure(grub_dir: str, vyos_version: str, default_boot = 0 elif boot_params['console_type'] == 'serial': default_boot = 1 + if boot_params['cmdline_extra']: + cmdline_extra = f' {boot_params["cmdline_extra"]}' grub_cfg_content: str = dedent(f''' # load EFI video modules if [ "${{grub_platform}}" == "efi" ]; then @@ -264,22 +266,22 @@ def grub_configure(grub_dir: str, vyos_version: str, terminal_input --append serial console menuentry "VyOS { vyos_version } (KVM console)" {{ - linux /boot/{ vyos_version }/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/{ vyos_version } console=tty0 + linux /boot/{ vyos_version }/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/{ vyos_version } console=tty0{cmdline_extra} initrd /boot/{ vyos_version }/initrd.img }} menuentry "VyOS { vyos_version } (Serial console)" {{ - linux /boot/{ vyos_version }/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/{ vyos_version } console=ttyS{boot_params['serial_console_num']},{boot_params['serial_console_speed']} + linux /boot/{ vyos_version }/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/{ vyos_version } console=ttyS{boot_params['serial_console_num']},{boot_params['serial_console_speed']}{cmdline_extra} initrd /boot/{ vyos_version }/initrd.img }} menuentry "VyOS { vyos_version } - password reset (KVM console)" {{ - linux /boot/{ vyos_version }/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/{ vyos_version } console=tty0 init=/opt/vyatta/sbin/standalone_root_pw_reset + linux /boot/{ vyos_version }/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/{ vyos_version } console=tty0 init=/opt/vyatta/sbin/standalone_root_pw_reset{cmdline_extra} initrd /boot/{ vyos_version }/initrd.img }} menuentry "VyOS { vyos_version } - password reset (Serial console)" {{ - linux /boot/{ vyos_version }/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/{ vyos_version } console=ttyS{boot_params['serial_console_num']},{boot_params['serial_console_speed']} init=/opt/vyatta/sbin/standalone_root_pw_reset + linux /boot/{ vyos_version }/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/{ vyos_version } console=ttyS{boot_params['serial_console_num']},{boot_params['serial_console_speed']} init=/opt/vyatta/sbin/standalone_root_pw_reset{cmdline_extra} initrd /boot/{ vyos_version }/initrd.img }} ''') @@ -379,7 +381,9 @@ def handle(name: str, cfg: dict, cloud: Cloud, _: Logger, args: list) -> None: 'serial_console_speed': get_cfg_by_path(cfg, 'vyos_install/boot_params/serial_console_speed', - '9600') + '9600'), + 'cmdline_extra': + get_cfg_by_path(cfg, 'vyos_install/boot_params/cmdline_extra', '') } grub_configure(f'{DIR_DST_ROOT}/boot/grub', image_name, boot_params) LOG.info('GRUB configured') diff --git a/config/cloud.cfg.d/20_vyos_install.cfg b/config/cloud.cfg.d/20_vyos_install.cfg index 0083af68..da9eda07 100644 --- a/config/cloud.cfg.d/20_vyos_install.cfg +++ b/config/cloud.cfg.d/20_vyos_install.cfg @@ -8,3 +8,4 @@ # console_type: serial # type of console: kvm, serial. Default: kvm # serial_console_num: 1 # serial console number. Default: 0 # serial_console_speed: 115200 # serial console speed. Default: 9600 +# cmdline_extra: nosmt mitigations=off # add extra parameters for kernel cmdline -- cgit v1.2.3