이 질문은 호기심에서 나온 질문이기도 하지만 나 자신도 명쾌한 답을 찾지 못해서 나온 질문이기도 하다.
내가 읽고이 답변은 커널이 시스템을 종료하는 방법을 설명합니다.. 전반적으로 꽤 명확하다고 생각합니다. reboot.c
LXR에서 코드를 확인하세요 .kernel_power_off
해당 기능은 restart.c에 있습니다.호기심이 자극되었습니다. 불행하게도 LXR이 위치를 찾는 데 어려움을 겪고 있는 것 같습니다.기계 관련 코드~을 위한machine_power_off
, 이 기능이 무엇을 하는지, 어떻게 하는지 잘 모르겠습니다.
문제는기능 정의일반적으로 machine_power_off
특정 클래스의 기계(또는 제조업체)에 고유한 일부 바이너리 blob(아마도 독점 펌웨어?)를 기반으로 하거나 일반적으로 어셈블러 또는 C로 작성됩니까?
이제 2014년 4월부터 2021년 7월까지 빠르게 진행됩니다. 2014년 4월 답변은 제게는 이해가 되지만 이 답변이 준비된 이후로 많은 것이 변경되었습니다. 커널은 여러 번 수정되었으며 systemd
많은/대부분의 Linux 배포판의 기본 부분이 되었습니다.
내가 이해하는 한, halt
/ shutdown
는 이제 다음으로 표현됩니다.systemd
로그인관리자(?!): systemd-logind.service
. 보기 man logind.conf
및 man systemd-logind.service
공개 HandlePowerKey=
, HandleLidSwitchExternalPower=
옵션 및 관련 poweroff
작업 - 이러한 옵션 이름은 과 유사성을 나타내지 reboot.c
만 분명히 다릅니다. 업스트림 구현 제안에 더욱 주의를 기울이십시오.systemd-logind용 D-Bus 인터페이스이제 시스템 종료에 중요한 역할을 합니다. 지금 이 순간에도 노력하고 있어요"점들을 이으세요"사이.reboot.c
systemd-logind.service
동시에,내 배포판이 reboot.c
코드를 보존하는 것 같습니다. 내 OS에서 여전히 사용되기 때문에 코드가 유지 관리된다고 가정하면 systemd
또 다른 질문이 생깁니다.
질문: systemd
시스템 전원을 끄는 데 사용된 기반 옵션이 결국 실행됩니까 reboot.c
? 그렇지 않다면 의 역할은 무엇입니까 reboot.c
?