[gull] Wifi en mode master

Marc SCHAEFER schaefer at alphanet.ch
Mon May 14 14:17:04 CEST 2007


(ce message n'est pas formaté en 80 colonnes)

On Sun, May 13, 2007 at 03:55:48PM +0200, Guillaume Yziquel wrote:
> > It is supported by the mac80211 version of the driver, I believe.
> 
> et que

Pour installer une source de module kernel sur environnement standard
(Debian stable), faire ainsi:

   - dans ce cas, vérifier que `non-free' est mentionné dans les sources
     d'installation (madwifi contenant du code propriétaire du
     fabricant)

   - installer le minimum nécessaire pour compiler

        apt-get install build-essential

   - comme il s'agit d'un module kernel, il faut les entêtes
     de ce dernier (linux-headers-2.6-486 dans mon cas, mais
     adapter en fonction de la version réellement installée du
     kernel)

        apt-get install linux-headers-2.6-486

   - installer la source du pilote concerné (ce qui installe
     également les dépendances ad-hoc comme module-assistant)

        apt-get install madwifi-source

   - utiliser le module-assistant pour générer et installer
     un package correct

       module-assistant auto-install madwifi-source

Je n'ai pas vérifié si cette source peut implémenter la
fonctionnalité désirée.

Bien sûr, ici, c'est quand tout va bien et que le pilote inclus dans la
version stable de Debian correspond au besoin. Sinon, il y a plusieurs
possibilités, comme par exemple de patcher la source du pilote.

Une autre possibilité est d'exécuter simplement la fonction prépare de
module-assistant (p.ex. lancer module-assistant sans paramètres), ce qui
va préparer les liens symboliques ad-hoc, voire télécharger les packages
manquants, puis de faire manuellement.

> Bon. J'ai pas bien compris le rôle de hostapd, et je me focalise sur

Certainement que c'est ce qui va gérer les fonctions de l'Access Point
(mode managed).

> http://intellinuxwireless.org/?p=mac80211&n=HOWTO-mac80211

Je vois plusieurs problèmes, dont le fait qu'apparemment il faut patcher
le kernel en plus de simplement compiler un pilote. Je n'ai pas
déterminé si le kernel standard contient ou non déjà ce patch.

> > Kernel Makefile not found at '/lib/modules/2.6.18-4-amd64/source/'

la source du kernel n'est pas installée, ou le lien n'est pas configuré
(ou Debian n'utilise pas cette convention, personnellement soit je
laisse module-assistant faire tout le travail, soit je fais à la main
*hors du système* comme je vais montrer ci-après).

D'Inverno Jeremy <jeremy.dinverno at gmail.com> a écrit:
> Perso je n'ai pas de lien /lib/modules/`uname -r`/sources mais j'ai un
> lien build vers les sources de mon kernel.
> jeremy at neptune:/lib/modules/2.6.20-15-generic$ ls -l build
> lrwxrwxrwx 1 root root 40 2007-04-25 11:33 build -> /usr/src/linux-headers-2.6.20-15-generic

non, il s'agit en fait du lien aux entêtes du kernel, pas à la source.
Les entêtes sont normalement suffisant pour compiler un module (un
sous-système) avec un système Debian (mais évidemment pas pour patcher
et recompiler le kernel).

Dans ce cas il nous faut effectivement télécharger un kernel
avec patches Debian et le compiler:

   schaefer at generic:~/PORTED/KERNEL$ su -c 'apt-get update && apt-get install linux-source-2.6.18'
   schaefer at generic:~/PORTED/KERNEL$ tar xvjf tar xvjf /usr/src/linux-source-2.6.18.tar.bz2
   schaefer at generic:~/PORTED/KERNEL$ su -c 'apt-get --purge remove linux-source-2.6.18'

ensuite:

   schaefer at generic:~/PORTED/madwifi/mac80211-7.0.9$ env KSRC=~/PORTED/KERNEL/linux-source-2.6.18 make
   schaefer at generic:~/PORTED/madwifi/mac80211-7.0.9$ env KSRC=~/PORTED/KERNEL/linux-source-2.6.18 make patch_kernel

(je n'aime pas changer des liens symboliques dans le système; en plus,
 il n'est pas obligatoire que l'on compile sur la machine finale).

(on pourrait utiliser export, mais je n'aime pas trop le risque d'erreur
d'avoir une variable KSRC qui se promène).

enfin, préparation du package kernel (ici on suppose qu'il n'y a pas de
sous-système supplémentaire à compiler, ce que Debian appelle des
modules et gère via module-assistant, ou par kernel-package,
voir notamment debian/docs/README.modules dans la source du kernel):

reprendre la configuration:
   schaefer at generic:~/PORTED/KERNEL/linux-source-2.6.18$ cp /boot/config-2.6.18-4-486 .config && make oldconfig

   dire Y à: Improved wireless configuration API (CFG80211) [N/m/y] (NEW)
             et à 2-3 trucs du genre

ensuite:
   schaefer at generic:~/PORTED/KERNEL/linux-source-2.6.18$ su -c 'apt-get install fakeroot kernel-package'

   schaefer at generic:~/PORTED/KERNEL/linux-source-2.6.18$ fakeroot make-kpkg --initrd kernel-image --revision=madwifi.0

le kernel ainsi généré contiendra le pilote madwifi et les modifications
à la pile réseau nécessaires (contrairement à l'habitude de livrer les
sous-systèmes dans des packages séparés).

PS: dans ce genre de situation, on n'est pas forcément assuré que les
    patches de la distribution ne sont pas incompatibles ou déjà appliqués:
    il faut éventuellement lire la documentation des patches déjà appliqués.
    Une solution classique était de prendre une version `pure' du kernel
    (kernel.org), sans aucun patch de distribution. En 2.6, c'est courir
    à l'échec, vu la qualité très faible des kernels officiels et le
    nombre de patches nécessaires pour un fonctionnement minimalement
    correct.




More information about the gull mailing list