[pve-devel] [PATCH pve-container] update inittab instead of replacing it

Wolfgang Bumiller w.bumiller at proxmox.com
Wed Oct 14 16:09:51 CEST 2015


> On October 14, 2015 at 3:55 PM Dietmar Maurer <dietmar at proxmox.com> wrote:
> > On October 14, 2015 at 2:48 PM Wolfgang Bumiller <w.bumiller at proxmox.com>
> > wrote:
> > ---
> >  src/PVE/LXC/Setup/Base.pm   |  6 ++---
> >  src/PVE/LXC/Setup/Debian.pm | 61
> > ++++++++++++++++++++++++++++++++++-----------
> >  2 files changed, 49 insertions(+), 18 deletions(-)
> > 
> > diff --git a/src/PVE/LXC/Setup/Base.pm b/src/PVE/LXC/Setup/Base.pm
> > index ba7453d..9a39468 100644
> > --- a/src/PVE/LXC/Setup/Base.pm
> > +++ b/src/PVE/LXC/Setup/Base.pm
> > @@ -191,7 +191,7 @@ sub setup_network {
> >  }
> >  
> >  sub setup_init {
> > -    my ($self, $conf) = @_;
> > +    my ($self, $conf, $creation) = @_;
> >  
> >      die "please implement this inside subclass"
> >  }
> > @@ -454,7 +454,7 @@ sub rewrite_ssh_host_keys {
> >  sub pre_start_hook {
> >      my ($self, $conf) = @_;
> >  
> > -    $self->setup_init($conf);
> > +    $self->setup_init($conf, 0);
> >      $self->setup_network($conf);
> >      $self->set_hostname($conf);
> >      $self->set_dns($conf);
> > @@ -470,7 +470,7 @@ sub post_create_hook {
> >      &$randomize_crontab($self, $conf);
> >      
> >      $self->set_user_password($conf, 'root', $root_password);
> > -    $self->setup_init($conf);
> > +    $self->setup_init($conf, 1);
> >      $self->setup_network($conf);
> >      $self->set_hostname($conf);
> >      $self->set_dns($conf);
> > diff --git a/src/PVE/LXC/Setup/Debian.pm b/src/PVE/LXC/Setup/Debian.pm
> > index 1b2a277..068d155 100644
> > --- a/src/PVE/LXC/Setup/Debian.pm
> > +++ b/src/PVE/LXC/Setup/Debian.pm
> > @@ -77,26 +77,57 @@ p0::powerfail:/sbin/init 0
> >  __EOD__
> >  
> >  sub setup_init {
> > -    my ($self, $conf) = @_;
> > +    my ($self, $conf, $creation) = @_;
> >  
> >      my $filename = "/etc/inittab";
> > +    return if !$self->ct_file_exists($filename);
> >  
> > -    if ($self->ct_file_exists($filename)) {
> > -	my $inittab = $default_inittab;
> > -
> > -	my $ttycount =  PVE::LXC::get_tty_count($conf);
> > -	for (my $i = 1; $i <= $ttycount; $i++) {
> > -	    next if $i == 7; # reserved for X11
> > -	    my $levels = ($i == 1) ? '2345' : '23';
> > -	    if ($self->{version} < 7) {
> > -		$inittab .= "$i:$levels:respawn:/sbin/getty -L 38400 tty$i\n";
> > -	    } else {
> > -		$inittab .= "$i:$levels:respawn:/sbin/getty --noclear 38400 tty$i\n";
> > -	    }
> > +    my $ttycount =  PVE::LXC::get_tty_count($conf);
> > +    my $inittab = $creation ? $default_inittab :
> > $self->ct_file_get_contents($filename);
> 
> Why do we want to overwrite an existing file with $default_inittab ?

$creation=1 means the container is being created, and we always replaced it
before, the difference is that restarting the existing container doesn't replace
the file again



More information about the pve-devel mailing list