imported>SylvainBeucler |
imported>SylvainBeucler |
Ligne 1 : |
Ligne 1 : |
− | == Compilation du noyau utilisateur ==
| + | (apparemment il n'y a qu'un seul modèle qui s'appelle "Labtec Webcam", je n'ai pas plus de précision) |
| | | |
− | C'est très simple: on compile le noyau Linux avec le paramètre <code>ARCH=um</code> ''pour chaque commande''.
| + | Installation: |
| + | aptitude install gspca-modules-2.6.18-5-k7 |
| | | |
− | wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.13.tar.bz2
| + | C'est tout. |
− | tar xjf linux-2.6.17.13.tar.bz2
| |
− | cd linux-2.6.17.13
| |
− | | |
− | make defconfig ARCH=um
| |
− | make xconfig ARCH=um # facultatif; pensez à activer HOSTFS si besoin
| |
− | 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:
| |
− | 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://mxhaard.free.fr/spca5xx.html Site du pilote]: mentionne le code <code>spca561a</code> pour cette webcam. |
− | * [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.
| |