2014-08-28 2 views
3

외부 전원 공급 장치가있는 나무 딸기 판에 Linux raspberrypi 3.6.11+를 실행하고 있습니다. 전원 공급 장치 "꺼짐"스위치는 GPIO를 통해 제어됩니다.리눅스를 종료하고 전원을 끄는 적절한 방법은 무엇입니까?

"shutdown -h -P now"를하고 시스템이 종료 (정지) 될 때까지 기다렸다가 프로그램 (killpower)을 실행하여 전원을 차단하여 적절한 gpio 핀을 토글하십시오. 필자의 주요 목표는 파일 시스템이 전원이 제거 될 때 손상되지 않는 상태에 있는지 확인하는 것입니다.

저는 실행중인 모든 프로세스에 SIGTERM (및 SIGKILL)을 보내는 runlevel 1 스크립트 killproc를 활용하려고했습니다. 나는 SIGTERM을 잡기 위해 killpower를 썼다. 20 초를 기다렸다가 gpio powerkill sequence를 보낸다. SIGTERM 타임 아웃 후에도 killpower pid가 여전히 실행 중이더라도 killproc 스크립트를 수정하지 않았습니다.

이것이 작동하지 않으면 killproc을 실행 한 후 /init.d/halt SCRIPT가 실행되고/sbin/halt가 호출됨을 발견했습니다./sbin/halt은 SIGKILL로 모든 프로세스를 죽이기 때문에, killpower proc는 20 초가되기 전에 죽을 것으로 예상됩니다. 이제는이 접근 방식이 어떻게 작동하는지 보지 못합니다.

또한 init은 SIGPWR 신호 (권장되지 않음)에서 작동 할 수 있지만 powerwait/powerfail을 실행할 수 있음을 알 수 있습니다. 이 시점에서 시스템의 전원을 끌 수 있습니까? 나는이 프로그램들이 무엇을 구현해야 하는지를 알 수 없다.

init.d에 다른 종료 스크립트를 설치하려고 생각했지만 실행 수준이 "정지"(수준 1 또는 수준 0)인지 혼동합니다.

shutdown 명령의 결과로/sbin/halt가 실행되기 바로 전에 전원을 종료해도됩니까? 일단/sbin/halt가 실행되면 아무 것도 실행되지 않을 것이라고 수정합니까?

+0

파일 시스템이 손상 될 우려가있는 경우, 파일을 쓰기 위해 열어 둘 수있는 다른 모든 프로세스 (예 : rsyslogd)가 종료 된 후'ro' (읽기 전용) 옵션으로 fs를 다시 마운트하는 방법은 어떻습니까? 읽기 전용을 다시 마운트하는 데 성공한 경우 아무 것도 손상시키지 않고 전원을 종료하는 것이 안전해야합니다. remounting이 캐쉬를 없앨 지 확신하지 못하기 때문에'sync '에 대한 호출을 추가하십시오. – oxygene

+0

/etc/rc0.d 스크립트를 보면 umountfs와 umountroot가 있습니다 : fs ro를 다시 마운트하십시오. 나는 "killpower"proc을 실행 한 직후에 실행을 멈추기 전에 실행했다. 실제 해결책은 ACPI가있는 커널을 다시 빌드하는 것이지만, 다른 날이 될 수도 있습니다. – user1967890

답변

0

내가 원격으로 로그인 할 때 리눅스 박스의 전원을 끄는 방법은 단순히 'poweroff'명령을 사용하는 것입니다. 그런 다음 시스템이 정상적으로 종료되고 마침내 스스로 꺼집니다.

+1

poweroff는 halt -p와 동일합니다. 실행 수준 0이 아닌 경우 halt가 호출되면 shutdown을 호출합니다. shutdown은 결국 시스템을 runlevel 0으로 가져간 다음 halt가 호출됩니다. 실제로 전원 공급 장치가 꺼 지도록 명령하려면 정지가 필요합니다. – user1967890

관련 문제