Не выключается компьютер после нажатия кнопки POWER на системном блоке.
Блок питания АТХ. Система довольно старая: PII-300 + 440LX (чипсет). ACPI в биосе я не нашел, только АРМ.Система FreeBSD5.4, ядро свое. В ядре apm включен:
device apmв NOTES следующее:
device apm
hint.apm.0.flags="0x20"В /etc/rc.conf следующее:
apm_enable="YES"
apmd_enable="YES"При загрузке пишет следующее:
apm0: <APM BIOS> on motherboard
apm0: found APM BIOS v1.2, connected at v1.2Если выключать при помощи "shutdown -p now" то все отлично, а вот если нажать на кнопку выключения питания то система сразу вырубается без выключения.
Юзера могут отключать сервер только кнопкой питания. Другого способа нет.Где копать подскажите? Как включить эту кнопку.
Спасибо всем кто откликнулся.
>Не выключается компьютер после нажатия кнопки POWER на системном блоке.
>Блок питания АТХ. Система довольно старая: PII-300 + 440LX (чипсет). ACPI в
>биосе я не нашел, только АРМ.
>
>Система FreeBSD5.4, ядро свое. В ядре apm включен:
>device apm
>
>в NOTES следующее:
>device apm
>hint.apm.0.flags="0x20"
>
>В /etc/rc.conf следующее:
>apm_enable="YES"
>apmd_enable="YES"
>
>При загрузке пишет следующее:
>apm0: <APM BIOS> on motherboard
>apm0: found APM BIOS v1.2, connected at v1.2
>
>Если выключать при помощи "shutdown -p now" то все отлично, а вот
>если нажать на кнопку выключения питания то система сразу вырубается без
>выключения.
>Юзера могут отключать сервер только кнопкой питания. Другого способа нет.
>
>Где копать подскажите? Как включить эту кнопку.
>Спасибо всем кто откликнулся.копать надо в сторону другого компа!
эти старые системы так и работают... :0 у меня тажа петрушка
А можно присвоить какой нибуть клавише (F12 например) команду shutdown -p now? Меня бы и это устроило.
>А можно присвоить какой нибуть клавише (F12 например) команду shutdown -p now?
>Меня бы и это устроило.
man bind
Мне нужно делать это когда юзера не залогинились, тоесть из syscons.
Вроде как нажимаешт Ctrl+Alt+Del и перегружаешся. А мне надо shutdown -o now.
>Мне нужно делать это когда юзера не залогинилисьсобираеш простенькую схемку кнопки в СОМ-порт
и вешаеш в систему демона...
(с) не мои. Работает железобетонно (freebsd 4.11, 5.3)------------------------КУСЬ...
Subject: Схема простого переключателя для последовательного портаСхема переключателя с индикатором текущего режима, подключаемого к
последовательному порту и периодически запускающего один из 2 скриптов
в зависимости от режима переключателя.switcher.c
------------/*
Simple program to monitor the state of switcher and execute two
different scripts according to the state. Current state
is displayed by LED indicatorDB-9 Connector
Pin Signal Pin Signal
-------------------------------------------------------------------
1 CD Carrier Detect 6 DSR Data Set Ready
2 RXD Receive Data 7 RTS Request to Send
3 TXD Transmit Data 8 CTS Clear to Send
4 DTR Data Term. Ready 9 RI Ring Indicator
5 GND Signal GND
Circuit diagram
DB9
1 DCD o-------------|------------|
4 DTR o---/\/\/\----| |
10k \\ switcher
\\
|
5 GND o--------------------------|
-------
| - |
| LED |
| + |
7 RTS o---/\/\/\-----------------|
1k
Author: Tigran Zakaryan tigr@irphe.am
*/#include <sys/ioctl.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>int main(int argc, char **argv)
{
int fd;
int dtr_bit = TIOCM_DTR;
int rts_bit = TIOCM_RTS;
int flags, cntr_bits;
int status, oldstat = -1;
//
if (argc < 4) {
fprintf(stderr, "Usage: switcher <device> <script1> <script2>\\n");
exit(1);
}
// Daemonize
switch(fork()) {
case 0: // Child
setsid();
break;
case -1: // Error
exit(1);
default: // Parent
exit(0);
}
if ((fd = open(argv[1], O_RDWR | O_NDELAY)) < 0) {
exit(1);
}
// DTR should be high. Force it
ioctl(fd, TIOCMGET, &cntr_bits);
cntr_bits |= dtr_bit;
ioctl(fd, TIOCMSET, &cntr_bits);
// Sample the DCD line
while(1) {
// Get the status
ioctl(fd, TIOCMGET, &flags);
// Calculate present status
status = (flags & TIOCM_CAR);
// Did DCD drop to zero? (switch is "ON", light is "ON")
if (oldstat != 0 && status == 0) {
// Script1
system(argv[2]);
// Switch light "ON"
ioctl(fd, TIOCMGET, &cntr_bits);
cntr_bits |= rts_bit;
ioctl(fd, TIOCMSET, &cntr_bits);
}
// Did DCD come up again? (switch is "OFF", light is "OFF")
if ((oldstat == 0 && status != 0) || (oldstat == -1 && status != 0)) {
// Script2
system(argv[3]);
// Switch light "OFF"
ioctl(fd, TIOCMGET, &cntr_bits);
cntr_bits &= ~rts_bit;
ioctl(fd, TIOCMSET, &cntr_bits);
}
// Remember status and sleep for 1 second
oldstat = status;
usleep(1000000);
}
// Never happens
return(0);
}
Makefile
-----------CC=g++
all: switcher
switcher: switcher.c
$(CC) -o switcher switcher.c
chmod 700 switcherclean:
rm -f *~ core switcher
Встречный вопрос, добавление в ядро device apm + пару строчек в rc.conf, позволит отлавливать нажатие кнопки Power и выполнять shutdown -b now? Уж очень надо.
Честно говоря не понятно:>в NOTES следующее:
>device apm
>hint.apm.0.flags="0x20"
>
Где такой - NOTES, за что отвечае?
За помощь, заранее спасибо. Обязательно посмотрю man band, не разу не пользовался...
>Не выключается компьютер после нажатия кнопки POWER на системном блоке.
>Блок питания АТХ. Система довольно старая: PII-300 + 440LX (чипсет). ACPI в
>биосе я не нашел, только АРМ.
>
>Система FreeBSD5.4, ядро свое. В ядре apm включен:
>device apm
>
>в NOTES следующее:
>device apm
>hint.apm.0.flags="0x20"
>
>В /etc/rc.conf следующее:
>apm_enable="YES"
>apmd_enable="YES"
>
>При загрузке пишет следующее:
>apm0: <APM BIOS> on motherboard
>apm0: found APM BIOS v1.2, connected at v1.2
>
>Если выключать при помощи "shutdown -p now" то все отлично, а вот
>если нажать на кнопку выключения питания то система сразу вырубается без
>выключения.
>Юзера могут отключать сервер только кнопкой питания. Другого способа нет.
>
>Где копать подскажите? Как включить эту кнопку.
>Спасибо всем кто откликнулся.
1) кнопку надо держать если ATX корпуса
2) использовать ЧТО-ТО одно: либо apm (apmd -> /etc/apmd.conf), либо
acpi - вместе нельзя, если используется apm, убедиться что acpi ->
disable
3) почему не попробовать acpi? да, факт известный что старые PC лучше
с apm работают, а новые ("новые" BIOS) лучше с ACPIman apm
man 4 apm
man acpi