Linux 6.18 · systemd 262

전원 버튼 입력에서 실제 전원 차단까지

버튼 감지, 종료 정책, 절전 복귀와 전원 차단을 구분합니다.

입력 이벤트가 먼저입니다

GPIO 버튼은 gpio-keys 같은 입력 드라이버를 통해 키 이벤트를 만들 수 있습니다. IRQ를 사용할 수 없는 구성의 gpio-keys-polled는 주기적인 읽기를 사용합니다. PMIC의 전원 키라면 해당 입력 경로를 확인합니다. GPIO 번호를 정했다고 곧바로 KEY_POWER 이벤트가 생기지는 않습니다.

키 코드, 눌림과 놓임, 극성, debounce는 입력 계층에서 확인합니다. 키를 받았는데 종료되지 않는 경우와 입력 자체가 없는 경우를 같은 정책 오류로 분류하지 않습니다.

logind가 이벤트를 처리할 조건

systemd 262의 logind는 power-switch 태그가 붙은 입력 장치를 감시합니다. HandlePowerKey는 동작 정책이며 기본값은 poweroff입니다. 다른 응용이 handle-power-key 같은 저수준 inhibitor를 잡으면 logind 대신 처리를 맡을 수 있습니다. 이는 shutdown·sleep을 막는 고수준 inhibitor와 구분합니다.

설정 파일의 값만으로 실제 처리 주체를 판단하지 않습니다. 장치 태그와 적용된 설정, inhibitor를 함께 확인합니다. 길게 누르는 시간과 동작도 버전·설정·하드웨어마다 확인하며 특정 초 단위를 공통 규칙으로 쓰지 않습니다.

wakeup과 실제 전원 차단은 다릅니다

wakeup-source는 절전 중 장치가 시스템을 깨울 수 있는 역할에 관한 기술입니다. 버튼의 종료 정책이나 PMIC 전원 차단을 자동으로 구현하지 않습니다. 운영체제의 정상 종료 요청 뒤에도 보드의 전원 제어 경로가 실제 차단을 담당해야 합니다.

하드웨어 강제 차단은 운영체제를 통하지 않을 수 있으므로 입력 로그만으로 판단할 수 없습니다. 제품의 회로·PMIC 규격을 확인해야 합니다. 이 글은 전원 차단 시험이나 특정 보드의 안전성을 검증한 결과가 아닙니다.

버튼 동작을 세 계층으로 나눕니다
  1. 입력

    드라이버와 키 이벤트

  2. 정책

    처리 주체와 inhibitor

  3. 종료·차단

    OS와 보드 전원 제어

출처와 연결

CPU 절전과 복귀 코드