Outils pour utilisateurs

Outils du site


transmission_usb_aux_os_invites

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

transmission_usb_aux_os_invites [2007/12/15 09:57] (Version actuelle)
tyrtamos créée
Ligne 1: Ligne 1:
 +====== VMware: permettre à la suse 10.2 hôte de donner accès à l'USB aux OS invités ======
  
 +[suse 10.2]
 +
 +<​file>​
 +Note pour la suse 10.3 en tant qu'OS hôte: l'USB est transmis sans recompilation du noyau, mais il faut quand même que la ligne suivante soit dans le fichier fstab (merci à Li-nox!):
 +
 +  /​dev/​bus/​usb ​  /​proc/​bus/​usb ​  ​usbfs ​  ​default ​  0 0 
 +
 +</​file>​
 +
 +===== Problème =====
 +
 +Les machines virtuelles de VMware Server installées sur une suse 10.2 hôte, ne peuvent pas donner aux OS invités, l'​accès aux périphériques USB (sauf clavier et souris USB).
 +
 +La raison tient aux modifications de la suse 10.2 concernant l'​usbfs (pour des raisons de sécurité concernant l'​attribution des droits aux disques usb).
 +
 +Bon, je ne sais pas si c'est irrémédiable ou si c'est déjà réparé, ni même si la 10.3 aura le même problème. ​
 +
 +En tout cas, ce tuto peut aussi servir de fil conducteur pour recompiler le noyau!
 +
 +===== Solution =====
 +
 +Réinstaller la fonction manquante de l'​usbfs sur la suse 10.2 "​hôte"​ en recompilant le noyau après avoir réactivé le paramètre de configuration du noyau: ​
 +
 +  CONFIG_USB_DEVICEFS=y
 +
 +Attention: la compilation du noyau est une opération complexe. Et ce tuto ne traite strictement que ce qui est nécessaire pour résoudre le problème posé.
 +
 +===== Préparation de la compilation =====
 +
 +Installez (avec yast), s'ils n'y sont pas déjà, les packages suivants, nécessaires à la compilation du noyau:
 +
 +  * gcc
 +  * make
 +  * binutils
 +  * ncurses
 +  * ncurses-devel
 +  * kernel-source
 +  * kernel-syms (optionnel)
 +  * kernel-doc (optionnel)
 +
 +Ces installations entraînent d'​autres installations pour résoudre les dépendances (laissez faire yast).
 +
 +Ouvrez une console sous root, et placez-vous dans "/​usr/​src/​linux":​
 +
 +  # cd /​usr/​src/​linux  ​
 +
 +Nettoyez les fichiers résultant d'une éventuelle précédente compilation:​
 +
 +  # make mrproper  ​
 +
 +Lancez la configuration du noyau:
 +
 +  # make cloneconfig  ​
 +
 +Cette commande, propre à suse, prend la configuration actuelle (/​proc/​.config.gz) comme base pour le programme de configuration du noyau, et crée le fichier /​usr/​src/​linux/​.config
 +
 +Lancez le programme de configuration:​
 +
 +  # make menuconfig ​
 +
 +Il vient une fenêtre (dans la console, c'est pour ça qu'il fallait le paquet ncurse!) qui présente en arborescence tous les paramètres du noyau. ​
 +
 +Il faut naviguer dans l'​arborescence pour trouver la dernière ligne:
 +
 +<​code>​
 +Device Drivers
 +       |
 +       ​+-->​ USB support
 +                   |
 +                   ​+-->​ Miscellaneous USB options
 +                                      |
 +                                      +--> [ ] USB device filesystem  ​
 +</​code>​
 +
 +Sélectionnez cette dernière ligne, et faites "​y"​ -> les crochets au début de la ligne deviennent "​[*]",​ ce qui signifie que cette fonction sera prise en compte dans le nouveau noyau.
 +
 +Avec la flèche "​->"​ du clavier, sortez des différents menus en sélectionnant "​exit"​ et [entrée], le dernier vous propose de sauvegarder le fichier de configuration du noyau, ce que vous acceptez. Il se crée alors le nouveau fichier de configuration "/​usr/​src/​linux/​.config"​.
 +
 +En fait, ce programme de configuration a "​simplement activé"​ le paramètre "​CONFIG_USB_DEVICEFS" ​ qui était commenté, en le mettant à "​CONFIG_USB_DEVICEFS=y"​.
 +
 +===== Compilation du noyau =====
 +
 +Il faut maintenant lancer la compilation du noyau et de ses modules par:
 +
 +  # make 
 +
 +Cela dure un "​certain temps" (1 à 2 heures), mais vous pouvez continuer à travailler pendant ce temps-là sur votre machine (à condition qu'​elle ait une puissance suffisante).
 +
 +J'ai vu dans le déroulement de la compilation s'​afficher un certain nombre de "​warning"​ qui jettent un doute sur la qualité du code! Exemples: des variables non initialisées,​ ou des variables déclarées mais non utilisées, ou encore des pointeurs passés en integer sans cast, etc...). Est-ce que ça vient du fait que j'​utilise la dernière version du compilateur qui fait plus de vérifications que celle des développeurs?​ Je ne sais pas. Bon, le résultat a l'air de marcher quand même...
 +
 +Puis, installez les modules du noyau par:
 +
 +  # make modules_install ​
 +
 +==> Les modules compilés s'​installent dans /​lib/​modules/​2.6.18.2-34-default (avec le numéro de version en-cours!)
 +
 +Puis, enfin, installer le nouveau noyau par:
 +
 +  # make install ​
 +
 +Avec cette opération, il y a mise à jour des fichiers de /boot suivants:
 +
 +  * System.map-2.6.18.2-34-default (+ sauvegarde de l'​ancien avec l'​extension "​.old"​)
 +  * vmlinuz-2.6.18.2-34-default (+ sauvegarde de l'​ancien avec l'​extension "​.old"​)
 +  * lien vmlinuz sur vmlinuz-2.6.18.2-34-default
 +  * initrd-2.6.18.2-34-default
 +  * lien initrd sur initrd-2.6.18.2-34-default
 +
 +L'​ancien initrd n'est pas sauvegardé,​ mais il serait automatiquement restauré si on avait à réinstaller le package de l'​ancien noyau puisqu'​il en fait partie.
 +
 +Il faut ensuite vérifier que le menu de grub lance le bon noyau! En ce qui me concerne, je remplace "​kernel /​boot/​vmlinuz-2.6.18.2-34-default" ​ par "​kernel /​boot/​vmlinuz ..." puisque vmlinuz est un lien qui pointe toujours sur le bon noyau. Pareil pour initrd.
 +
 +===== Rétablir le lien dans le fstab de la suse 10.2 =====
 +
 +Il faut ajouter la ligne suivante dans fstab:
 +
 +  /​dev/​bus/​usb ​  /​proc/​bus/​usb ​  ​usbfs ​  ​default ​  0 0 
 +
 +Il ne reste plus qu'à rebooter... en croisant les doigts! (Chez moi, ça a marché :-D ).
 +
 +===== Et si ça ne marche pas? =====
 +
 +Le pire qui puisse vous arriver est le message: "​kernel panic"​!
 +
 +Remède: redémarrez avec le cd ou dvd d'​installation,​ et demandez une réparation. Le but est de remettre le noyau "​normal"​... et de recommencer!
 +
 +Mais je n'ai pas (encore) eu à le faire!
 +
 +Bonne chance!
 +
 +===== Comment donner l'​accès à un périphérique usb dans un OS invité? =====
 +
 +Une fois la compilation du noyau effectuée, et la ligne supplémentaire de fstab active, il n'y a pas d'​autre effet pour l'OS hôte, que de lui donner la capacité à transmettre l'usb aux OS invités.
 +
 +Pour transmettre à un OS invité en particulier,​ il faut avec la console vmware:
 +
 +    * arrêter l'OS invité,
 +
 +    * et lui ajouter un contrôleur usb (virtuel) dans ses réglages.
 +
 +L'OS invité étant ensuite relancé, on accède au menu de la console vmware (VM) et on trouve les périphériques mobiles, dont usb, qui ont été détectés et qui sont disponibles.
 +
 +Il ne reste plus qu'à cocher les périphériques qu'on veut voir raccordés à l'OS invité.
 +
 +===== Et en cas de mise à jour du kernel? =====
 +
 +Désolé, mais il vous faudra recommencer!
 +
 + 
transmission_usb_aux_os_invites.txt · Dernière modification: 2007/12/15 09:57 par tyrtamos