$config->{ostype} = "ubuntu-15.04";
} elsif ($suite eq 'wily') {
$config->{ostype} = "ubuntu-15.10";
+ } elsif ($suite eq 'xenial') {
+ $config->{ostype} = "ubuntu-16.04";
} else {
die "unsupported debian suite '$suite'\n";
}
if ($suite eq 'squeeze' || $suite eq 'wheezy' || $suite eq 'jessie');
push @{$config->{source}}, "http://security.debian.org SUITE/updates main contrib";
} elsif ($suite eq 'hardy' || $suite eq 'intrepid' || $suite eq 'jaunty' ||
- $suite eq 'wily' || $suite eq 'vivid' || $suite eq 'trusty' || $suite eq 'precise') {
+ $suite eq 'xenial' || $suite eq 'wily' || $suite eq 'vivid' ||
+ $suite eq 'trusty' || $suite eq 'precise') {
my $comp = "main restricted universe multiverse";
push @{$config->{source}}, "http://archive.ubuntu.com/ubuntu SUITE $comp";
push @{$config->{source}}, "http://archive.ubuntu.com/ubuntu SUITE-updates $comp";
# ubuntu has too many dependencies on udev, so
# we cannot exclude it (instead we disable udevd)
- if ($suite eq 'vivid' || $suite eq 'wily') {
+ if ($suite eq 'vivid' || $suite eq 'wily' || $suite eq 'xenial') {
push @$incl, 'isc-dhcp-client';
+ push @$excl, qw(libmodule-build-perl);
} elsif ($suite eq 'trusty') {
push @$excl, qw(systemd systemd-services libpam-systemd libsystemd-daemon0 memtest86+);
} elsif ($suite eq 'precise') {
my $instpkgs = $self->read_installed ();
my $pkginfo = $self->pkginfo();
my $veid = $self->{veid};
+ my $conffile = $self->{veconffile};
my $rootdir = $self->{rootfs};
my $vestat = $self->ve_status();
$self->ve_divert_remove ("/sbin/init");
# finally stop the VE
- $self->run_command ("lxc-stop -n $veid --kill");
+ $self->run_command ("lxc-stop -n $veid --rcfile $conffile --kill");
unlink "$rootdir/sbin/defenv";
my ($self, $cmd, $input) = @_;
my $veid = $self->{veid};
+ my $conffile = $self->{veconffile};
if (ref ($cmd) eq 'ARRAY') {
- unshift @$cmd, 'lxc-attach', '-n', $veid, '--clear-env', '--', 'defenv';
+ unshift @$cmd, 'lxc-attach', '-n', $veid, '--rcfile', $conffile, '--clear-env', '--', 'defenv';
$self->run_command ($cmd, $input);
} else {
- $self->run_command ("lxc-attach -n $veid --clear-env -- defenv $cmd", $input);
+ $self->run_command ("lxc-attach -n $veid --rcfile $conffile --clear-env -- defenv $cmd", $input);
}
}
my ($self, @cmd) = @_;
my $veid = $self->{veid};
+ my $conffile = $self->{veconffile};
my $reader;
- my $pid = open2($reader, "<&STDIN", 'lxc-attach', '-n', $veid, '--',
+ my $pid = open2($reader, "<&STDIN", 'lxc-attach', '-n', $veid, '--rcfile', $conffile, '--',
'defenv', @cmd) || die "unable to exec command";
while (defined (my $line = <$reader>)) {
my ($self) = @_;
my $veid = $self->{veid}; # fixme
+ my $conffile = $self->{veconffile};
my $vestat = $self->ve_status();
if ($vestat->{running}) {
- $self->run_command ("lxc-stop -n $veid --kill");
+ $self->run_command ("lxc-stop -n $veid --rcfile $conffile --kill");
}
rmtree $self->{rootfs};
my ($self) = @_;
my $veid = $self->{veid};
+ my $conffile = $self->{veconffile};
$self->logmsg ("initialize VE $veid\n");
my $vestat = $self->ve_status();
if ($vestat->{running}) {
- $self->run_command ("lxc-stop -n $veid --kill");
+ $self->run_command ("lxc-stop -n $veid --rcfile $conffile --kill");
}
rmtree $self->{rootfs};
$self->run_command ("install -m 0755 '$script' '$target'");
if ($suite eq 'etch' || $suite eq 'lenny') {
$self->ve_command ("update-rc.d $base start $prio $runlevel .");
- } elsif ($suite eq 'wily' || $suite eq 'vivid') {
+ } elsif ($suite eq 'xenial' || $suite eq 'wily' || $suite eq 'vivid') {
die "unable to install init script (system uses systemd)\n";
} elsif ($suite eq 'trusty' || $suite eq 'precise') {
die "unable to install init script (system uses upstart)\n";
# avoid warnings about non-existent resolv.conf
write_file ("", "$rootdir/etc/resolv.conf", 0644);
- $data = "auto lo\niface lo inet loopback\n";
- write_file ($data, "$rootdir/etc/network/interfaces", 0644);
+ if ($suite eq 'xenial' || $suite eq 'wily') {
+ # no need to configure loopback device
+ } else {
+ $data = "auto lo\niface lo inet loopback\n";
+ write_file ($data, "$rootdir/etc/network/interfaces", 0644);
+ }
# setup devices
$self->run_command ("tar xzf '$devicetar' -C '$rootdir'");
my ($self) = @_;
my $veid = $self->{veid};
+ my $conffile = $self->{veconffile};
my $vestat = $self->ve_status();
}
if (!$vestat->{running}) {
- $self->run_command ("lxc-start -n $veid -f $self->{veconffile}");
+ $self->run_command ("lxc-start -n $veid -f $conffile");
}
- system ("lxc-attach -n $veid --clear-env");
+ system ("lxc-attach -n $veid --rcfile $conffile --clear-env");
}
sub ve_mysql_command {