logind.conf `IdleAction=kexec`는 정확히 무엇을 합니까?

logind.conf `IdleAction=kexec`는 정확히 무엇을 합니까?

이것logind.conf 매뉴얼 페이지설명하다:

유휴 동작 =

시스템이 유휴 상태일 때 수행할 작업을 구성합니다. "무시", "전원 끄기", "다시 시작", "중지", "kexec", "일시 중지", "최대 절전 모드", "하이브리드 절전", "일시 중지 후 최대 절전 모드" 및 "잠금" 중 하나를 선택합니다. 기본값은 "무시"입니다.

이 값이 어디에서도 설명되는 것을 본 적이 없습니다 kexec. 여기서 무슨 일이 벌어지고 있는 걸까요 kexec?

이에 상응하는 것이 있습니까?kexec(8)명령줄에서 실행되나요?

시스템이 유휴 상태인 동안 새 커널로 핫 재부팅하는 것이 어떤 상황에서 유용합니까?

답변1

예, 새 커널로 부팅하는 kexec데 사용할 수 있는 명령줄 도구 가 있습니다 .kexec

사용자 관점에서 현재 커널이 새 커널을 로드하고 실행을 시작하기 때문에(BIOS, 펌웨어, 부트로더 등을 우회) 더 빠른 경향이 있다는 점을 제외하면 사용은 kexec사용과 거의 동일 합니다.reboot

"kexec"(또는 "재부팅")과 같은 유휴 작업을 제공하기 위해 로그인하는 목적은 시스템을 항상 최신 상태로 유지하는 것입니다. 커널 업그레이드를 위해서는 종종 재부팅이 필요합니다. 유휴 감지는 알아내는 데 도움이 됩니다.언제지금은 시스템을 재부팅하기에 좋은 시기이며(너무 방해가 되지 않을 때) 시스템을 자주 재부팅하면(충분히 자주 유휴 상태라고 가정) 머지않아 새 커널로 부팅할 수 있습니다. 관리자가 업데이트 패키지 관리자를 설치합니다.

물론 모든 사용자가 이 설정에 동의하는 것은 아니므로 이 옵션의 기본값은 아닙니다(기본값은 "무시"이며 아무 작업도 수행하지 않습니다...).


이 작업이 정확히 무엇을 촉발했는지 이해하려면 kexec다음을 살펴보세요.systemctl kexec, 그리고 병렬 systemctl reboot. 해당 문서에는 다음과 같이 나와 있습니다.

시스템을 종료하고 다시 시작하십시오.프로그램 실행. 이는 다음과 같습니다.systemctl start kexec.target --job-mode=replace-irreversible --no-block.

그래서 특별한 과정을 거쳐야 하는데kexec.target, 일반적으로 다음과 같이 구성됩니다.필요하다systemd-kexec.service,그 다음에수신 전화/usr/lib/systemd/systemd-shutdown매개변수가 있는 도구( kexec를 통해 systemctl --force kexec밝혀졌습니다...)

한 단계 더 나아가려면 소스 코드를 살펴봐야 하며 이것이 systemd-shutdown kexec간단하다는 것을 알 수 있습니다.다음을 사용하여 다시 시작해 보세요.kexec -e, 그리고 실패할 경우 논리는 "정상적인" 다시 시작으로 돌아갑니다.

보고 있다켁섹(8)kexec -e매뉴얼 페이지를 보면 필요한 모든 것을 볼 수 있습니다구현하다kexec이 다시 시작됩니다. 이것이 시스템 통합의 전부입니다.

누락된 또 다른 부분은 부팅 커널을 메모리에 로드하는 부분, 즉 kexec -l실제 실행이 제대로 작동할 수 있도록 실행하는 부분입니다. 이것은 따라야 할 또 다른 토끼 구멍입니다. 나는 이것을 독자들을 위한 연습으로 제안하고 싶습니다(또는 U&L에 딱 맞는 별도의 질문일 수도 있습니다!)

관련 정보