Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 16-08-2013 04:19:20

MicP
Invité

Date/heure de re-démarrage auto (RTC) en CLI

Je me suis retrouvé invité chez un de mes fils pour quelques temps (à Lyon).
Je voulais pouvoir accéder à ma machine (Toulouse) par le port 22 en ssh, mais j'avais auparavant observé plusieurs centaines de tentatives de login par jour sur ce port de ma machine.

J'ai donc décidé que ma machine ne démarrerait qu'à partir d'une date/heure.
Arrivé chez mon fils, j'ai donc eu besoin de re-programmer à distance la date/heure de re-démarrage auto, avant de l'arrêter avec "shutdown".

========================================================
BIOS A.M.I. version 0501 sur une carte mère ASUS (P5KPL-AM EPU).
========================================================

Tout d'abord, l'accès à la RTC en lecture sur ma machine:

michel@deb-quad:~$ cat /proc/driver/rtc
rtc_time  : 01:40:30
rtc_date  : 2013-08-16
alrm_time : 01:17:31
alrm_date : 2013-08-17
alarm_IRQ : no
alrm_pending  : no
update IRQ enabled  : no
periodic IRQ enabled  : no
periodic IRQ frequency  : 1024
max user IRQ frequency  : 64
24hr    : yes
periodic_IRQ  : no
update_IRQ  : no
HPET_emulated : yes
BCD   : yes
DST_enable  : no
periodic_freq : 1024
batt_status : okay
 



=================
Pour pouvoir écrire dans le registre de la date/heure d'alarme de la RTC, Il faut d'abord y écrire la valeur "0".
Ensuite, la date/heure peut lui être envoyée en nombre de secondes depuis le 01/01/1970 00:00:00 UTC.

Voici la ligne de commande qui m'a permis de re-programmer la RTC de ma machine de façon à ce qu'elle re-démarre le lendemain, même heure.

cat /proc/driver/rtc; echo -e "\n##############\n"; echo 0 >/sys/class/rtc/rtc0/wakealarm && echo `date '+%s' -d '+ 5 minutes'` >/sys/class/rtc/rtc0/wakealarm && cat /proc/driver/rtc
 


NOTE: Vous pouvez changer "days" en "hours", "minutes", ou "seconds" dans << `date --date "now + 1 days" "+%s" ` >> si vous voulez. (voir "man date")

Après avoir activé (par le setup du BIOS) l'option : "Power On By RTC Alarm" Après vérif et tests, c'est même pas la peine de faire ça.
Et voilà ce que ça donne:

root@deb-quad:~# cat /proc/driver/rtc
rtc_time  : 01:47:34
rtc_date  : 2013-08-16
alrm_time : 01:17:31
alrm_date : 2013-08-17
alarm_IRQ : no
alrm_pending  : no
update IRQ enabled  : no
periodic IRQ enabled  : no
periodic IRQ frequency  : 1024
max user IRQ frequency  : 64
24hr    : yes
periodic_IRQ  : no
update_IRQ  : no
HPET_emulated : yes
BCD   : yes
DST_enable  : no
periodic_freq : 1024
batt_status : okay
root@deb-quad:~#
root@deb-quad:~#
root@deb-quad:~#
root@deb-quad:~# cat /proc/driver/rtc; echo -e "\n##############\n"; echo 0 >/sys/class/rtc/rtc0/wakealarm && echo `date '+%s' -d '+ 5 minutes'` >/sys/class/rtc/rtc0/wakealarm && cat /proc/driver/rtc
rtc_time  : 01:47:36
rtc_date  : 2013-08-16
alrm_time : 01:47:36
alrm_date : 2013-08-17
alarm_IRQ : yes
alrm_pending  : no
update IRQ enabled  : no
periodic IRQ enabled  : no
periodic IRQ frequency  : 1024
max user IRQ frequency  : 64
24hr    : yes
periodic_IRQ  : no
update_IRQ  : no
HPET_emulated : yes
BCD   : yes
DST_enable  : no
periodic_freq : 1024
batt_status : okay
root@deb-quad:~# cat /proc/driver/rtc
rtc_time  : 01:47:37
rtc_date  : 2013-08-16
alrm_time : 01:47:36
alrm_date : 2013-08-17
alarm_IRQ : yes
alrm_pending  : no
update IRQ enabled  : no
periodic IRQ enabled  : no
periodic IRQ frequency  : 1024
max user IRQ frequency  : 64
24hr    : yes
periodic_IRQ  : no
update_IRQ  : no
HPET_emulated : yes
BCD   : yes
DST_enable  : no
periodic_freq : 1024
batt_status : okay
root@deb-quad:~#
 


NOTE: Seulement après avoir modifié la date/heure par la commande en CLI, "alarm_IRQ    : no" est devenu "alarm_IRQ    : yes".
===================

Reste que quand je vais voir ce que le programme setup du BIOS m'affiche, ça n'a rien à voir avec ce que Linux me retourne:
pas même heure d'alarme, pas de "Power On By RTC Alarm" activé etc...
Par contre, ça marche très bien, et je viens juste de me rendre compte qu'il n'y a même pas besoin d'activer "Power On By RTC Alarm" par le setup du BIOS.
Ça vaudrait peut-être le coup d'aller chercher les caractéristiques de la puce RTC de chacune des cartes mère de mes machines pour voir.

===================
Et sur vos machines, ça donne quoi avec un test pour redémarrage à "now + 5 minutes" ? (préciser les références de votre Carte mère + BIOS) ?

===================
EDIT: Sur mes autres machines.

Eee PC 900
BIOS AMI rev 1006 . EC firm ver EPC-089  . 03/03/09
Il n'y a pas d'option "Power On By RTC Alarm" dans le setup du BIOS.
"alarm_IRQ    : yes" après la commande.
Et pourtant, il s'est remis en route après avoir utilisé la ligne de commande (now + 5 minutes). Super content !!!

Eee PC 1005PE
BIOS AMI . rev 1202 . EC firm ver EPCD-051 . 06/23/10
Il n'y a pas d'option "Power On By RTC Alarm" dans le setup du BIOS.
"alarm_IRQ    : yes" après la commande.
a redémarré.

ASUS G53SW.203
BIOS Rev 4.6
Il n'y a pas d'option "Power On By RTC Alarm" dans le setup du BIOS.
"alarm_IRQ    : no" après la commande.
n'a pas redémarré.

"alarm_IRQ    : yes" après la commande à "now +  3 hours"
a redémarré.

=======================
EDIT:
Je vais chercher comment mettre "alarm_IRQ" à yes

man rtc a écrit :

RTC_WKALM_RD, RTC_WKALM_SET
              Certaines RTC disposent d'une interface pour les alarmes plus puissante, utilisant ces ioctl pour  lire
              ou écrire l'heure de l'alarme de la RTC avec cette structure :

                  struct rtc_wkalrm {
                      unsigned char enabled;
                      unsigned char pending;
                      struct rtc_time time;
                  };

              L'attribut  enabled
              lire son état actuel ; lorsque ces appels sont utilisés, RTC_AIE_ON et RTC_AIE_OFF ne sont  pas  utili?
              sés.  L'attribut  pending est utilisé par RTC_WKALM_RD

              champ  time  est autant utilisé par RTC_ALM_READ et RTC_ALM_SET, excepté que les champs tm_mday, tm_mon
              et tm_year
              paramètre ioctl(2).

=> yapuka

Dernière modification par MicP (20-09-2013 00:06:42)

#2 16-08-2013 09:29:40

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : Date/heure de re-démarrage auto (RTC) en CLI

Salut !
Tiens, je ne savais pas que mon ordi pouvait faire ça smile
Cool le tuto, à mettre dans le wiki aussi smile

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#3 16-08-2013 09:59:09

MicP
Invité

Re : Date/heure de re-démarrage auto (RTC) en CLI

Pou les tutos, j'en ai 2 ou 3 en retard, mais j'y pense.

Pour ce fil sur la RTC, malheureusement, comme il s'agit d'appels systèmes de très bas niveau, une interface utilisateur serait très problématique concernant la sécurité.
Ceci dit, tant qu'il ne s'agit que d'un vrais Personal Computer, tant en termes matériels que d'utilisation...

Ça me rappelle mes premiers pas avec les premières RTC (MC 146818) et "La Bible du PC" (Michaël Tischer) que j'avais acheté en 1989, et qui a depuis perdu sa couverture cartonnée tellement j'y suis revenu chercher des infos. (je l'ai en ce moment sous les yeux)
Avant ça, on mettait les commandes "date" et "time" dans l'autoexec.bat, sinon, c'était la cata pour savoir où on en était question fichiers, mais bon, on avait que 360Ko par disquettes, les énormes disques de 10 et 20 Mo sont venus plus tard, et coûtaient un SMIC entier..c'était l'époque du "debug g=c800:6" => le VRAIS formattage bas niveau.

Mais je m' égare et m'éparpille...

Sinon, sur tes machines, ça donne quoi avec un test pour redémarrage à "now + 5 minutes" ? (précise les références des Cartes mère + BIOS) ?

Dernière modification par MicP (16-08-2013 10:02:49)

#4 16-08-2013 10:05:39

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : Date/heure de re-démarrage auto (RTC) en CLI

MicP a écrit :

Pour les tutos, j'en ai 2 ou 3 en retard, mais j'y pense.


Tu sais, au lieu de poster tes tutos sur le forum, tu peux les mettre directement sur le wiki, et ensuite poster un sujet sur le forum leur faisant référence.
Tu gagneras du temps, et écrire un tuto sur le wiki n'est pas plus compliqué que l'écrire sur le forum.

MicP a écrit :

Sinon, sur tes machines, ça donne quoi avec un test pour redémarrage à "now + 5 minutes" ? (précise les références des Cartes mère + BIOS) ?


Mhh, je n'ai pas trop le temps de regarder là, mais j'essaye de te dire ça.


captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#5 16-08-2013 10:19:33

MicP
Invité

Re : Date/heure de re-démarrage auto (RTC) en CLI

Merci pour le tuyau au sujet des tuto/wiki, j'en prends note.

Je continue mes recherches sur l'histoire du "alrm_irq=yes" manquant, mais je crois bien me souvenir qu'il est mis à yes par le circuit RTC lui même dès qu'on programme une date/heure d'alarme antérieure à la date/heure en cours.
Mais il doit peut-être falloir positionner aussi d'autres drapeaux dans les registres de la puce RTC.
Il me faudra peut-être démonter certaines machines pour récupérer les références exactes des différentes puces RTC afin de trouver les datasheets.

Ceci dit, c'est mon fils qui m'a offert son ASUS G53SW à mon dernier anniversaire (justement quand je suis allé le voir à Lyon), mais quelle déception au niveau des options du BIOS, et c'est dommage, car j'ai jamais eu une machine aussi puissante, je comptais m'en servir à distance, parce que comme portable, il est beaucoup trop lourd pour moi (presque 4kg).

EDIT:
En faisant des recherches sur google avec "alrm_irq", je suis tombé sur quelque chose de très complet.

Dernière modification par MicP (18-08-2013 14:55:11)

Pied de page des forums