ACPI 깨우기 상태를 커널에서 수정할 수 있습니까?

ACPI 깨우기 상태를 커널에서 수정할 수 있습니까?

최근에 저는 가정 설정을 더욱 편안하게 만들기 위해 Wake on LAN을 실험하기 시작했지만 그 과정에서 ACPI 구성에 대해 궁금해졌습니다.

빠르게 확인한 후 내 이더넷 컨트롤러가 WOL을 지원한다는 사실을 확인하고 이를 사용해 보았습니다.

Settings for eth0:
    [...]
    Supports Wake-on: pumbg
    Wake-on: g

몇 가지 테스트를 거친 후 나는 다음과 같은 사실을 깨달았습니다.

  • 내 컴퓨터가 멈추는 동안 다른 장치에서는 WOL이 제대로 작동합니다.
  • 컴퓨터가 종료되면 아무 일도 일어나지 않습니다.

이제 문제는 집에 가기 전에 컴퓨터가 준비될 수 있도록 WOL을 사용하고 싶다는 것입니다. 작동하기 위해 컴퓨터를 일시 중지 모드로 유지해야 하는 경우(시스템은 몇 초 내에 다시 시작됨) 해당 기능이 필요하지 않습니다.

자세히 살펴보니 내 이더넷 카드에 S4가 있다는 것을 알았습니다.S 상태항목 /proc/acpi/wakeup:

Device  S-state   Status    Sysfs node
PXSX    S4        *enabled  pci:0000:09:00.0

내가 읽은 바에 따르면 이는 시스템이 S4(또는 그 이하) 상태(최대 절전 모드에 해당)에 있는 경우에만 내 이더넷 컨트롤러를 트리거로 사용할 수 있음을 의미합니다. 이는 일시 중지 모드(S1/S3)에서 WOL을 사용할 수 있지만 한 번만 실행할 수는 없는 이유를 설명합니다 poweroff(이로 인해 시스템이 소프트 종료인 S5로 전환된다고 생각합니다).

저는 ACPI에 대해 잘 알지 못하고 하드웨어에 대한 지식도 이더넷 컨트롤러까지 확장되지 않습니다. 제가 알고 싶은 것은 시스템이 꺼져 있을 때 S5의 이더넷 컨트롤러에 전원을 공급할 수 있는 방법이 있습니까? 내(3.13) Linux 커널에 권한이 있습니까, 아니면 이 모든 것이 내 마더보드(또는 컨트롤러)의 설계에 따라 달라집니까?

글을 써서 어떤 장치를 트리거로 사용할 수 있는지 결정할 수 있는 것 같습니다 /proc/acpi/wakeup(현재는 더 이상 사용되지 않는다고 생각합니다). 하지만 좀 더 구체적으로 설명하고 장치가 컴퓨터를 깨울 수 있는 상태를 결정할 수 있나요?

답변1

이는 마더보드 설계에 따라 다릅니다.

/proc/acpi/wakeupACPI 테이블의 마더보드 자체 설명을 기반으로 생성되었습니다. 여기에는 컴퓨터가 깨우기 이벤트에 사용할 수 있는 모든 장치와 해당 깨우기가 마더보드에서 지원되는 상태가 나열되어 있습니다. 깨우기 소스를 활성화/비활성화하는 것보다 더 구체적으로 지정할 수는 없지만 BIOS 메뉴에는 더 많은 설정이 있을 수 있습니다.

당신 말이 맞아요. poweroff기계를 S5에 넣으세요. 그러나 S5와 S4는 매우 유사한 상태에 있습니다. 종종 유일한 차이점은 절전 상태로 설정된 마더보드 칩 레지스터의 특정 비트입니다. 이는 하드웨어 측면에서 마더보드의 I/O 포트를 뒤집거나 I²C 장치에 기록하여 관련 레지스터를 수동으로 변경하는 경우 일반적으로 S5에서 웨이크업을 구성할 수 있음을 의미합니다. 작동하려면 칩셋, SuperIO 칩 등에 대한 데이터시트를 읽어야 합니다. 또는 init데몬을 수정하여 종료 시퀀스의 마지막 부분을 최대 절전 모드+다시 시작과 같은 것으로 대체하여 BIOS가 웨이크 소스를 활성 상태로 유지하도록 할 수 있습니다.

컴퓨터가 S4에서 깨우기를 지원하므로 가장 쉬운 해결책은 pm-hibernate대신 최대 절전 모드(예: via) 를 사용하는 것입니다 poweroff.

관련 정보