summaryrefslogtreecommitdiff
path: root/src/migration-scripts/system
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2026-09-07 16:34:09 +0200
committerChristian Breunig <christian@breunig.cc>2026-09-07 16:35:55 +0000
commita4ca1e5979fe9c795e1ca210dd881f611d7fef21 (patch)
tree9ba1ff36b81ab967390b6a319f4537c255b8ddbf /src/migration-scripts/system
parent16f1cf4579e3c1bf3a2639d54c6ae9e1ef163259 (diff)
downloadvyos-1x-a4ca1e5979fe9c795e1ca210dd881f611d7fef21.tar.gz
vyos-1x-a4ca1e5979fe9c795e1ca210dd881f611d7fef21.zip
smoketest: T9014: make configtest serial console image flavor agnostic
The configuration tests hardcoded "system console device ttyS0 speed 115200", which only holds for amd64, whereas arm64 images expose the UART as ttyAMA0, so loading these configs produced a diff against the assert data and the tests failed. Replace the hardcoded values in all config test inputs and their assert counterparts with the @SERIAL_DEVICE@ and @SERIAL_SPEED@ placeholders. The vyos-1x-smoketest postinst queries the image flavor and implants the real values once at install time, so the test runner needs no runtime patching. Migration script 31-to-32 now derives the serial device from the flavor, too, instead of assuming ttyS0. This can be observed during vyos-1x package installation while building the ISO image Setting up vyos-1x-smoketest (999.0-14834-g16f1cf457-dirty) ... ... I: Implanted serial console ttyS0,115200 into /usr/libexec/vyos/tests/configs
Diffstat (limited to 'src/migration-scripts/system')
-rw-r--r--src/migration-scripts/system/31-to-3219
1 files changed, 15 insertions, 4 deletions
diff --git a/src/migration-scripts/system/31-to-32 b/src/migration-scripts/system/31-to-32
index b68dab34f..e92473835 100644
--- a/src/migration-scripts/system/31-to-32
+++ b/src/migration-scripts/system/31-to-32
@@ -16,23 +16,34 @@
# Serial
from vyos.configtree import ConfigTree
+from vyos.flavor import get_image_serial_console
from vyos.system import disk
from vyos.system.grub import CFG_VYOS_VARS
from vyos.system.grub import vars_read
-serial_console = 'ttyS0'
base = ['system', 'console']
def migrate(config: ConfigTree) -> None:
if not config.exists(base):
return
+ # The serial console device is defined by the image flavor - amd64 uses the
+ # 8250 UART at ttyS0 while arm64 systems expose the PL011 UART as ttyAMA0
+ console_type, console_num, _ = get_image_serial_console()
+ if not console_type:
+ # image flavor carries no serial console data, assume 8250 UART
+ console_type, console_num = 'ttyS', '0'
+ serial_console = f'{console_type}{console_num}'
+
root_dir = disk.find_persistence()
vars_file: str = f'{root_dir}/{CFG_VYOS_VARS}'
vars_current: dict[str, str] = vars_read(vars_file)
+ # A system without persistent GRUB storage - like VyOS running inside a
+ # container - has no boot console we could detect
+ if not vars_current:
+ return
+
# Check if VyOS installation uses serial boot console
- if vars_current['console_type'] == 'ttyS':
- # In the past we only supported ttyS0 as boot console, that's why we
- # can hardcode it ...
+ if vars_current['console_type'] == console_type:
if config.exists(base + ['device', serial_console]):
config.set(base + ['device', serial_console, 'kernel'])