Le projet Wifi for UML propose un outil pour faire participer une machine UML à un réseau Wifi simulé (mode ad-hoc uniquement).
Pour l'utiliser, il faut :
Le plus simple pour commencer est d'utiliser des briques toutes prêtes (voir mode d'emploi ci-dessous). Cependant si les briques existantes ne sont pas satisfaisantes, il est possible de les reconstruire (voir explications ci-dessous).
UML, téléchargez wl-0.1.tgz (copie locale) et décompressezUML/wl-0.1, tapez 'qmake'UML/wl-0.1, tapez 'make'UML/wl-0.1/wlobject.cpp avant de refaire un make :
cout" en "std::cout"#include <iostream> à la liste des includes au début du fichieruname -r')UML/Noyaux, téléchargez un des 2 fichiers suivants :
chmod +x linux-wl-2.6host'Dans le répertoire UML/SysFich téléchargez le système de fichiers root_fs_debian2.2_small.bz2 et décompressez-le. Ce systèmme de fichiers contient les modules associés au noyau ci-dessus et correspondant au pilote hostap adapté et à l'implémentation du NIST d'AODV ("kernel AODV").
note sur la mobilité dans le simulateur :
Ce simulateur ne permet pas de spécifier les mouvements des noeuds. Le répertoire UML/wl-0.1 contient un fichier ".uml_wifi.cfg" qui indique la probabilité qu'un noeud a de se déplacer et sa vitesse de déplacement. Si vous ne voulez pas que les noeuds bougent, mettez 'fix_probability' à 1, et bien sur si vous voulez que tous les noeuds bougent (les mouvements seront aléatoires) mettez cette probabilité à 0 (avant de démarrer le simulateur). Pour la suite de cette partie, désactivez la mobilité (fix_probability=1). J'ai étendu le simulateur pour permettre la description de mouvements individuels controlés; voir MobUML.
UML/wl-0.1, tapez './wl'Noyaux/linux-wl-2.6host umid=ordi0 ubd0=cow0,SysFich/root_fs_debian2.2_smallmodprobe hostap_uml'iwconfig wlan0 mode ad-hoc' puis 'ifconfig wlan0 192.168.100.10 up'
ping 192.168.100.1164 bytes from 192.168.100.11: icmp_seq=417 ttl=64 time=123.4 ms) et les paquets échangés entre les 2 machines sont représentés par des points noirs dans le simulateur : 

modprobe kernel_aodv_22 use_dev=wlan0'. On peut visulaiser l'échange de paquets "hello".echo 1 > /proc/sys/net/ipv4/ip_forward'tcpdump -i wlan0'shutdown -h now) puis quittez le simulateur.Si les noyaux compilés disponibles sur le site ne contiennent pas les options que l'on désire par ailleurs (par exemple "CONFIG_FILTER" à "yes" pour faire fonctionner un serveur DHCP), il reste la possibilité de construire soi-même un noyau spécifiquement pour Wifi for UML en incluant netbus (les explications suivantes correspondent à la traduction des instructions données sur le site, complétées par des corrections que j'ai du apporter pour résoudre un problème connu d'UML) :
UML/Noyaux/ et renommez linux-2.4.24 en linux-2.4.24-wifi)UML/Noyaux/linux-2.4.24-wifi et appliquez le patch (bzcat uml-patch-2.4.24-1.bz2 | patch -p1)/UML/Wifi/)netbus_kern.c et netbus_user.c dans le répertoire arch/um/driver/ du noyau en construction (cp UML/Wifi/uml-netbus-0.1/netbus_* UML/Noyaux/linux-2.4.24-wifi/arch/um/drivers/)netbus.h dans le répertoire arch/um/include/ du noyau en construction (cp UML/Wifi/uml-netbus-0.1/netbus.h UML/Noyaux/linux-2.4.24-wifi/arch/um/include/)UML/Noyaux/linux-2.4.24-wifi : cat ../../Wifi/uml-netbus-0.1/uml-netbus-0.1.patch | patch -p1)make xconfig ARCH=umarch/um/os-Linux/process.c :
#include <linux/unistd.h> à la liste des includevoid os_usr1_process(int pid) : { syscall(__NR_tkill, pid, SIGUSR1); }make dep ARCH=um && make linux ARCH=um(les explications suivantes correspondent à la traduction des instructions données sur le site)
UML/Wifi/)UML/Wifi/)hostap_uml.c fourni par hostap-uml-0.1 dans le répertoire driver/modules/ du driver hostap (cp hostap-uml-0.1/hostap_uml.c hostap-driver-0.1.2/driver/modules/)UML/Wifi/hostap-driver-0.1.2 : cat ../hostap-uml-0.1/hostap-uml-0.1.patch | patch -p1)KERNEL_PATH pointe vers le noyau UML (/home/galtier/UML/Noyaux/linux-2.4.24-wifi)make umlLe répertoire UML/Wifi/hostap-driver-0.1.2/driver/modules doit maintenant contenir hostap_crypt_wep.o, hostap_uml.o et hostap.o. Une fois le simulateur wl démarré et une machine UML patchée bootée, il suffit d'insérer les modules hostap :
mount none /mnt -t hostfs insmod /mnt/home/galtier/UML/Wifi/hostap-driver-0.1.2/driver/modules/hostap.o insmod /mnt/home/galtier/UML/Wifi/hostap-driver-0.1.2/driver/modules/hostap_uml.o