From: Sam Leonard Date: Mon, 15 Jan 2024 17:02:35 +0000 (+0000) Subject: vmspawn: supply a serial TTY to the kernel by default X-Git-Tag: v256-rc1~1138^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F30944%2Fhead;p=thirdparty%2Fsystemd.git vmspawn: supply a serial TTY to the kernel by default --- diff --git a/src/vmspawn/vmspawn-util.h b/src/vmspawn/vmspawn-util.h index 53ad7dd3d27..c931e66aacd 100644 --- a/src/vmspawn/vmspawn-util.h +++ b/src/vmspawn/vmspawn-util.h @@ -10,6 +10,16 @@ #define ARCHITECTURE_SUPPORTS_SMBIOS 0 #endif +#if defined(__arm__) || defined(__aarch64__) +#define DEFAULT_SERIAL_TTY "ttyAMA0" +#elif defined(__s390__) || defined(__s390x__) +#define DEFAULT_SERIAL_TTY "ttysclp0" +#elif defined(__powerpc__) || defined(__powerpc64__) +#define DEFAULT_SERIAL_TTY "hvc0" +#else +#define DEFAULT_SERIAL_TTY "ttyS0" +#endif + typedef struct OvmfConfig { char *path; char *vars; diff --git a/src/vmspawn/vmspawn.c b/src/vmspawn/vmspawn.c index b4cc6dddc6e..74732988d92 100644 --- a/src/vmspawn/vmspawn.c +++ b/src/vmspawn/vmspawn.c @@ -616,22 +616,24 @@ static int run_virtual_machine(void) { if (r < 0) return log_oom(); - if (!strv_isempty(arg_parameters)) { - if (ARCHITECTURE_SUPPORTS_SMBIOS) { - _cleanup_free_ char *kcl = strv_join(arg_parameters, " "); - if (!kcl) - return log_oom(); + r = strv_prepend(&arg_parameters, "console=" DEFAULT_SERIAL_TTY); + if (r < 0) + return log_oom(); - r = strv_extend(&cmdline, "-smbios"); - if (r < 0) - return log_oom(); + if (ARCHITECTURE_SUPPORTS_SMBIOS) { + _cleanup_free_ char *kcl = strv_join(arg_parameters, " "); + if (!kcl) + return log_oom(); - r = strv_extendf(&cmdline, "type=11,value=io.systemd.stub.kernel-cmdline-extra=%s", kcl); - if (r < 0) - return log_oom(); - } else - log_warning("Cannot append extra args to kernel cmdline, native architecture doesn't support SMBIOS"); - } + r = strv_extend(&cmdline, "-smbios"); + if (r < 0) + return log_oom(); + + r = strv_extendf(&cmdline, "type=11,value=io.systemd.stub.kernel-cmdline-extra=%s", kcl); + if (r < 0) + return log_oom(); + } else + log_warning("Cannot append extra args to kernel cmdline, native architecture doesn't support SMBIOS"); if (use_vsock) { vsock_fd = open_vsock();