web-dev-qa-db-fra.com

Démarrer automatiquement à une heure précise, comme le BIOS?

Certains BIOS ont la possibilité de démarrer l’ordinateur à partir d’un état complètement éteint (non suspendu) à une heure spécifique "alarme". Existe-t-il une commande ou un moyen de définir cela dans Ubuntu sans redémarrer et accéder au BIOS?

(J'ai un serveur + un routeur qui fonctionne pour un réseau scolaire et parfois des personnes aléatoires (bien intentionnées) pensent qu'il doit être éteint à la fin de la journée scolaire. Je pense que la meilleure façon d'éviter de recevoir des appels au hasard est que le réseau cesser de travailler, c’est d’avoir un travail cron toutes les minutes qui fixe l’heure de "réveil de l’alarme" à 2 minutes à partir de maintenant.

6
Azendale

Facile. Vous devez d’abord vérifier si votre ordinateur prend en charge le réveil sur RTC. La plupart des ordinateurs créés au cours des 10 dernières années prennent en charge cette fonctionnalité. Vous devez d’abord activer RTC dans les paramètres du BIOS, ce qui se fait lors du processus de démarrage. Dans mon BIOS, il est possible de configurer les signaux S auxquels le réveil doit répondre. Parce que j'aime économiser de l'énergie, je laisse mon ordinateur s'éteindre complètement entre les démarrages et les arrêts automatiques.

Une fois le BIOS installé, démarrez Linux et lancez la commande dmesg |grep rtc. Cela vous indique si vous avez activé RTC réveil. Ma sortie donne:

~$ dmesg |grep rtc
[    0.962976] rtc_cmos 00:03: RTC can wake from S4
[    0.963096] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0
[    0.963119] rtc0: alarms up to one month, 242 bytes nvram

Pour définir l'heure de réveil, vous devez être root. En tant que commande de problème racine:

echo 0 > /sys/class/rtc/rtc0/wakealarm

La commande ci-dessus doit être utilisée avant d'écrire une nouvelle heure de réveil dans le fichier, sinon la ressource de réveil sera active. Si vous souhaitez que votre ordinateur démarre dans 10 minutes lors de la prochaine commande:

echo `date '+%s' -d '+ 10 minutes'` > /sys/class/rtc/rtc0/wakealarm

Vérifiez si l'alarme est définie en émettant cat /sys/class/rtc/rtc0/wakealarm. Si vous obtenez un tas de chiffres, cela signifie que l'alarme est définie et si le fichier est vide, il y avait un problème avec la date.

Pour vérifier une commande d'émission de format plus lisible par l'homme cat /proc/driver/rtc.

Donc, si vous voulez que votre ordinateur démarre 2 minutes après que quelqu'un l'éteigne, exécutez un script qui ressemble à ceci depuis votre crontab (ce script nécessite un accès root, donc soyez conscient):

#!/bin/bash
echo 0 > /sys/class/rtc/rtc0/wakealarm
echo `date '+%s' -d '+ 2 minutes'` > /sys/class/rtc/rtc0/wakealarm

Sauver la planète. :)

4

Un système d'exploitation lui-même ne peut pas sortir complètement le matériel, car le système d'exploitation ne fonctionne pas à ce moment-là. S'il existait un logiciel de niveau système d'exploitation à écrire dans votre BIOS, il s'agirait d'un logiciel propriétaire spécifique au BIOS et à la carte mère, etc., et il est très peu probable qu'il existe sous la forme d'une commande ubuntu. Pardon.

Les options du BIOS telles que Wake On Lan ou votre fonction de démarrage automatique ne sont qu'une option. L’autre est une solution matérielle semblable à ce que certaines cartes tuner TV font en câblant durement le bouton d’alimentation afin de déclencher des événements de mise sous tension. Dans ce cas, cron job peut être utilisé pour mettre à jour constamment l'heure de réveil de la carte tuner.

7
drgrog

Il devrait y avoir un moyen de faire cela ... Je sais que je l’ai vu fonctionner sur une carte mère MSI sous Windows. L'un des programmes de MSI a été en mesure de définir l'état/l'heure de réveil dans le BIOS à partir de Windows. Ce qu'il faut probablement, ce sont les bons appels du BIOS pour le faire. J'ai regardé une fois autour de moi et je n'ai rien trouvé, mais je n'ai pas trop cherché. Je vais essayer de chercher encore et poster ici si je les trouve. Je parie qu'un outil pour ce faire pourrait être très universel, contrairement à ce que croit drgrog, car la plupart des fournisseurs de cartes mères obtiennent leur BIOS de l'un de ces deux fournisseurs et rares sont ceux qui y apportent des modifications importantes.

1
Joseph