Можно ли разбудить устройство Linux в определенное время

Я запускаю Debian на встроенной плате. Я хотел бы приостановить или перевести плату, скажем, в 10 часов вечера и разбудить ее в 7 часов утра. Нет проблем приостановить / перевести плату в pmi action suspend/hibernate, Но мне интересно, можно ли запланировать, чтобы плата проснулась в определенное время (возможно, с помощью cron или чего-то еще?). Если это так, не могли бы вы объяснить все необходимые шаги, как я могу это сделать?

Обратите внимание, что можно активировать встроенную плату, используя внешний сигнал прерывания или построив простую схему с микроконтроллером, таким как PIC, таймер и реле, чтобы установить, когда нужно активировать плату. Но это не то, что я прошу. Я хотел бы узнать, есть ли в Linux какой-либо метод для выполнения операции пробуждения. На плате есть соединение WiFi и невозможно подключить другой кабель, кроме кабеля питания (не пишите о пробуждении по локальной сети).

2 ответа

Решение

Подумайте, что вы просите. Вы хотите, чтобы одно устройство, которое выключено, выполняло некоторый код в определенное время, которое включает его. Что бы выполнить этот код? Что заставит устройство выполнять этот код?

В зависимости от того, насколько крепко спит устройство, это может быть возможно путем настройки BIOS на включение устройства в определенное время, если BIOS поддерживает такую ​​функцию. При выключении питания вы будете непосредственно возиться с битами в памяти CMOS и надеетесь, что вы ничего не повредите, но в принципе это должно быть выполнимо, и если вам не требуется, например, устойчивость в случае обновления BIOS, это может быть даже практично. Однако это все еще зависит от того, что устройство не полностью отключено; что-то должно отслеживать системные часы реального времени и выполнять последовательность включения при достижении предварительно выбранного значения. То же самое относится и к таким методам, как Wake on LAN, Wake on Ring и т. Д., Которые зависят от того, что инициирует событие включения питания. (Получу ли я понижающее голосование за то, что пишу о Wake on LAN, несмотря на то, что вы просите ответчиков не ...?)

Более того, то, что запускается в ATX (даже при нажатии кнопки питания), - это переход из одного состояния питания в другое . Единственный способ полностью отключить систему ATX - это отключить питание с помощью переключателя на блоке питания или отсоединить шнур питания. Это в отличие от блоков питания AT, которые фактически полностью отключались при выключении компьютера, потому что переключатель питания находился на одной линии со шнуром питания переменного тока так же, как переключатели питания ATX PSU (а не кнопка питания компьютера). Это на самом деле не имеет никакого значения, потому что, независимо от того, полностью ли выключено питание системы или просто запущен какой-то цикл, который ожидает, когда системные часы достигнут определенного значения, операционная система и даже процессор не работают. если он включен (что является деталью реализации материнской платы и BIOS; возможно, они используют дополнительный, маломощный процессор только для таких простых задач), то не будет запускать установленный код, поэтому Linux нигде нет видно, что касается процессора, а тем более, чем cron.

Нижняя линия; Я был бы чрезвычайно удивлен, если то, что вы спрашиваете, выполнимо непосредственно через Linux , хотя это могло бы быть возможно, если взглянуть на более широкую картину окружающего оборудования и прошивки. Почти наверняка самая безопасная ставка - это именно тот внешний триггер, запрограммированный на отключение для запуска последовательности включения по истечении заданного интервала или в определенный момент времени (если он имеет независимый RTC).

Просто для тех, кто ищет это, посмотрите на интерфейс для RTC. В моей нынешней системе запись даты в будущем /sys/class/rtc/rtc0/wakealarm заставит систему проснуться в будущем. Например:

# wake up the system in 3 minutes
sh -c "echo `date '+%s' -d '+ 3 minutes'` > /sys/class/rtc/rtc0/wakealarm"

Изменить + 3 minutes в tomorrow 0700 близко к тому, что вы хотите, если вы не запустите команду после полуночи...

Я нашел это на linux.com.

Другие вопросы по тегам