[pve-devel] [PATCH] add Alpine Linux distribution

Dietmar Maurer dietmar at proxmox.com
Tue Dec 8 09:27:56 CET 2015


First, thanks for the patch.

But what about networking? From

http://wiki.alpinelinux.org/wiki/Configure_Networking

It looks that they use debian like networking configuration?

> On December 8, 2015 at 8:00 AM Jens Vehlhaber <jens at eisfair.org> wrote:
> 
> 
> Signed-off-by: Jens Vehlhaber <jens at eisfair.org>
> ---
>  src/PVE/LXC.pm              |  4 ++--
>  src/PVE/LXC/Setup.pm        |  5 ++++-
>  src/PVE/LXC/Setup/Alpine.pm | 48
> +++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 54 insertions(+), 3 deletions(-)
>  create mode 100644 src/PVE/LXC/Setup/Alpine.pm
> 
> diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm
> index 38ce71c..40d320f 100644
> --- a/src/PVE/LXC.pm
> +++ b/src/PVE/LXC.pm
> @@ -98,7 +98,7 @@ my $confdesc = {
>      ostype => {
>  	optional => 1,
>  	type => 'string',
> -	enum => ['debian', 'ubuntu', 'centos', 'fedora', 'opensuse', 'archlinux'],
> +	enum => ['debian', 'ubuntu', 'centos', 'fedora', 'opensuse', 'archlinux',
> 'alpine'],
>  	description => "OS type. Corresponds to lxc setup scripts in
> /usr/share/lxc/config/<ostype>.common.conf.",
>      },
>      console => {
> @@ -1072,7 +1072,7 @@ sub update_lxc_config {
>      my $custom_idmap = grep { $_->[0] eq 'lxc.id_map' } @{$conf->{lxc}};
>  
>      my $ostype = $conf->{ostype} || die "missing 'ostype' - internal error";
> -    if ($ostype =~ /^(?:debian | ubuntu | centos | fedora | opensuse |
> archlinux)$/x) {
> +    if ($ostype =~ /^(?:debian | ubuntu | centos | fedora | opensuse |
> archlinux | alpine)$/x) {
>  	$raw .= "lxc.include = /usr/share/lxc/config/$ostype.common.conf\n";
>  	if ($unprivileged || $custom_idmap) {
>  	    $raw .= "lxc.include = /usr/share/lxc/config/$ostype.userns.conf\n"
> diff --git a/src/PVE/LXC/Setup.pm b/src/PVE/LXC/Setup.pm
> index 20f8530..b932be6 100644
> --- a/src/PVE/LXC/Setup.pm
> +++ b/src/PVE/LXC/Setup.pm
> @@ -11,6 +11,7 @@ use PVE::LXC::Setup::Redhat;
>  use PVE::LXC::Setup::Fedora;
>  use PVE::LXC::Setup::SUSE;
>  use PVE::LXC::Setup::ArchLinux;
> +use PVE::LXC::Setup::Alpine;
>  
>  my $plugins = {
>      debian    => 'PVE::LXC::Setup::Debian',
> @@ -19,6 +20,7 @@ my $plugins = {
>      fedora    => 'PVE::LXC::Setup::Fedora',
>      opensuse  => 'PVE::LXC::Setup::SUSE',
>      archlinux => 'PVE::LXC::Setup::ArchLinux',
> +    alpine    => 'PVE::LXC::Setup::Alpine',
>  };
>  
>  my $autodetect_type = sub {
> @@ -42,8 +44,9 @@ my $autodetect_type = sub {
>  	return "redhat";
>      } elsif (-f  "$rootdir/etc/arch-release") {
>  	return "archlinux";
> +    } elsif (-f  "$rootdir/etc/alpine-release") {
> +	return "alpine";
>      }
> -
>      die "unable to detect OS disribution\n";
>  };
>  
> diff --git a/src/PVE/LXC/Setup/Alpine.pm b/src/PVE/LXC/Setup/Alpine.pm
> new file mode 100644
> index 0000000..b32c798
> --- /dev/null
> +++ b/src/PVE/LXC/Setup/Alpine.pm
> @@ -0,0 +1,48 @@
> +package PVE::LXC::Setup::Alpine;
> +
> +use strict;
> +use warnings;
> +
> +use Data::Dumper;
> +use PVE::LXC;
> +use PVE::Network;
> +use File::Path;
> +
> +use PVE::LXC::Setup::Base;
> +
> +use base qw(PVE::LXC::Setup::Base);
> +
> +sub new {
> +    my ($class, $conf, $rootdir) = @_;
> +    my $self = { conf => $conf, rootdir => $rootdir, version => 0 };
> +    $conf->{ostype} = "alpine";
> +    return bless $self, $class;
> +}
> +
> +sub template_fixup {
> +    my ($self, $conf) = @_;
> +    my $rootdir = $self->{rootdir};
> +    # enable networking service
> +    $self->ct_symlink('/etc/init.d/networking',
> +                      '/etc/runlevels/boot/networking');
> +    # fixup any symlinks
> +    $self->ct_symlink('/etc/init.d/bootmisc',
> +                      '/etc/runlevels/boot/bootmisc');
> +    $self->ct_symlink('/etc/init.d/hostname',
> +                      '/etc/runlevels/boot/hostname');
>                                            
> +    # fix stop system                  
> +    $self->ct_symlink('/etc/init.d/killprocs',
> +                      '/etc/runlevels/shutdown/killprocs'); 
> +    $self->ct_symlink('/etc/init.d/savecache',
> +                      '/etc/runlevels/shutdown/savecache');
>                            
> +}
> +
> +sub setup_init {
> +    # Nothing to do
> +}
> +
> +sub setup_network {
> +    # Nothing to do
> +}
> +
> +1;
> -- 
> 2.4.1
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel at pve.proxmox.com
> http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 




More information about the pve-devel mailing list