FreeBSD 6.x, 7.x では acpi(4)が使えていると
$Id: fb7-nosusp.html,v 1.4 2008/07/17 01:13:41 kabe Exp $
sysctl にて、関連機能を全部殺します。
... ## LOCAL # defaults: #hw.acpi.power_button_state: S5 #hw.acpi.sleep_button_state: S1 #hw.acpi.lid_switch_state: NONE #hw.acpi.standby_state: S1 #hw.acpi.suspend_state: S3 ## Disable zzz(8). ## NOTE: Ctl-Alt-SPC/Alt-Break and "acpiconf -s 3" will still freeze the system hw.acpi.sleep_button_state=NONE hw.acpi.lid_switch_state=NONE hw.acpi.standby_state=NONE hw.acpi.suspend_state=NONE # default: # debug.acpi.do_powerstate=1 ;# do PCI powerstate manipulation # debug.acpi.suspend_bounce=0 ;# do not dryrun ## disable kernel acpi suspend entirely, including "acpiconf -s 3" ## NOTE: will still shutdown bge0 for several seconds debug.acpi.do_powerstate=0 debug.acpi.suspend_bounce=1 # resume_beep will audible notify of oscillation during failed wakeup debug.acpi.resume_beep=1 |
・zzz(8) (シェルスクリプト) は、
hw.acpi.suspend_state
(普通は"S3") が
hw.acpi.supported_sleep_state
(読み取り専用、普通は"S1 S3 S4 S5"
)
に含まれているかチェックし、あれば acpiconf -s 3
を
発行します。
このロジックを潰すため、suspend_state などに"NONE" ("S0"も可) に設定します。
動作確認:Ctrl+Alt+Spcを連打すると、サスペンドせずにカーネルメッセージ
acpi: suspend request ignored (not ready yet)
が出ます。
(本来は2重起動を回避するためのエラー)
・これでも acpiconf -s 3
を間違って?叩くと
サスペンドするので、
カーネルのACPI処理で止められるところは止めます。
debug.acpi.do_powerstate=0
debug.acpi.suspend_bounce=1
動作確認:acpiconf -s 3
でも電源が切れません。
(数秒間反応がなくなることはあります)
ACPIに問題がある場合は、完全無効化が非常に有効で、 以下の設定でもサスペンド無効に出来ます。
... hint.acpi.0.disabled="1" |
/usr/sbin/zzz を消すのが簡単なのは事実なので、方法としては当然アリです。
が次回のアップデート時に復活してしまいます。
/etc/sysctl.conf
なら必ずmergemasterで検査されるので
多少安心。
いやまあその通りなのですが
Ctrl+Alt+Space などのコンソールキーでのサスペンドは
kbdmap(5)の
susp
機能で起動されます。
% kbdcontrol -d | grep susp 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O #スペース 104 slock saver slock saver susp nop susp nop O #Break 121 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O #無変換 123 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O #変換 |
再起動(Ctl+Alt+Del)、DDB起動(Ctl+Alt+Esc)に関してはsysctlの
hw.syscons.kbd_debug: 1 hw.syscons.kbd_reboot: 1にて有効無効を制御できますが、hw.syscons.kbd_suspend は無いので、 お手軽に無効化出来ません。
hw.syscons.kbd_suspend 追加パッチ で、 お手軽にサスペンド防止できるようになります。