Linux-VServer HowTo : Différence entre versions
(→Noyeau) |
(→Liens) |
||
Ligne 162: | Ligne 162: | ||
* [http://linux-vserver.org/alpha+util-vserver alpha util-vserver] | * [http://linux-vserver.org/alpha+util-vserver alpha util-vserver] | ||
* [http://www.nongnu.org/util-vserver/doc/conf/configuration.html Flower page] | * [http://www.nongnu.org/util-vserver/doc/conf/configuration.html Flower page] | ||
+ | * [http://www.13thfloor.at/old/VServer/HowTo_LVMQS.shtml VS Secure Quota HowTo] |
Version du 23 janvier 2006 à 20:16
Notes sur l'installation de Linux-VServer sur une Debian Sarge / Linux 2.6
Sommaire
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
Et dans la section Device Drivers / Block Devices:
<M> Virtual Root device support
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. Nous ferons donc notre création à la main, ce n'est pas compliqué!
Pour faciliter les choses, on va enregistrer les valeurs par défaut:
- Mirroir: /etc/vservers/.defaults/apps/debootstrap/mirror contient ftp://ftp.belnet.be/pub/debian
Creation du vserver:
# PKG_EXCLUDE="dhcp-client,fdutils,iptables,libpcap0.7,makedev,pciutils,ppp,pppconfig,pppoe,pppoeconf" # vserver alesia build \ > --hostname alesia.bulles-dsl \ > --interface eth0:172.16.34.44/26 \ > -m debootstrap -- -d sarge -- --exclude=${PKG_EXCLUDE}
Note: J'ai utilisé debootstrap de testing, pour éviter certain warnings
Post-install: il faut se débarrasser de tout ce qui touche au hardware lors du boot.
# 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
Les packages installés par debootstrap sont vraiment le minimum. Le plus simple est d'exécuter base-config.
# vserver alesia enter alesia:/# LANG=C alesia:/# base-config new
Note: Il semble que debootstrap utilise testing pour ses packages!
Accès réseau
La plupart des services réseau font un bind sur l'ensembles des interfaces réseau disponibles. Il faut s'assurer que l'hôte et les serveurs virtuels n'écoutent que sur leurs IP respectives.
Par exemple pour SSH, dans /etc/ssh/sshd_config
ListenAddress 172.16.34.44
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