Salut à toutes et à tous,

Ce sujet part d'ici :
http://forums.fedora-fr.org/viewtopic.php?pid=297458#p297458
pour arriver où nous sommes.

La question était celle du sujet à savoir comment adapter le version de vboxdrv (pilote de VirtualBox) à chaque mise à jour du noyau.

Pmarion a donné cette réponse et je l'en remercie :


-------------------------------------------------------------------------------

@Did
Je ne sais pas si cela devrait faire l'objet d'un autre fil. je ne donnais cela qu'à titre d'exemple des améliorations à faire dans les scripts pour gérer de façon la plus transparente les changements de noyau.
Code:

if ! find /lib/modules/`uname -r` -name "vboxdrv\.*" 2>/dev/null|grep -q
            failure "No suitable module for running kernel found"
fi
Code:

if ! find /lib/modules/`uname -r` -name "vboxdrv\.*" 2>/dev/null|grep -q
     setup
     if ! find /lib/modules/`uname -r` -name "vboxdrv\.*" 2>/dev/null|grep -q
            failure "No suitable module for running kernel found"
     fi
fi
En fait en cas d'absence du vboxdrv.ko dans le /lib/modules/nom_noyau/misc/ je lance la fonction setup qui est censée le construire et je refais un test d'existence du vboxdrv.ko pour sortir en erreur .

Je ne sais pas si cela fonctionne dans tous les cas, mais cela deux ou trois changement de noyau que cela fonctionne.


----------------------------------------------------

Ce script pourrait sûrement s'adapter à d'autres applications, je pense à VmWare par exemple.

A vous de parler 😉
Pour l'instant ma bidouille fonctionne, mais c'est sans garantie ! ! ! ( Version VirtualBox-1.6.2_31466_fedora9-1.i586) .

C'est seulement pour donner des idées aux développeurs de chez Sun.

Mais ce pourrait être aussi typiquement le travail de 'akmod', mais comme je le dis dans mon post il faudrait que akmod démarre avant les autres services qui comptent sur lui.
14 jours plus tard
Bon, ça y est, ça marche..... OUF !!!

Après quelques heures de réflexion et d'apprentissage je viens (ENFIN!) de réussir à faire exécuter le setup de vboxdrv automatiquement au démarrage du PC en cas d'absence de version du noyau lancé...
(C'est compréhensible cette phrase ??? :-D).

Au départ je me suis basé sur le code fourni par Pmarion (voir plus haut) mais celui-ci a du subir des "tronçonnages" dans les copier/coller...

Voici la démarche :

1°)
su - (on passe en root)
(mot de passe + [ENTREE]) (sans commentaires)
cd /etc/init.d (on entre dans le répertoire de vboxdrv)
cp vboxdrv vboxdrvCOPIE (on crée une copie de sauvegarde)
kate vboxdrv (on édite le fichier en mode graphique... note vous pouvez utiliser un autre éditeur par ex : gedit vboxdrv)

2°) sous l'éditeur :
- repérer la section "start()" à la ligne 142 pour moi.
[...]
start()
{
    begin_msg "Starting VirtualBox kernel module"
    if ! running; then
        if ! find /lib/modules/`uname -r` -name "vboxdrv\.*" 2>/dev/null|grep -q vboxdrv; then
            failure "No suitable module for running kernel found"
        fi
[...]
Les lignes 142 à 148 seront remplacées par :
start()
{
    begin_msg "Starting VirtualBox kernel module"
    if ! running; then
        if ! find /lib/modules/`uname -r` -name "vboxdrv\.*" 2>/dev/null|grep -q vboxdrv; then
#            failure "No suitable module for running kernel found" <<<<<<<< ATTENTION : ON DESACTIVE CETTE LIGNE POUR EVITER LE EXIT 0 de "failure"
        ## rajouté par DID : pas de module trouvé pour ce noyau, on lance le setup ####
        echo ""
        echo "Pas de module pour ce noyau, lancement de setup..."
        /etc/init.d/vboxdrv setup
        ## FIN du Rajout par DID ##        
        fi
3°) On sauvegarde le fichier, on ferme l'éditeur.

4°) On redémarre et MIRACLE ça marche 🙂

5°) Les programmeurs vont me passer un savon car je ne sais pas comment fermer PROPREMENT le programme avant de lancer l'exécution de "/etc/init.d/vboxdrv setup" 😉

6°) Fallait-il bien faire comme ça ?????

7°) On s'en fout, ça marche 🙂

8°) ...
je ne sais pas pour Did, mais je maintiens que ma modification est opérationnelle.
Je suis passé en virtualbox 2.0.2 et je l'ai refaite avant le changement de kernel.

Mais de toute façon ce genre de bidouille n'est pas forcément à recommander.

Encore une fois c'est pour montrer qu'un bon script est un script le plus transparent possible pour l'utilisateur.

Un bon script est un script qui se fait oublier. On doit savoir qu'il existe uniquement parce qu'il affiche OK
[OK] ... 😉
23 jours plus tard
Bonjour,

Merci à Did et pmarion pour cette idée géniale de relancer le setup de vbox à chaque changement de kernel
2 mois plus tard
Ça marche toujours pour F10....

... le contraire eut été surprenant 😉

(à consommer sans modération !!!)

PS et pour info : pour VmWare ce n'est pas la peine car celui-ci se charge de tout à son lancement graphique et vous guide idoïnement... 😉
2 mois plus tard
En lisant la doc utilisateur de VirtualBox, je suis tombé sur le chapitre "2.3.2 The VirtualBox kernel module".
VirtualBox uses a special kernel module to perform physical memory allocation and to
gain control of the processor for guest system execution. Without this kernel module,
you will still be able to work with virtual machines in the configuration interface, but
you will not be able to start any virtual machines.
   The VirtualBox kernel module is automatically installed on your system when you
install VirtualBox. To maintain it with future kernel updates, for recent Linux distribu-
tions – for example Fedora Core 5 and later, Ubuntu 7.10 (Gutsy) and later and Man-
driva 2007.1 and later –, generally we recommend installing Dynamic Kernel Module
Support (DKMS)1 . This framework helps to build kernel modules and to deal with
kernel upgrades.
   If DKMS is not already installed, execute one of the following:
    • On an Ubuntu system:
      sudo apt-get install dkms
    • On a Fedora system:
      yum install dkms
    • On a Mandriva system:
      urpmi dkms
  If DKMS is available and installed, the VirtualBox kernel module should always work
automatically, and it will be automatically rebuilt if your host kernel is updated.
Si je me réfère à http://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support cela semble répondre au besoin.

Quelqu'un à t'il testé ?
philippe_PMA wrote:...

Quelqu'un à t'il testé ?
Bon, j'ai installé VirtualBox en tenant compte de ce dkms. Pas de problème d'installation lié à ce dernier.
Plus qu'a attendre une mise à jour de kernel.

Par contre, un problème dû au fait que je suis en PAE.
Dans ce cas, il faut installer le kernel-PAE-devel et non pas le kernel-devel.
Ben si tu le dis .... 🙂
philippe_PMA wrote:Plus qu'a attendre une mise à jour de kernel.
Pour simuler un changement de noyau (ou une nouvelle installation de VirtualBox), il suffit d'effacer le résultat du setup.
rm /lib/modules/$(uname -r)/misc/vboxdrv*
ou
rm /lib/modules/$(uname -r)/extras/vboxdrv*

J'essaie et je vous tiens au courant.
En fait, c'est plus compliqué que cela car avec dkms c'est dkms le chef d'orchestre (c'est lui qui détecte le changement de noyau et non pas l'existence de tel ou tel module, comme le fait le script vboxdrv).
Su une machine virtuelle (pour ne pas planter mon fedora réel), j'ai installé dkms, VirtualBox et j'ai fait une mise à jour noyau
Erreur lors du premier boot.
Pas de vboxdrv ni de guestaddition.
Mais si j'enlève le dernier noyau, dkrm se manifeste lors de la suppression du noyau, et par la suite lors de l'ajout du dernier noyau.
Mystère ! ! !

Avec F9, j'avais essayé dkms et j'avais abandonné.

j'avais essayé aussi dans mes machines virtuelles l'installation de dkms, et les Guestadditions n'étaient pas systématiquement reconstruites.
Est-ce lié à dkms ou à la version de Virtualox ?