# [Boot] Clock problème

## sun_cracker

Bonjour à tous,

j'ai du remettre une nouvelle pile dans ma carte mère.

Suite à cela j'ai un problème lors du démarrage de Gentoo :

Le pc reste bloqué au message suivant :

"setting system clock using the hardware clock....."

Je peux faire CTRL+C et me loguer en superuser mais quoi faire ensuite ? 

Quelqu'un aurait-t-il une idée de solution ?

Merci à tous !   :Rolling Eyes: 

----------

## razer

Régler la bonne heure dans le bios ?

----------

## sun_cracker

 *razer wrote:*   

> Régler la bonne heure dans le bios ?

 

J'ai déjà vérifié et l'heure du bios est à l'heure.

Sun

----------

## AgentMat

J'avais le même problème que toi avant, vérifie la config de ton /etc/conf.d/clock :

```
# Set CLOCK to "UTC" if your system clock is set to UTC (also known as

# Greenwich Mean Time). If your clock is set to the local time, then

# set CLOCK to "local". Note that if you dual boot with Windows, then

# you should set it to "local".

CLOCK="local"
```

Etant en dual boot avec windows (mon côté gamer), passer de UTC à local avait résolu le problème. Après une mise à jour du noyau c'était revenu (j'avais l'impression que c'était principalement quand je bootais linux juste après un boot windows), et là en 2.6.28 le problème a de nouveau disparu.

----------

## sun_cracker

Ma config est correcte, c'est bien cela le problème !!

j'ai bien CLOCK="local" dans le fichier de configuration

Le pc reste bloqué au message suivant :

"setting system clock using the hardware clock.....[ok]"

Je me demande s'il n'est pas bloqué dans le script suivant (vu qu'il indique [ok] à droite)

Le problème est que je ne sais pas lequel.

De plus j'ai essayé d'appuyer sur I en rafale pour stopper les scripts mais le pc ignore mes frappes.   :Sad: 

Autre idée   :Question: 

Merci !

----------

## brubru

Et en lançant directement hwclock avec les mêmes options que le script dans /etc/init.d/ ça se bloque aussi ?

Sinon ça peut venir de la vérification des partitions: l'heure système est comparée à la dernière date de vérification pour gérer la « vérification tous X jours ». Donc si t'as pile était défaillante, tu as pu démarrer le 1er janvier 1970, ce qui fous en l'air toute les dernières dates de vérification.

Sinon, je crois que le noyau initialise lui-même l'heure système à partir de l'heure du bios mais sans distinguer Local/UTC. Et cela doit dépendre de la configuration/version du noyau.

Bruno

----------

## sun_cracker

[quote="brubru"]Et en lançant directement hwclock avec les mêmes options que le script dans /etc/init.d/ ça se bloque aussi ?

lors du boot, je dois faire CTRL+C (sinon le pc attends le déluge  :Wink: 

Et la si je rentre : 

```
hwclock --hctosys 
```

cela fonctionne sans problèmes ! 

L'heure du pc est bien remise à l'heure par cette instruction.

Si je reboote, le problème persiste et tout se bloque !

J'ai vraiment les nerfs avec ce bordel !!   :Evil or Very Mad: 

----------

## boozo

'alute

suis pas un expert en la matière mais peut-être que ceci est une piste à essayer   :Wink: 

Sinon je crois que tu dois pouvoir aussi contourner en fixant avec CLOCK_OPTS="--hctosys" maus je ne suis pas certain que ce soit la meilleure chose à faire - bref, c'est sans doute un workaround pas un fix.

Une autre idée en passant est qu'il y a peut être des options à revoir dans la conf noyaux à ce propos

Espérant que celà t'aide un peu   :Smile: 

----------

## ghoti

 *sun_cracker wrote:*   

> Le pc reste bloqué au message suivant :
> 
> "setting system clock using the hardware clock.....[ok]"
> 
> Je me demande s'il n'est pas bloqué dans le script suivant (vu qu'il indique [ok] à droite)

 

Tu as raison : le hwclock est [ok] et donc pas en cause, à première vue !

Un changement de pile implique que certaines options de ton BIOS ont probablement été remises à leur valeur par défaut.

Il faut donc avant tout vérifier ta config BIOS.

Ensuite, il faut en effet trouver le script suivant "hwclock" (celui qui bloque réellement!).

Chez moi, "hwclock" est le premier script à s'afficher. Le suivant est "modules".

Qques idées en vrac :

Quel est le statut de ta variable rc_parallel dans /etc/rc.conf ?

Est-ce que /var/log/rc.log est un peu plus bavard ?

Vu le blocage, ton syslog n'est probablement pas encore démarré mais vérifie tout de même s'il n'y a rien d'intéressant dans  /var/log/messages (ou fichier équivalent de ton "syslog" perso) ?

Essaie de redémarrer après avoir positionné la variable rc_interactive à "YES" dans /etc/rc.conf : cela te permettra de valider le lancement de chaque service avec la touche "I"

----------

## sun_cracker

Bonjour à tous,

désolé pour ce black out de plusieurs semaines, j'ai eu d'autres chats à fouetter (panne de voiture et autres joyeusetés   :Wink:  )

Je me tourne à nouveau vers vous pour vos conseils, car ma bécane est toujours bloquée au démarrage !

Pour info :

Quand je fais CTRL+C pour sortir (car mon pc reste figé sur l'instruction ci-dessus), et que je tappe "date"

l'heure affichée est systématiquement en avance de 2 heures.

 *Quote:*   

> Un changement de pile implique que certaines options de ton BIOS ont probablement été remises à leur valeur par défaut.
> 
> Il faut donc avant tout vérifier ta config BIOS.

 

ok, le problème est que je ne sais pas quels paramètres modifier (je n'ai pas souvenir d'avoir modifier grand chose) !

 *Quote:*   

> Qques idées en vrac :
> 
> Quel est le statut de ta variable rc_parallel dans /etc/rc.conf ?

 

Cette variable n'est pas définie dans mon fichier rc.conf

 *Quote:*   

> Est-ce que /var/log/rc.log est un peu plus bavard ?

 

Le log est vide. Y a-t-il un moyen d'activer le logging ?

 *Quote:*   

> Vu le blocage, ton syslog n'est probablement pas encore démarré mais vérifie tout de même s'il n'y a rien d'intéressant dans  /var/log/messages (ou fichier équivalent de ton "syslog" perso) ?

 

Le fichier est également vide.

 *Quote:*   

> Essaie de redémarrer après avoir positionné la variable rc_interactive à "YES" dans /etc/rc.conf : cela te permettra de valider le lancement de chaque service avec la touche "I"

 

J'ai mis cette variable à YES, mais cela ne change rien (pourtant je vois IIIIIII à l'écran quand j'essaye d'arrêter les scripts).

Est-ce important de mettre rc_interactive en minuscule ?

J'ai également essayé de recréer un nouveau noyau avec 

```
make menuconfig
```

(Je suis toujours au noyau 2.6.20 r :Cool: 

Mais rien ne change au démarrage ! Etant débutant , je ne vois pas quoi faire !

Merci !

----------

## ghoti

 *sun_cracker wrote:*   

> Est-ce important de mettre rc_interactive en minuscule ?

 

Oui, c'est important !  :Wink: 

Mais j'avais perdu de vue que baselayout2 n'était pas encore dans la branche "stable".

Si tu as encore une version <=baselayout-1.12.12, alors les variables se trouvent dans /etc/conf.d/rc et sont en majuscules !  :Wink: 

----------

## sun_cracker

 *Quote:*   

> 
> 
> Si tu as encore une version <=baselayout-1.12.12, alors les variables se trouvent dans /etc/conf.d/rc et sont en majuscules ! 

 

Salut ghoti !

j'avance lentement , j'espère bientôt arriver à une solution (je ne sais tester qu'au soir après le boulot !)

Mon baselayout est < au 1.12.12, j'ai donc été voir dans  /etc/conf.d/rc 

RC_INTERACTIVE="yes"

Je comprends de moins en moins mais j'ai su démarrer Gentoo avec des erreurs !

Pour cela j'ai recompilé mon noyau avec make menuconfig

Le pc redémarre et quand j'appuye sur I, il me demande script par script si je veux les démarrer. OK

Le problème est que maintenant il m'indique lors du chargement de beaucoup de modules : "invalid module" .

Ce qui fait que je n'ai plus mon interface réseau wlan0 (je ne la vois meme plus en faisant ifconfig).

Je suppose que c'est du au fait que mon module rt61 n'a pas pu être chargé correctement ??

J'ai également recrée un noyau avec genkernel. 

Lors du chargement de ce noyau gentoo s'arrête toujours juste après le script de mise à l'heure (comme expliqué dans les posts ci-dessus)

Par contre avec ce noyau mes modules semblent correctement chargé (mais le pc bloque sur le script et donc je reste figé)

Je n'arrive pas à arrêter les scripts avec IIIII dans le cas du démarrage avec noyau genkernel alors que ma variable rc_interactive a été mise à yes

Je pige plus  grand chose là !   :Surprised: 

----------

## Biloute

 *sun_cracker wrote:*   

> 
> 
> Le problème est que maintenant il m'indique lors du chargement de beaucoup de modules : "invalid module" .
> 
> Ce qui fait que je n'ai plus mon interface réseau wlan0 (je ne la vois meme plus en faisant ifconfig).
> ...

 

Ce doit être une mauvaise compilation de ton kernel.

Heureusement que tu as genkernel.

La commande utile pour ton problème d'horloge est hwclock. (jette un oeil dans la page man)

essaye donc

```
# hwclock --debug
```

Et dis nous quelle réponse ça te donne

----------

## ghoti

 *Biloute wrote:*   

> La commande utile pour ton problème d'horloge est hwclock. (jette un oeil dans la page man)

 

Relis depuis le début : le script hwclock renvoie [ok], ce n'est donc pas ça le problème !

C'est à l'étape suivante que ça bloque ...  :Wink: 

@sun_cracker : l'équivalent de rc_parallel est RC_PARALLEL_STARTUP dans /etc/conf.d/rc  :Wink: 

(Mais si tu n'y a pas touché, il est désactivé par défaut.)

Sinon, d'après ce que tu expliques, le problème pourrait bien venir du script modules (mais est-ce qu'il existait sous ce nom avant baselayout2 ?  :Question:  :Embarassed: )

Puisque tu dis que le problème est survenu après un changement de pile, je suppose que tu n'as rien changé à ton linux ?

Perso, dans un brouillard pareil, je tenterais 2 choses :

1) Réinstaller les modules

et si besoin : 

2) Réinstaller baselayout

----------

## sun_cracker

Bonjour à tous et encore merci pour l'aide déjà apportée !

Voilà  où j'en suis :

j'arrive à arrêter les scripts de démarrage en appuyant sur I, merci Ghoti !

```
/etc/conf.d/rc

RC_INTERACTIVE="yes"
```

J'ai recompilé mon noyau avec genkernel .

Mon pc démarre donc mais le script de démarrage "clock" n'arrive plus à régler l'heure.

J'ai le message suivant en tappant 

```
hwclock --debug 
```

:

```
hwclock ne peut accéder à l'horloge matérielle par le biais d'une méthode connue.

Ouverture de /dev/rtc a échoué errno=2

Aucun fichier ou répertoire de ce type 
```

J'ai également des erreurs lors du  démarrage de mes modules :

```
error inserting sn-ac97-codec /lib/modules/2.6.20-gentoo-r8/kernel/sound/ac97-bus.ko.

Unknown symbol in module, or unknown parameter.

......

error inserting sn-ac97-codec /lib/modules/2.6.20-gentoo-r8/kernel/sound/sn-ac97-bus.ko.

Unknown symbol in module, or unknown parameter.

Alsa failed to load
```

Comment puis je recompiler un module particulier ?.. Et l'installer ?  Merci !  :Rolling Eyes: 

----------

## ghoti

 *sun_cracker wrote:*   

> J'ai recompilé mon noyau avec genkernel .

 

Pas de problème tant que tu le maîtrises et que tu sais exactement ce qu'il fait !  :Wink: 

```
Ouverture de /dev/rtc a échoué errno=2

Aucun fichier ou répertoire de ce type 
```

Ton module rtc n'est probablement pas lancé, d'où pas de périphérique /dev/rtc ...

 *Quote:*   

> Unknown symbol in module, or unknown parameter.

 

Ton module n'a pas été compilé pour le noyau en cours de fonctionnement.

 *Quote:*   

> Comment puis je recompiler un module particulier ?.. Et l'installer ?  Merci ! 

 

A ma connaissance, il n'y a pas d'option pour traiter un seul module.

En principe, il faudrait donc refaire tout le processus depuis le début.

Si tu t'y connais un peu et si tu aimes le risque, tu peux toujours aller effacer manuellement les fichiers objets du module et refaire un "make" dans le répertoire du module. 

Ensuite, soit tu recopies manuellement le module depuis l'arborescence des sources vers /lib/modules, soit tu réinstalles l'ensemble des modules avec make modules_install

A faire avec prudence !  :Wink: 

----------

## sun_cracker

Merci pour ces précisions ! Voilà où j'en suis   :Shocked: 

 J'ai donc recompilé mon noyau manuellement, la première fois fut catastrophique:

- j'ai eu un kernel panic, les lampes de mon clavier clignotaient ! et la cerise sur le gateau, lors du redémarrage que j'ai du forcer:

ma carte mère bipait (longs bips séparés par un long silence ). Après un redémarrage, il s'est calmé et j'ai pu démarrer...Windaube   :Wink: 

Je précise que j'avais sabré pas mal d'options dans le noyau, beaucoup de trop vraisemblablement !!

Il n'arrivait pas à détecter mon disque SATAII (problème avec le NCQ ??)

- second essai : j'ai coché RTC clock dans les options du noyau et d'autres options...

Ma bécane démarre, mais je n'arrive pas à démarrer les scripts manuellement en tappant I (on dirait qu'il ignore alors que je vois à l'écran IIIIII)

Je pige rien alors que j'ai mis la variable :

```
/etc/conf.d/rc

RC_INTERACTIVE="yes"
```

 Ensuite le pc bloque sur un script comme avant grrrrrrrrrr !!

Le pc reste bloqué de nouveau au message suivant :

```
setting system clock using the hardware clock.....[ok]
```

Quelqu'un sait-il comment je peux savoir dans quel ordre les scripts sont-ils démarrés afin de déterminer quel script bloque  ?

Merci !

Sun

P.S: si je tappe CTRL+D et que j'exécute hwclock --debug , je n'ai plus de problèmes ! (donc le module RTC semble bien être chargé correctement !)

----------

## ghoti

Il n'est pas trivial de déterminer l'ordre d'exécution des scripts.

Par contre, tu peux facilement en obtenir la liste.

Tu peux déterminer les scripts du runlevel boot (toujours exécuté en premier) en faisant rc-update show boot.

Après avoir fait un CTRL+D, tu compares ensuite cette liste avec les scripts marqués [ok] à l'écran.

Tu peux alors exécuter manuellement ceux qui restent et déterminer ainsi celui qui bloque.

(note: regarde aussi la variable RC_BOOTLOG dabs /etc/conf.d/rc  :Wink: )

----------

## Biloute

L'ordre est défini dans les fichiers du repertoire /etc/init.d/

Dans cette rubrique :

```
depend() {

        use consolekit

        need dbus

        after localmount

        before xdm
```

Tu peux avoir la liste des scripts que son lancé dans l'ordre avec

```
rc-status -a
```

Tu as dis  *Quote:*   

> le module RTC

  mais je crois qu'il faut l'avoir en dur.

Voici ma configuration :

```
--- Real Time Clock                                                                             │ │ 

  │ │                              [*]   Set system time from RTC on startup and resume                                                │ │  

  │ │                              (rtc0)  RTC used to set the system time                                                             │ │  

  │ │                              [ ]   RTC debug support                                                                             │ │  

  │ │                                    *** RTC interfaces ***                                                                        │ │  

  │ │                              [*]   /sys/class/rtc/rtcN (sysfs)                                                                   │ │  

  │ │                              [*]   /proc/driver/rtc (procfs for rtc0)                                                            │ │  

  │ │                              [*]   /dev/rtcN (character devices)
```

Si tu pense que c'est le script d'aprés, il peut s'agir de hald et dbus (si tu l'as installé) ou alors hostname

Tu peux vérifier les services en tapant :

```
/etc/init.d/clock restart
```

en remplacant clock par ce que tu veux comme ça tu peux vérifier chaque service isolé et voir si ils bloquent.

----------

## ghoti

 *Biloute wrote:*   

> L'ordre est défini dans les fichiers du repertoire /etc/init.d/
> 
> Dans cette rubrique :
> 
> ```
> ...

 

C'est bien ce que j'ai dit : ce n'est pas trivial !  :Wink: 

```
<consolekit>

depend() {

        need dbus

        use logger

}

<localmount>

depend()

{

        need fsck

        use lvm modules mtab

        keyword nojail noopenvz noprefix novserver

}

<fsck>

depend()

{

        use dev clock modules

        keyword nojail noopenvz noprefix notimeout novserver

}

etc.etc.etc. ;)
```

 *Quote:*   

> Tu peux avoir la liste des scripts que son lancé dans l'ordre avec
> 
> ```
> rc-status -a
> ```
> ...

 

Tout-à-fait ... à condition d'avoir pu lancer ton système sans pépins, ce qui n'est pas le cas  :Razz: 

Pour info, chez moi, les scripts du runlevel boot se présentent comme suit (baselayout2 - mais ça devrait être semblable avec la v1) :

```
Runlevel: boot

 hwclock                                                                          [  started  ]

 modules                                                                          [  started  ]

 fsck                                                                             [  started  ]

 root                                                                             [  started  ]

 mtab                                                                             [  started  ]

 localmount                                                                       [  started  ]

 termencoding                                                                     [  started  ]

 consolefont                                                                      [  started  ]

 hostname                                                                         [  started  ]

 sysctl                                                                           [  started  ]

 bootmisc                                                                         [  started  ]

 syslog-ng                                                                        [  started  ]

 net.lo                                                                           [  started  ]

 procfs                                                                           [  started  ]

 swap                                                                             [  started  ]

 urandom                                                                          [  started  ]

 keymaps                                                                          [  started  ]

```

 *Quote:*   

> Tu as dis  *Quote:*   le module RTC  mais je crois qu'il faut l'avoir en dur.

 

Non : le pilote rtc correspond à CONFIG_RTC : Enhanced Real Time Clock Support (legacy PC RTC driver)

On peut le mettre en dur ou en module.

----------

## ghoti

Bon, je viens de regarder sur une machine encore sous baselayout1 et j'ai ceci :

```
horus ~ # rc-status boot

Runlevel: boot

 alsasound                                                                         [ started  ]

 bootmisc                                                                          [ started  ]

 checkfs                                                                           [ started  ]

 checkroot                                                                         [ started  ]

 clock                                                                             [ started  ]

 consolefont                                                                       [ started  ]

 hostname                                                                          [ started  ]

 keymaps                                                                           [ started  ]

 localmount                                                                        [ started  ]

 modules                                                                           [ started  ]

 net.lo                                                                            [ started  ]

 rmnologin                                                                         [ started  ]

 syslog-ng                                                                         [ started  ]

 urandom                                                                           [ started  ]

```

On constate qu'en fait, les scripts sont malheureusement listés en ordre alphabétique  :Sad: 

Avec RC_BOOTLOG activé, on a l'ordre des messages mais pas les noms des scripts auxquels ils correspondent.

```
horus ~ # grep -vi "\[ ok \]" /var/log/boot.msg

 * Checking root filesystem ...

/dev/sda7: clean, 997073/6671616 files, 8271281/13337958 blocks

 * Remounting root filesystem read/write ...

 * Setting up dm-crypt mappings ...

 * Checking all filesystems ...

/dev/sda5: clean, 59/26104 files, 20303/104388 blocks

 * Mounting local filesystems ...

 * Mounting USB device filesystem (usbfs) ...

 * Activating (possible) swap ...

 * Setting up dm-crypt mappings ...

 * Setting system clock using the hardware clock [UTC] ...

 * Configuring kernel parameters ...

 * Updating environment ...

 * Cleaning /var/lock, /var/run ...

 * Cleaning /tmp directory ...

 * Device initiated services: net.eth1 udev-postmount
```

Mais on peut extraire les messages des fichiers de script !   :Cool: 

J'ai extrait les messages "ebegin" mais comme c'est un peu long, j'ai mis le listing sur pastebin

Reste plus qu'à comparer les deux listings pour déterminer l'ordre des scripts ...  :Wink: 

Peut-être que quelqu'un pourra pondre un bout de code qui réconcilie les deux ?

----------

