imported>SylvainBeucler |
imported>SylvainBeucler |
Ligne 1 : |
Ligne 1 : |
− | == Compilation du noyau utilisateur == | + | == Installation == |
| | | |
− | C'est très simple: on compile le noyau Linux avec le paramètre <code>ARCH=um</code> ''pour chaque commande''.
| + | * Installer [[Java]] |
− | | + | * Installer Tomcat: |
− | wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.13.tar.bz2 | + | aptitude install tomcat5.5 |
− | tar xjf linux-2.6.17.13.tar.bz2 | + | sed -i -e 's,#JAVA_HOME=.*,JAVA_HOME=/usr/lib/jvm/java-6-openjdk,' /etc/default/tomcat5.5 |
− | cd linux-2.6.17.13
| + | # TODO: faire ça proprement avec un fichier 'policy' quelque part |
− | | + | sed -i -e 's,#TOMCAT5_SECURITY=.*,TOMCAT5_SECURITY=no,' /etc/default/tomcat5.5 |
− | make defconfig ARCH=um
| + | invoke-rc.d tomcat5.5 restart |
− | make xconfig ARCH=um # facultatif; pensez à activer HOSTFS si besoin
| + | * Installer le module CAS/ |
− | make ARCH=um
| + | wget http://www.ja-sig.org/downloads/cas/cas-server-3.2-release.tar.gz |
− | strip linux
| + | tar xzf cas-server-3.2-release.tar.gz |
− | | + | cd cas-server-3.2 |
− | Cf. [http://user-mode-linux.sourceforge.net/new/source.html Building from source] chez UML.
| + | cp ./modules/cas-server-webapp-3.2.war /var/lib/tomcat5.5/webapps/ |
− | | + | * Visitez http://localhost:8180/cas-server-webapp-3.2/ |
− | == Construction du système de base ==
| + | * Par défaut, un module d'authentification de test est installé: si le login et le mot de passe sont identiques (quel que soit le login), CAS accepte l'authentification. |
− | | + | * Installez le client CAS: |
− | On se propose de construire et de lancer un système UML sans aucun accès root.
| + | wget http://mesh.dl.sourceforge.net/sourceforge/esup-phpcas/esup-phpcas-0.5.1-1.zip |
− | | + | unzip esup-phpcas-0.5.1-1.zip |
− | 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.
| + | cd esup-phpcas-0.5.1-1 |
− | | + | echo "deploy.home=/usr/share/php" >> properties/build.properties |
− | === Tentative 1 ===
| + | ant deploy |
− | | |
− | 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:
| |
− | sudo echo -e "auto lo\niface lo inet loopback" > loop/etc/network/interfaces
| |
− |
| |
− | sudo umount loop/
| |
− | | |
− | == 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
| |
− | iml# 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 "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.switch.ch/aai/docs/shibboleth/SWITCH/1.3/idp/install-idp-1.3-debian.html Install Shibboleth 1.3 Identity Provider on Debian 4.0 (etch), Tomcat only with CAS SSO]: accent sur les certificats x509? |
− | * [http://eggdrop.ch/texts/uml/ Running Debian inside of Debian with User-Mode Linux]
| |
− | * [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.
| |