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_small
modprobe hostap_uml
'iwconfig wlan0 mode ad-hoc
' puis 'ifconfig wlan0 192.168.100.10 up
'ping 192.168.100.11
64 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=um
arch/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 uml
Le 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