Linux-VServer HowTo

Un article de Bulles.
Révision datée du 29 décembre 2005 à 17:21 par Philippe (discussion | contribs) (Outils)
Aller à : navigation, rechercher

Notes sur l'installation de Linux-VServer sur une Debian Sarge / Linux 2.6

Introduction

Il y a déjà quelques HowTo's dans la place, le but ici n'est pas d'un ré-écrire un, mais plutot d'avoir un brain-dump de mon installation...

Pré-requis

Debian Sarge installé et à jour

Noyeau

Il faut avoir un noyeau récent. Plutôt que d'opter pour un noyeau de kernel.org, j'ai utilisé les sources du dernier noyeau Debian dans unstable:

$ apt-get install linux-source-2.6.14
$ cd /usr/src
$ tar xjf linux-source-2.6.14.tar.bz2

J'ai aussi récupéré le fichier de configuration .config du package linux-image-2.6.14-2-686-smp pour avoir une base de configuration correcte.

$ cd /tmp
$ wget ftp://ftp.belnet.be/pub/debian/pool/main/l/linux-2.6/linux-image-2.6.14-2-686-smp_2.6.14-6_i386.deb
$ ar xv linux-source-2.6.14.tar.bz2 data.tar.gz
$ tar xzvf  data.tar.gz ./boot/config-2.6.14-2-686-smp
$ cp boot/config-2.6.14-2-686-smp /usr/src/linux-source-2.6.14/.config

On applique la dernière version stable des patches Linux-VServer sur http://www.13thfloor.at/vserver/s_rel26/v2.01/

$ cd /usr/src
$ wget http://www.13thfloor.at/vserver/s_rel26/v2.01/patch-2.6.14.3-vs2.01.diff.bz2
$ cd linux-source-2.6.14
$ bzcat ../patch-2.6.14.3-vs2.01.diff.bz2 | patch -p1

/!\ Le patch ne s'applique pas entièrement sur un noyeau Debian il faut patcher init/version.c à la main (trivial).

On vérifie les paramètres de Linux-VServer:

$ make menuconfig

La section Linux-VServer resemble à ceci:

[*] Enable Legacy Kernel API
[ ]   Show a Legacy Version ID
[ ] Disable Legacy Networking Kernel API
[*] Enable Proc Security
[*] Enable Hard CPU Limits
[ ]   Limit the IDLE task
    Persistent Inode Context Tagging (UID24/GID24)  --->
[ ] Tag NFSD User Auth and Files
[ ] VServer Debugging Code

Génération d'un noyeau Debian:

$ fakeroot make-kpkg \
  --revision 2.6.14.vs201 \
  --append_to_version -1-vs2.0.1-686-smp \
  --us --uc \
  --rootcmd fakeroot \
  --initrd \
  kernel_image kernel_headers

Et finalement installation:

# dpkg -i /usr/src/kernel-image-2.6.14-1-vs2.0.1-686-smp_2.6.14.vs201_i386.deb

Outils

Je n'ai pas eu trop de succès avec util-vserver de la version stable, le problème venant plus que probablement des chois pris lors de la compilation du noyeau. J'ai donc décidé de recompiler les outils...

Pré-requis:

# apt-get install vlan dietlibc dietlibc-dev e2fslibs-dev beecrypt2 beecrypt2-dev 

Les sources stables sont disponibles elles aussi sur http://www.13thfloor.at/vserver/s_rel26/v2.01/:

$ cd /usr/src
$ wget http://www.13thfloor.at/vserver/s_rel26/v2.01/util-vserver-0.30.209.tar.gz
$ tar xzf util-vserver-0.30.209.tar.gz

Configuration: nous n'allons pas installer le paquet aux endroits habituels:

  • L'ensembles des programmes et librairies sous /usr/local/vserver pour ne pas mélanger avec d'autres paquets
  • Les serveurs virtuels irons dan /home/vservers
$ cd util-vserver-0.30.209
$ ./configure --prefix=/usr/local/vserver --with-vrootdir=/home/vservers --localstatedir=/var --sysconfdir=/etc
[...]
util-vserver 0.30.209

Features:
                      CC: gcc, gcc (GCC) 3.3.5 (Debian 1:3.3.5-13)
                     CXX: g++, g++ (GCC) 3.3.5 (Debian 1:3.3.5-13)
                CPPFLAGS: 
                  CFLAGS: '-g -O2 -std=c99 -Wall -pedantic -W'
                CXXFLAGS: '-g -O2 -ansi -Wall -pedantic -W -fmessage-length=0'
              build/host: i686-pc-linux-gnu/i686-pc-linux-gnu
            Use dietlibc: yes
      Build C++ programs: yes
      Build C99 programs: yes
          Available APIs: compat,v11,v13,fscompat,net,oldproc,olduts
           ext2fs Source: e2fsprogs
   syscall(2) invocation: alternative
     vserver(2) syscall#: 273/glibc

Paths:
                  prefix: /usr/local/vserver
       sysconf-Directory: /etc
           cfg-Directory: /etc/vservers
        initrd-Directory: $(sysconfdir)/init.d
      pkgstate-Directory: /var/run/vservers
         vserver-Rootdir: /home/vservers

Compilation:

$ make
# make install
# make install-distribution

Post-install: s'assurer que /home/vservers est bien chroot barrier et mettre les permissions sur /proc

# setattr --barrier /home/vservers
# /usr/local/vserver/lib/util-vserver/vprocunhide

Création d'un serveur virtuel

Il existe un package vserver-debiantools qui automatise la création de serveurs sous Debian, mais il est basé sur les anciennes fonctions de Linux-VServer.

Pour faciliter les choses, on peux initialiser les valeurs par défaut:

Creation du vserver:

# vserver alesia build --hostname alesia.bulles-dsl --interface eth0:172.16.34.44/26 -m debootstrap -- -d sarge

Cleanup:

# vserver alesia start
# vserver alesia enter
alesia:/# LANG=C
alesia:/# NO_INIT="makedev hwclock.sh urandom mountnfs.sh umountnfs.sh networking ifupdown umountfs halt klogd reboot keymap.sh console-screen.sh checkroot.sh mountvirtfs procps.sh mountall.sh checkfs.sh ifupdown-clean hwclockfirst.sh modutils"
alesia:/# for FILE in $NO_INIT
> do
>   update-rc.d -f $FILE remove
> done

Post-install:

# vserver alesia enter
alesia:/# LANG=C
alesia:/# base-config new

Note: looks like base config looks at testing rather than sarge...

ssh -> listen on own address

Démarrage au boot

Les scripts de démarrage:

# update-rc.d vprocunhide defaults 90 10
# update-rc.d vservers-default defaults 91 09

Pour qu'un VServer démarre au boot: mettre default dans /etc/vservers/<vserver>/apps/init/mark

Liens