Forum Linux.gentoo Service réseau ne veut pas démarrer

Posté par .
Tags : aucun
1
13
jan.
2012

Bonjour,

dans le cadre de mon travail, je me retrouve à travailler sur un système embarqué basé sur gentoo (funtoo).

Je dois donc activer eth1 au démarrage de la machine et j'ai donc suivi ce tutorial.

J'ai donc fais les manipulations suivantes:

  • création du script

    # cd /etc/init.d/
    # ln -s netif.tmpl netif.eth1
    
  • édition du fichier de configuration

    # vi /etc/conf.d/netif.eth1
    
  • ajout du script dans le runlevel par défaut

    # rc-update add netif.eth1 default
    

maintenant, je teste mon script

# /etc/init.d/netif.eth1 start
 * Network interface eth1 up ...


ça fonctionne youpie ... mais si j'arrête le service et que je lance la commande rc, ou que je redémarre la machine, le service n'est pas lancé. On peut noter en passant que eth0 fonctionne et démarre normalement, ce que je trouve très étrange.

rc-update voit bien le service:

# rc-update show default
                local | default
           netif.eth0 | default
           netif.eth1 | default
             netmount | default
                 sshd | default
            syslog-ng | default


par contre, avec rc-status:

# rc-status default
Runlevel: default
 netif.eth0                      [  started  ]
 syslog-ng                       [  started  ]
 netmount                        [  started  ]
 sshd                            [  started  ]
 local                           [  started  ]


Il ne voit pas eth1. Je regarde aussi ici:

# ls -l /etc/runlevels/default/
...
lrwxrwxrwx 1 root root 22 Jan  1 01:56 netif.eth0 -> /etc/init.d/netif.eth0
lrwxrwxrwx 1 root root 22 Jan  1 08:44 netif.eth1 -> /etc/init.d/netif.eth1
...


ce qui me semble correct. (oui, la machine n'est pas encore à l'heure)

Et maintenant, je ne sais plus où chercher, ai-je oublié une étape, une configuration ?

Merci pour votre aide.

  • # simplement

    Posté par . Évalué à 1. Dernière modification le 16/01/12 à 10:11.

    création du script
    cd /etc/init.d/
    ln -s netif.tmpl netif.eth1

    1°) tu es dans /etc/init.d
    et tu fais un ln -s netif.tmp1 netif.eth1
    tu ne fais que faire un lien symbolique, tu ne crees rien.
    et c'est ce lien vers netif.tmp1 qui sera executé au demarrage

    2°) puis tu edites /etc/conf.d/netif.eth1
    mais rien ne le relit à /etc/init.d/netif.eth1

    du coup il ne sera jamais executé au demarrage de la machine.

    je penses qu'il faut que tu fasses :

    rm /etc/init.d/netif.eth1
    ln -s /etc/conf.d/netif.eth1 /etc/init.d/netif.eth1

    d'ailleurs tu dois pouvoir le verifier en faisant un

    ls -l /etc/init.d/netif*

    qui devrait te renvoyer

    lrwxrwxrwx 1 root root 22 Jan 1 08:44 netif.eth1 -> /etc/conf.d/netif.eth1

    • [^] # Re: simplement

      Posté par . Évalué à 2.

      En fait non.

      Sous Funtoo/Gentoo, la convention veut que si tu t'appuies sur les fonctions natives (#!/sbin/runscript) pour créer ton lanceur de service, le fichier de démarrage de celui-ci va automatiquement charger un fichier de configuration du même nom dans /etc/conf.d/

      Par ailleurs, netif.tmpl (s'il fonctionne comme net.lo pour Gentoo) est un script intelligent qui, lancé sous le nom d'un lien symbolique, est capable de chercher le bon fichier de configuration associé au nom du lien lui-même. Cela évite de copier/coller des scripts de démarrage pour charger n fois un service similaire avec une configuration différente.

      Donc en principe, c'est bien /etc/init.d/netif.eth1 qui est appelé par rc, /etc/init.d/netif.tmpl qui sera au final exécuté et la configuration de /etc/conf.d/netif.eth1 qui sera effectivement chargée.

      Maintenant pour en revenir au problème, y'a-t-il des erreurs dans les logs ? dmesg ?

      Si vous n'aimez pas ce commentaire c'est qu'il est ironique.

      • [^] # Re: simplement

        Posté par . Évalué à -1.

        C'est effectivement ce que j'avais compris :)

        Ha oui, j'avais oublié de préciser, je ne trouve pas d'erreurs dans les logs.

  • # résolu

    Posté par . Évalué à 0.

    J'ai enfin trouvé pourquoi ça ne marchait pas. J'avais oublié de précisé (en fait, je n'y pensais même plus) que nous travaillons sur des systèmes destinés à fonctionner dans des trains, donc interdiction d'avoir une batterie.

    Quand j'ajoutais un nouveau service, le mise à jour du cache ne se faisait plus (je pense que la date de la dernière construction du cache de tous les services était dans le futur, et donc comme la date de l'ajout étant toujours antérieure, le système ne reconstruisant jamais le cache).

    Il suffit donc d'exécuter rc-update -u pour reconstruire le cache.

    Merci de vos réponses :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.