vmspawn/firstboot/homectl: fixes for plymouth (#40558)

This commit is contained in:
Yu Watanabe
2026-02-03 23:38:38 +09:00
committed by GitHub
5 changed files with 29 additions and 6 deletions
+5
View File
@@ -43,6 +43,7 @@
#include "parse-util.h"
#include "password-quality-util.h"
#include "path-util.h"
#include "plymouth-util.h"
#include "pretty-print.h"
#include "proc-cmdline.h"
#include "prompt-util.h"
@@ -110,6 +111,10 @@ static void print_welcome(int rfd, sd_varlink **mute_console_link) {
assert(rfd >= 0);
assert(mute_console_link);
/* Needs to be called before mute_console or it will garble the screen */
if (arg_welcome)
(void) plymouth_hide_splash();
if (!*mute_console_link && arg_mute_console)
(void) mute_console(mute_console_link);
+7 -3
View File
@@ -48,6 +48,7 @@
#include "percent-util.h"
#include "pidref.h"
#include "pkcs11-util.h"
#include "plymouth-util.h"
#include "polkit-agent.h"
#include "pretty-print.h"
#include "proc-cmdline.h"
@@ -2891,6 +2892,9 @@ static int create_interactively(void) {
return 0;
}
/* Needs to be called before mute_console or it will garble the screen */
(void) plymouth_hide_splash();
_cleanup_(sd_varlink_flush_close_unrefp) sd_varlink *mute_console_link = NULL;
(void) mute_console(&mute_console_link);
@@ -3265,17 +3269,17 @@ static int parse_size_field(sd_json_variant **identity, const char *field, const
static int parse_boolean_field(sd_json_variant **identity, const char *field, const char *arg) {
int r;
assert(identity);
assert(field);
if (isempty(arg))
return drop_from_identity(field);
r = parse_boolean(arg);
if (r < 0)
return log_error_errno(r, "Failed to parse boolean parameter %s: %s", field, arg);
r = sd_json_variant_set_field_boolean(identity, field, r > 0);
if (r < 0)
return log_error_errno(r, "Failed to set %s field: %m", field);
+11
View File
@@ -56,3 +56,14 @@ int plymouth_send_msg(const char *text, bool pause_spinner) {
return 0;
}
int plymouth_hide_splash(void) {
int r;
r = plymouth_send_raw("H\0", 2, SOCK_NONBLOCK);
if (r < 0)
return log_full_errno(ERRNO_IS_NO_PLYMOUTH(r) ? LOG_DEBUG : LOG_WARNING, r,
"Failed to communicate with plymouth: %m");
return 0;
}
+1
View File
@@ -7,6 +7,7 @@
int plymouth_connect(int flags);
int plymouth_send_raw(const void *raw, size_t size, int flags);
int plymouth_send_msg(const char *text, bool pause_spinner);
int plymouth_hide_splash(void);
static inline bool ERRNO_IS_NO_PLYMOUTH(int r) {
return IN_SET(ABS(r), EAGAIN, ENOENT) || ERRNO_IS_DISCONNECT(r);
+5 -3
View File
@@ -2451,9 +2451,11 @@ static int run_virtual_machine(int kvm_device_fd, int vhost_device_fd) {
return log_oom();
}
r = strv_prepend(&arg_kernel_cmdline_extra, "console=hvc0");
if (r < 0)
return log_oom();
if (arg_console_mode != CONSOLE_GUI) {
r = strv_prepend(&arg_kernel_cmdline_extra, "console=hvc0");
if (r < 0)
return log_oom();
}
for (size_t j = 0; j < arg_runtime_mounts.n_mounts; j++) {
RuntimeMount *m = arg_runtime_mounts.mounts + j;