From: Thomas Lamprecht Date: Thu, 18 Jul 2019 13:25:33 +0000 (+0200) Subject: getty setup: move hack for old systemd getty services out X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=dd7a436bcbea44cbcbfabcec50a674a1fe35f667;p=pve-container.git getty setup: move hack for old systemd getty services out This makes it easier to remove the setup_systemd_console method in the future. Signed-off-by: Thomas Lamprecht Acked-by: Fabian Grünbichler --- diff --git a/src/PVE/LXC/Setup/Base.pm b/src/PVE/LXC/Setup/Base.pm index f5f8b0d..791be32 100644 --- a/src/PVE/LXC/Setup/Base.pm +++ b/src/PVE/LXC/Setup/Base.pm @@ -165,23 +165,6 @@ sub setup_systemd_console { return if !$self->ct_file_exists($systemd_getty_service_rel); - my $raw = $self->ct_file_get_contents($systemd_getty_service_rel); - - my $systemd_container_getty_service_rel = "$systemd_dir_rel/container-getty\@.service"; - - # systemd on CenoOS 7.1 is too old (version 205), so there is no - # container-getty service - if (!$self->ct_file_exists($systemd_container_getty_service_rel)) { - if ($raw =~ s!^ConditionPathExists=/dev/tty0$!ConditionPathExists=/dev/tty!m) { - $self->ct_file_set_contents($systemd_getty_service_rel, $raw); - } - } else { - # undo above change (in case someone updated systemd) - if ($raw =~ s!^ConditionPathExists=/dev/tty$!ConditionPathExists=/dev/tty0!m) { - $self->ct_file_set_contents($systemd_getty_service_rel, $raw); - } - } - my $ttycount = PVE::LXC::Config->get_tty_count($conf); for (my $i = 1; $i < 7; $i++) { @@ -204,6 +187,32 @@ sub devttydir { return $conf->{unprivileged} ? '' : 'lxc/'; } +sub fixup_old_getty { + my ($self) = @_; + + my $sd_dir_rel = $self->ct_is_executable("/lib/systemd/systemd") ? + "/lib/systemd/system" : "/usr/lib/systemd/system"; + + my $sd_getty_service_rel = "$sd_dir_rel/getty\@.service"; + return if !$self->ct_file_exists($sd_getty_service_rel); + + my $raw = $self->ct_file_get_contents($sd_getty_service_rel); + + my $sd_container_getty_service_rel = "$sd_dir_rel/container-getty\@.service"; + # systemd on CenoOS 7.1 is too old (version 205), so there is no + # container-getty service + if (!$self->ct_file_exists($sd_container_getty_service_rel)) { + if ($raw =~ s!^ConditionPathExists=/dev/tty0$!ConditionPathExists=/dev/tty!m) { + $self->ct_file_set_contents($sd_getty_service_rel, $raw); + } + } else { + # undo above change (in case someone updated systemd) + if ($raw =~ s!^ConditionPathExists=/dev/tty$!ConditionPathExists=/dev/tty0!m) { + $self->ct_file_set_contents($sd_getty_service_rel, $raw); + } + } +} + sub setup_container_getty_service { my ($self, $conf) = @_; diff --git a/src/PVE/LXC/Setup/CentOS.pm b/src/PVE/LXC/Setup/CentOS.pm index 748dd5b..f72dbc0 100644 --- a/src/PVE/LXC/Setup/CentOS.pm +++ b/src/PVE/LXC/Setup/CentOS.pm @@ -115,6 +115,8 @@ sub setup_init { # edit/etc/securetty + $self->fixup_old_getty(); + $self->setup_systemd_console($conf); } diff --git a/src/PVE/LXC/Setup/SUSE.pm b/src/PVE/LXC/Setup/SUSE.pm index e5ee752..4a037b4 100644 --- a/src/PVE/LXC/Setup/SUSE.pm +++ b/src/PVE/LXC/Setup/SUSE.pm @@ -60,6 +60,8 @@ sub template_fixup { sub setup_init { my ($self, $conf) = @_; + $self->fixup_old_getty(); + if ($self->{setup_ct_getty_service}) { $self->setup_container_getty_service($conf); }