LinuxForum.Fans
Тема

Автовключение компьютера в Squeeze

Автор: stalker_tk 13 сообщений 3597 просмотров
#222585

Пытаюсь сделать через запись в /sys/class/rtc/rtc0/wakealarm
И возникло несколько вопросов, может кто-нибуть поможет разобраться.

Во всех руководствах говориться о необходимости переведения времени BIOS в UTC, а как должна выглядеть команда записи в файл /sys/class/rtc/rtc0/wakealarm если апаратные часы BIOS не в UTC.

Нужно-ли изменять файл /etc/init.d/hwclock.sh или достаточно вписать значение HWCLOCKACCESS=no в файл /etc/default/rc.S

Команда dmesg | grep rtc выдаёт

text

[    0.758901] rtc_cmos 00:04: RTC can wake from S4
[    0.758946] rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0
[    0.758982] rtc0: alarms up to one year, y3k, 242 bytes nvram, hpet irqs
[    0.760929] rtc_cmos 00:04: setting system clock to 2012-01-17 12:30:30 UTC (1326803430)

Это значит что компьютер будет включаться из ждущего режима?

#222590

stalker_tk, а просто не пробовал?
[console]
shutdown -h XX ## XX - время до отключения, мин.
[/console]

#222592
stalker_tk написал:
а как должна выглядеть команда записи в файл /sys/class/rtc/rtc0/wakealarm если апаратные часы BIOS не в UTC.

просто добавить/отнять [в каком вы там часом поясе] часов. не?

stalker_tk написал:
Это значит что компьютер будет включаться из ждущего режима?

по идее из спящего(на диск)

Cretinus, ещё раз прочтите название темы

#222593

Fat-Zer, ы пропустил, Ы smile

#222596
Cretinus написал:

shutdown -h XX ## XX - время до отключения, мин.

При чём здесь shutdown? Я пытаюсь понять как включать компьютер записывая время включения в BIOS

#222601
Fat-Zer написал:
просто добавить/отнять [в каком вы там часом поясе] часов. не?

хз по идее в файл /sys/class/rtc/rtc0/wakealarm должно писаться количесво секунд прошедших с начала эпохи Unix(время включения) и меня интересует как это сделать если время в BIOS не UTC

#222614

почти:

/usr/src/linux/Documentation/rtc.txt написал:

wakealarm: The time at which the clock will generate a system wakeup
event. This is a one shot wakeup event, so must be reset
after wake if a daily wakeup is required. Format is either
seconds since the epoch or, if there's a leading +, seconds
in the future.

надо просто подумать, прибавить 3 часа или отнять...
как получить unix-время man date, внимание на формат %s, ключик --date и переменную TZ.
для начала экспериментов я бы всё же перевёл всё время в UTC, а то, когда не получится долго прдётся думать, где же собака зарыта: "ресьюм не сработал или время не правильное"...

#222715

Итак мои действия перевёл время BIOS в UTC

text

hwclock --systohc --utc

Внёс изменения в файл /etc/default/rcS

text

# Аппаратное время BIOS в UTC
UTC=yes
# Не изменять время в BIOS при выключении.
HWCLOCKACCESS=no

Ввожу команды

text

user@debian:[14:29:19=1326882559][0] [~]
$ cat /proc/driver/rtc
rtc_time        : 10:30:43                                                                                       
rtc_date        : 2012-01-18                                                                                     
alrm_time       : 00:00:00                                                                                       
alrm_date       : ****-**-**                                                                                     
alarm_IRQ       : no                                                                                             
alrm_pending    : no                                                                                             
24hr            : yes                                                                                            
periodic_IRQ    : no                                                                                             
update_IRQ      : no                                                                                             
HPET_emulated   : yes                                                                                            
DST_enable      : no                                                                                             
periodic_freq   : 1024                                                                                           
batt_status     : okay
user@debian:[14:30:43=1326882643][0] [~]
$ cat /sys/class/rtc/rtc0/wakealarm
user@debian:[14:33:44=1326882824][0] [~]
$  

Устанавливаю будильник на 5 минут вперёд

text

user@debian:[14:33:44=1326882824][0] [~]
$ sudo sh -c "echo `date '+%s' -d '+ 5 minutes'` > /sys/class/rtc/rtc0/wakealarm"                                
[sudo] password for user: 
user@debian:[14:37:32=1326883052][0] [~]
$ cat /sys/class/rtc/rtc0/wakealarm                                
1326883344
user@debian:[14:37:43=1326883063][0] [~]
$ cat /proc/driver/rtc
rtc_time        : 10:37:47
rtc_date        : 2012-01-18
alrm_time       : 10:42:24
alrm_date       : 2012-01-18
alarm_IRQ       : yes
alrm_pending    : no
24hr            : yes
periodic_IRQ    : no
update_IRQ      : no
HPET_emulated   : yes
DST_enable      : no
periodic_freq   : 1024
batt_status     : okay
user@debian:[14:37:47=1326883067][0] [~]
$  

Выключаю компьютер,через 5 минут он включаеться, хорошо всё работает.
Далее устанавливаю аппаратное время BIOS в соответствии с системным

text

hwclock --systohc

Правлю файл /etc/default/rcS

text

# Аппаратное время BIOS не в UTC
UTC=no
# Не изменять время в BIOS при выключении.
HWCLOCKACCESS=no

Перезагружаюсь и устанавливаю будильник на 5 минут вперёд

text

user@debian:[16:39:19=1326890359][0] [~]
$ sudo sh -c "echo `date '+%s' -d '+ 5 minutes'` > /sys/class/rtc/rtc0/wakealarm"
[sudo] password for user: 
user@debian:[16:45:29=1326890729][0] [~]
$ cat /sys/class/rtc/rtc0/wakealarm
user@debian:[16:45:47=1326890747][0] [~]
$ cat /proc/driver/rtc
rtc_time        : 16:45:58
rtc_date        : 2012-01-18
alrm_time       : 16:50:16
alrm_date       : ****-01-18
alarm_IRQ       : no
alrm_pending    : no
24hr            : yes
periodic_IRQ    : no
update_IRQ      : no
HPET_emulated   : yes
DST_enable      : no
periodic_freq   : 1024
batt_status     : okay
user@debian:[16:45:58=1326890758][0] [~]
$  

Выключаю компьютер,через 5 минут он не включаеться. Я это ожидал потому что alarm_IRQ : no
Не пойму в чём ошибка? И обязательно-ли время в BIOS должно быть UTC ?

#222735

остаётся только сравнить значения /sys/class/rtc/rtc0/wakealarm и /sys/class/rtc/rtc0/since_epoch после установки будильника. если первое больше второго на вменяемое время, то пока больше идей нет =/

stalker_tk написал:
alarm_IRQ : no

это изменяется сразу после hwclock --systohc или только после перезагрузки?
если сразу, то покажите strace hwclock --systohc - посмотрим, что он творит...

stalker_tk написал:
И обязательно-ли время в BIOS должно быть UTC ?

пока точно не могу сказать... в теории - нет. ИРЛ - шут его знает, что там накрутили...

[на всякий пожарный]
системное время не хотите менять, т.к. на той же железяке вертится ОС, которая не признаёт биос в utc?

#222816
Fat-Zer написал:
остаётся только сравнить значения /sys/class/rtc/rtc0/wakealarm и /sys/class/rtc/rtc0/since_epoch после установки будильника

Выполняю установку будильника на 5 минут вперёд

text

user@debian:[23:12:22=1326913942][0] [~]
$ sudo sh -c "echo `date '+%s' -d '+ 5 minutes'` > /sys/class/rtc/rtc0/wakealarm"
[sudo] password for user: 
user@debian:[23:13:25=1326914005][0] [~]                                                                          
$ cat /sys/class/rtc/rtc0/wakealarm                                                                              
user@debian:[23:13:48=1326914028][0] [~]                                                                          
$ cat /sys/class/rtc/rtc0/since_epoch                                                                            
1326928448                                                                                                       
user@debian:[23:14:08=1326914048][0] [~]                                                                          
$ 
Fat-Zer написал:
это изменяется сразу после hwclock --systohc или только после перезагрузки?
если сразу, то покажите strace hwclock --systohc - посмотрим, что он творит...

Да сразу после hwclock --systohc.

text

user@debian:[23:18:51=1326914331][0] [~]
$ sudo sh -c "strace hwclock --systohc"
execve("/sbin/hwclock", ["hwclock", "--systohc"], [/* 17 vars */]) = 0
brk(0)                                  = 0x24b9000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f69b8e000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=111307, ...}) = 0
mmap(NULL, 111307, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f2f69b72000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\355\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1432968, ...}) = 0
mmap(NULL, 3541032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f69612000
mprotect(0x7f2f6976a000, 2093056, PROT_NONE) = 0
mmap(0x7f2f69969000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x157000) = 0x7f2f69969000
mmap(0x7f2f6996e000, 18472, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2f6996e000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f69b71000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f69b70000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f69b6f000
arch_prctl(ARCH_SET_FS, 0x7f2f69b70700) = 0
mprotect(0x7f2f69969000, 16384, PROT_READ) = 0
mprotect(0x7f2f69b90000, 4096, PROT_READ) = 0
munmap(0x7f2f69b72000, 111307)          = 0
brk(0)                                  = 0x24b9000
brk(0x24da000)                          = 0x24da000
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=1527600, ...}) = 0
mmap(NULL, 1527600, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f2f699fa000
close(3)                                = 0
getuid()                                = 0
open("/dev/rtc", O_RDONLY)              = 3
stat("/etc/adjtime", {st_mode=S_IFREG|0600, st_size=44, ...}) = 0
open("/etc/adjtime", O_RDONLY)          = 4
fstat(4, {st_mode=S_IFREG|0600, st_size=44, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f69b8d000
read(4, "0.000000 1326914212 0.000000\n132"..., 4096) = 44
close(4)                                = 0
munmap(0x7f2f69b8d000, 4096)            = 0
ioctl(3, PHN_SET_REGS or RTC_UIE_ON, 0) = 0
select(4, [3], NULL, NULL, {5, 0})      = 1 (in [3], left {4, 62525})
ioctl(3, PHN_NOT_OH or RTC_UIE_OFF, 0)  = 0
ioctl(3, RTC_RD_TIME, {tm_sec=1, tm_min=19, tm_hour=19, tm_mday=18, tm_mon=0, tm_year=112, ...}) = 0
open("/usr/share/zoneinfo/Universal", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
fstat(4, {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f69b8d000
read(4, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\0"..., 4096) = 118
lseek(4, -62, SEEK_CUR)                 = 56
read(4, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\0"..., 4096) = 62
close(4)                                = 0
munmap(0x7f2f69b8d000, 4096)            = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1448, ...}) = 0
open("/etc/localtime", O_RDONLY)        = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=1448, ...}) = 0
fstat(4, {st_mode=S_IFREG|0644, st_size=1448, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f69b8d000
read(4, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\0\0\0\r\0\0\0\0"..., 4096) = 1448
lseek(4, -890, SEEK_CUR)                = 558
read(4, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\16\0\0\0\16\0\0\0\0"..., 4096) = 890
close(4)                                = 0
munmap(0x7f2f69b8d000, 4096)            = 0
ioctl(3, RTC_SET_TIME, {tm_sec=1, tm_min=19, tm_hour=19, tm_mday=18, tm_mon=0, tm_year=112, ...}) = 0
open("/etc/adjtime", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 4
fstat(4, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f69b8d000
write(4, "0.000000 1326914341 0.000000\n132"..., 44) = 44
close(4)                                = 0
munmap(0x7f2f69b8d000, 4096)            = 0
close(3)                                = 0
exit_group(0)                           = ?
user@debian:[23:19:01=1326914341][0] [~]
$ cat /proc/driver/rtc
rtc_time        : 19:20:29
rtc_date        : 2012-01-18
alrm_time       : 23:18:25
alrm_date       : ****-01-18
alarm_IRQ       : no
alrm_pending    : no
24hr            : yes
periodic_IRQ    : no
update_IRQ      : no
HPET_emulated   : yes
DST_enable      : no
periodic_freq   : 1024
batt_status     : okay
user@debian:[23:20:29=1326914429][0] [~]
$   

Правда мне это не о чём не говорит. Хотя говорит после этой команды аппаратные часы BIOS показывают время UTC ?!

Fat-Zer написал:
системное время не хотите менять, т.к. на той же железяке вертится ОС, которая не признаёт биос в utc?

Да именно из-за этого.

#222826

Обновил пакет util-linux перечитал ман hwclock результат

text

user@debian:[23:49:42=1326916182][0] [~]
$ sudo sh -c "strace hwclock --systohc --localtime"                                                              
execve("/sbin/hwclock", ["hwclock", "--systohc", "--localtime"], [/* 17 vars */]) = 0
brk(0)                                  = 0x1885000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2ca0328000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=111307, ...}) = 0
mmap(NULL, 111307, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f2ca030c000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\355\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1432968, ...}) = 0
mmap(NULL, 3541032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2c9fdac000
mprotect(0x7f2c9ff04000, 2093056, PROT_NONE) = 0
mmap(0x7f2ca0103000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x157000) = 0x7f2ca0103000
mmap(0x7f2ca0108000, 18472, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2ca0108000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2ca030b000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2ca030a000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2ca0309000
arch_prctl(ARCH_SET_FS, 0x7f2ca030a700) = 0
mprotect(0x7f2ca0103000, 16384, PROT_READ) = 0
mprotect(0x7f2ca032a000, 4096, PROT_READ) = 0
munmap(0x7f2ca030c000, 111307)          = 0
brk(0)                                  = 0x1885000
brk(0x18a6000)                          = 0x18a6000
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=1527600, ...}) = 0
mmap(NULL, 1527600, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f2ca0194000
close(3)                                = 0
getuid()                                = 0
open("/dev/rtc", O_RDONLY)              = 3
stat("/etc/adjtime", {st_mode=S_IFREG|0600, st_size=46, ...}) = 0
open("/etc/adjtime", O_RDONLY)          = 4
fstat(4, {st_mode=S_IFREG|0600, st_size=46, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2ca0327000
read(4, "0.000000 1326916175 0.000000\n132"..., 4096) = 46
close(4)                                = 0
munmap(0x7f2ca0327000, 4096)            = 0
ioctl(3, PHN_SET_REGS or RTC_UIE_ON, 0) = 0
select(4, [3], NULL, NULL, {5, 0})      = 1 (in [3], left {4, 89386})
ioctl(3, PHN_NOT_OH or RTC_UIE_OFF, 0)  = 0
ioctl(3, RTC_RD_TIME, {tm_sec=18, tm_min=50, tm_hour=23, tm_mday=18, tm_mon=0, tm_year=112, ...}) = 0
open("/etc/localtime", O_RDONLY)        = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=1448, ...}) = 0
fstat(4, {st_mode=S_IFREG|0644, st_size=1448, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2ca0327000
read(4, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\0\0\0\r\0\0\0\0"..., 4096) = 1448
lseek(4, -890, SEEK_CUR)                = 558
read(4, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\16\0\0\0\16\0\0\0\0"..., 4096) = 890
close(4)                                = 0
munmap(0x7f2ca0327000, 4096)            = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1448, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1448, ...}) = 0
ioctl(3, RTC_SET_TIME, {tm_sec=18, tm_min=50, tm_hour=23, tm_mday=18, tm_mon=0, tm_year=112, ...}) = 0
open("/etc/adjtime", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 4
fstat(4, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2ca0327000
write(4, "0.000000 1326916218 0.000000\n132"..., 46) = 46
close(4)                                = 0
munmap(0x7f2ca0327000, 4096)            = 0
close(3)                                = 0
exit_group(0)                           = ?
user@debian:[23:50:18=1326916218][0] [~]
$ cat /proc/driver/rtc                                                              
rtc_time        : 23:50:22
rtc_date        : 2012-01-18
alrm_time       : 23:18:25
alrm_date       : ****-01-18
alarm_IRQ       : no
alrm_pending    : no
24hr            : yes
periodic_IRQ    : no
update_IRQ      : no
HPET_emulated   : yes
DST_enable      : no
periodic_freq   : 1024
batt_status     : okay

Все в порядке часы BIOS показывают системное время.Но включения нет

#222831

вот интересующий участок

text

open("/dev/rtc", O_RDONLY)              = 3
stat("/etc/adjtime", {st_mode=S_IFREG|0600, st_size=44, ...}) = 0
open("/etc/adjtime", O_RDONLY)          = 4

###### можно посмотреть, что находится в /etc/adjtime, но вроде там ничего интересного

fstat(4, {st_mode=S_IFREG|0600, st_size=44, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f69b8d000 read(4, "0.000000 1326914212 0.000000\n132"..., 4096) = 44 close(4) = 0 munmap(0x7f2f69b8d000, 4096) = 0 ioctl(3, PHN_SET_REGS or RTC_UIE_ON, 0) = 0

select(4, [3], NULL, NULL, {5, 0}) = 1 (in [3], left {4, 62525}) ioctl(3, PHN_NOT_OH or RTC_UIE_OFF, 0) = 0

###### похоже не совсем то, из документации: ###### * RTC_UIE_ON, RTC_UIE_OFF ... if the RTC offers IRQs, the RTC framework ###### will emulate this mechanism.

ioctl(3, RTC_RD_TIME, {tm_sec=1, tm_min=19, tm_hour=19, tm_mday=18, tm_mon=0, tm_year=112, ...}) = 0

###### считываем время

open("/usr/share/zoneinfo/Universal", O_RDONLY) = 4 fstat(4, {st_mode=S_IFREG|0644, st_size=118, ...}) = 0 fstat(4, {st_mode=S_IFREG|0644, st_size=118, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f69b8d000 read(4, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\0"..., 4096) = 118 lseek(4, -62, SEEK_CUR) = 56 read(4, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\0"..., 4096) = 62 close(4) = 0 munmap(0x7f2f69b8d000, 4096) = 0 stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1448, ...}) = 0 open("/etc/localtime", O_RDONLY) = 4

###### читаем инфу о временной зоне ###### управляется /etc/localtime, должен быть симлинком или копией соответствующего файла в /usr/share/zoneinfo

fstat(4, {st_mode=S_IFREG|0644, st_size=1448, ...}) = 0 fstat(4, {st_mode=S_IFREG|0644, st_size=1448, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f69b8d000 read(4, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\0\0\0\r\0\0\0\0"..., 4096) = 1448 lseek(4, -890, SEEK_CUR) = 558 read(4, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\16\0\0\0\16\0\0\0\0"..., 4096) = 890 close(4) = 0 munmap(0x7f2f69b8d000, 4096) = 0 ioctl(3, RTC_SET_TIME, {tm_sec=1, tm_min=19, tm_hour=19, tm_mday=18, tm_mon=0, tm_year=112, ...}) = 0

###### устанавливаем время

open("/etc/adjtime", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 4 fstat(4, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f69b8d000 write(4, "0.000000 1326914341 0.000000\n132"..., 44) = 44 close(4) = 0 munmap(0x7f2f69b8d000, 4096) = 0 close(3) = 0

stalker_tk написал:
Хотя говорит после этой команды аппаратные часы BIOS показывают время UTC ?!

похоже так... надо посмотреть, что есть /etc/localtime.

гмм... чего-то у меня идеи кончились...

#223081

Нашёл решение здесь команда от root
echo `date -u --date "2012-01-18 23:50:00" +%s` > /sys/class/rtc/rtc0/wakealarm которая работает если время в BIOS совпадает с системным.
Хочу обратить внимание что команда с использованием sudo вида:

text

date -u --date "17:30:00" +%s | sudo tee /sys/class/rtc/rtc0/wakealarm
sudo sh -c "echo `date -u --date "2012-01-18 23:50:00" +%s` > /sys/class/rtc/rtc0/wakealarm"

лично у меня не работает(почему разбираться я не стал).
Кстати нашёл ещё один способ rtcwake сейчас разбираюсь. Поподробней здесь

Войдите или зарегистрируйтесь, чтобы ответить.