Différences entre les pages « UserModeLinux » et « OpenLDAP »

De Cliss XXI
(Différence entre les pages)
Sauter à la navigation Sauter à la recherche
imported>SylvainBeucler
 
imported>SylvainBeucler
m
 
Ligne 1 : Ligne 1 :
== Compilation du noyau utilisateur ==
+
== Suppression des vieux logs ==
  
C'est très simple: on compile le noyau Linux avec le paramètre <code>ARCH=um</code> ''pour chaque commande''.
+
Pour limiter l'accumulation des logs (log.0000000001, log.0000000002, etc.), ajouter dans <code>/var/lib/ldap/DB_CONFIG</code>:
 +
set_flags DB_LOG_AUTOREMOVE
  
  wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.13.tar.bz2
+
Pour le faire manuellement:
  tar xjf linux-2.6.17.13.tar.bz2
+
  cd /var/lib/ldap/
  cd linux-2.6.17.13
+
  db4.2_archive    # lister les logs inutilisés
 +
  db4.2_archive -d  # les supprimer
  
make defconfig ARCH=um
+
Pour maximiser l'effet:
make xconfig ARCH=um # facultatif; pensez à activer HOSTFS si besoin
+
  db4.2_checkpoint -1
make ARCH=um
 
strip linux
 
 
 
Cf. [http://user-mode-linux.sourceforge.net/new/source.html Building from source] chez UML.
 
 
 
== Construction du système de base ==
 
 
 
On se propose de construire et de lancer un système UML sans aucun accès root.
 
 
 
Vraisemblablement, ce n'est pas possible facilement. Cela est dû au manque d'outil en mode utilisateur pour travailler directement sur des systèmes de fichiers ext3.
 
 
 
=== Tentative 1 ===
 
 
 
Essayons de créer un système complet, sans faire d'image, et en possédant tous les fichiers:
 
 
 
La dernière version de debootstrap propose une variante ''fakechroot'' qui permet de l'utiliser sans accès root:
 
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:$PATH # pour trouver la commande 'chroot'
 
fakechroot /usr/sbin/debootstrap --variant=fakechroot sarge sarge-uml/ http://localhost/mirrors/debian
 
/usr/src/linux-2.6.17.13/linux  root=/dev/root rootflags=/home/sylvain/tests/uml/debian/sarge-uml/ rootfstype=hostfs
 
 
 
Résultat: cela ne fonctionne pas, à mon avis parce que dans ce cas précis sarge-uml/dev est un lien symbolique vers /dev.
 
 
 
=== Tentative 2 ===
 
 
 
Essayons à partir d'une image UML déjà opérationnelle.
 
 
 
[http://packages.debian.org/unstable/utils/rootstrap rootstrap] fonctionne apparemment sur ce principe.
 
Je n'ai pas réussi mais je n'ai pas beaucoup cherché.
 
 
 
=== En mode root ===
 
 
 
Faute de mieux, utilisons sudo:
 
 
 
mkdir loop/
 
# image de 1Go, à trous (espace disque progressif)
 
dd if=/dev/null of=image count=0 bs=1G seek=1
 
# on formatte en ext3
 
/sbin/mkfs.ext3 -F image
 
 
sudo mount image loop/ -o loop
 
sudo debootstrap sarge loop/ http://192.168.1.60/mirrors/debian
 
 
# configuration de la console:
 
sudo grep -v tty loop/etc/inittab > inittab.work
 
sudo echo "1:2345:respawn:/sbin/getty 38400 console linux" >> inittab.work
 
sudo mv inittab.work loop/etc/inittab
 
 
# configuration réseau:
 
cat <<'EOF' > interfaces.work
 
auto lo
 
iface lo inet loopback
 
EOF
 
sudo mv interfaces.work loop/etc/network/interfaces
 
 
# fake mtab and fstab
 
cat <<'EOF' > fstab.work
 
proc            /proc          proc    defaults        0 0
 
/dev/ubda      /              auto    defaults,errors=remount-ro 0 1
 
EOF
 
sudo mv fstab.work loop/etc/fstab
 
 
sudo umount loop/
 
 
 
=== Optimiser la taille de l'image pour la distribuer ===
 
 
 
Une image UML contient souvent des zones vides, où il n'y a pas encore de fichiers.
 
 
 
L'image ci-dessus réserve 1Go mais n'en occupe que 230Mo grâce à la création d'image "à trous" (''sparse'' en anglais).
 
 
 
$ ls -lh image
 
-rw-r--r--  1 sylvain sylvain 1,0G 2006-09-18 15:55 image
 
$ du -sh image
 
  234M    image
 
 
 
<code>df -h</code> dans UML indique une utilisation de 178Mo, donc on doit pouvoir encore améliorer (defrag?).
 
 
 
D'autres méthodes (dd sur /dev/zero par exemple) n'en tiennent pas compte.
 
 
 
 
 
Pour optimiser une image "pleine":
 
cp --sparse=always image image.sparse
 
 
 
Pour envoyer une image par le réseau en respectant les trous:
 
tar cSf image.tar image # S pour "sparse"
 
 
 
== Réseau ==
 
 
 
Imaginez un câble virtuel qui relie la machine hôte et la machine UML, une carte carte réseau virtuelle à chaque bout. Chaque carte a une adresse IP, mais comme sur un réseau classique, les deux cartes ne doivent pas avoir la même adresse.
 
 
 
=== mode root ===
 
 
 
host# sudo /usr/src/linux ubda=sarge-debootstrap eth0=tuntap,,,192.168.1.101
 
 
 
Notez les messages d'UML indiquant la mise en place d'une interface tuntap <code>tap0</code>, une route pour accéder à la machine virtuelle, et un partage de connexion pour que la machine virtuelle puisse accéder au réseau extérieur.
 
 
 
Puis dans UML:
 
 
 
uml# ifconfig eth0 192.168.1.201
 
 
=== Mode utilisateur avec tuntap ===
 
 
 
Pour utiliser tuntap, il faut créer à l'avance (et en mode root) une interface tap0 et lui assigner une adresse IP.
 
 
 
# tunctl -u sylvain
 
Set 'tap0' persistent and owned by uid 1000
 
 
 
Puis il faut donner des droits aux utilisateurs non-privilégiés d'utiliser tuntap (en mode root aussi):
 
 
 
chmod 666 /dev/net/tun
 
 
 
C'est une solution efficace mais qui nécessite plusieurs étapes de préconfiguration en mode root, accompagné de permissions lâches sur tuntap.
 
 
 
 
 
=== Mode utilisateur avec tuntap (2) ===
 
 
 
Mettre l'utilisateur concerné dans le groupe <code>uml-net</code>. Ce groupe a accès au programme setuid <code>/usr/lib/uml/uml_net</code>, qui peut lancer et configurer des interfaces tuntap. La sécurité du procédé n'est pas grande (l'utilisateur peut créer de nouvelles interfaces réseau et perturber iptables par exemple), mais est facile à mettre en place.
 
 
 
host# /usr/src/linux ubda=sarge-debootstrap umid=deb eth0=tuntap,,,10.10.10.10
 
uml# ifconfig eth0 10.10.10.11
 
uml# route add default gw 10.10.10.10
 
 
 
=== Mode utilisateur avec slirp ===
 
 
 
Lancer UML avec une interface slirp, en utilisant le binaire 'fullbolt' (qui s'affranchit de la limitation débit de 10ko/s dans slirp 'classique'):
 
 
 
host# /usr/src/linux ubda=sarge-debootstrap umid=deb eth0=slirp,,/usr/bin/slirp-fullbolt
 
 
 
Dans UML, quelques étapes spécifiques à slirp sont nécessaires:
 
 
 
# Configurer l'interface sur 10.2.0.15 (IP de choix pour slirp)
 
ifconfig eth0 10.2.0.15
 
# Utiliser la redirection DNS 10.0.2.3
 
echo "nameserver 10.0.2.3" > /etc/resolv.conf
 
# Ajouter une route par défaut vers eth0:
 
route add default dev eth0
 
  
 
== Liens ==
 
== Liens ==
  
* [http://user-mode-linux.sourceforge.net/new/ The User-mode Linux Kernel Home Page]: lien direct vers la nouvelle version du site - on s'y retrouve mieux
+
* [http://www.intevation.de/roundup/kolab/issue1374 kolab/issue1374 (OpenLDAP BDB: too many log files)]: purge saine et manuelle des logs
* [http://eggdrop.ch/texts/uml/ Running Debian inside of Debian with User-Mode Linux]
+
* [http://deliver.pigeonair.net/doc/recipes/postfix/postfix/x98.html Configuring OpenLDAP]: syntaxe pour DB_LOG_AUTOREMOVE dans DB_CONFIG
* [http://www.metz.supelec.fr/metz/personnel/galtier/PagesPerso/TutorielUML/index.html Tutoriel User Mode Linux]: avec introduction à SKAS et réseau
 
 
 
* [http://user-mode-linux.sourceforge.net/UserModeLinux-HOWTO-6.html#ss6.11 Slirp] dans le UML HOWTO.
 
 
 
== Dépannage ==
 
 
 
Kernel panic - not syncing: start_userspace : expected SIGSTOP, got status = 256
 
 
 
Cf. http://www.mail-archive.com/user-mode-linux-devel@lists.sourceforge.net/msg03414.html
 
 
 
Votre noyau (hôte) est, si j'ai bien compris, mal configuré. Recompilez-le ou utilisez-en un autre.
 

Version du 4 mai 2009 à 14:32

Suppression des vieux logs

Pour limiter l'accumulation des logs (log.0000000001, log.0000000002, etc.), ajouter dans /var/lib/ldap/DB_CONFIG:

set_flags DB_LOG_AUTOREMOVE

Pour le faire manuellement:

cd /var/lib/ldap/
db4.2_archive     # lister les logs inutilisés
db4.2_archive -d  # les supprimer

Pour maximiser l'effet:

db4.2_checkpoint -1

Liens