Table des matières

Démarrage automatique à l'heure/date

Introduction

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 (en CLI par ssh) la date/heure de re-démarrage auto, avant de l'arrêter avec “shutdown”.

Certains programmes de Setup BIOS permettent de programmer une heure de démarrage,
toutefois, l'astuce fonctionne, même si cette option est absente du programme Setup du BIOS, (par ex: Eee PC900, G53SW etc…)

Utilisation

Si :

michel@deb9550:~$ dmesg | grep RTC
[    0.805708] rtc_cmos 00:03: RTC can wake from S4
michel@deb9550:~$ 

C'est que ce qui suit sera possible.

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 dans les 5 minutes suivantes.

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
Vous pouvez changer “minutes” en “days”, “hours”, ou “seconds” dans « `date '+%s' -d '+ 5 minutes'` ».
(voir “man date”)

Juste après avoir lancé la ligne de commande ci-dessus,
j'ai utilisé la commande ci-dessous pour arrêter le système.

shutdown -h now

Avant :

michel@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-16
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
michel@deb-quad:~$ 

Après :

root@deb-quad:~# 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:49:56
rtc_date	: 2013-08-16
alrm_time	: 01:54:56
alrm_date	: 2013-08-16
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:~#
Après avoir lancé la commande,
alarm_IRQ : no
a été changé en :
alarm_IRQ : yes.

La machine a donc pu re-démarrer à l'heure prévue.

Si alarm_IRQ : no n'a pas changé, essayez en augmentant le délais comme par exemple avec “+ 121 minutes”,
C'est ce que j'ai dû faire pour mon G53SW.

Liens

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !