init 프로세스가 가장 먼저 실행되고 모든 프로세스가 여기에서 시작된다는 것을 알고 있지만 init 전에 어떤 프로그램이든 시작할 수 있습니까? (부팅 시퀀스 초기에 실행되는 커널 드라이버를 작성하시겠습니까?)
프로그램은 자체 하드웨어의 다양한 부분을 테스트하고 루트 파일 시스템에 텍스트 파일을 작성하여 상태를 전달합니다. 부팅 시퀀스 중에 프로그램을 시작할 수 있는 경우, 실행 중인 프로그램이 부팅 시퀀스 초기에 초기화된 후 검사가 발생한 하드웨어에 있어야 한다는 점을 고려할 때 이를 수행하는 가장 좋은 방법은 무엇입니까?
컴퓨터가 켜진 후 몇 초 후에 이 프로그램이 시작되고 전체 시스템이 완전히 부팅되는 데 약 13초가 걸리기를 원합니다. 이는 방사선 테스트를 위한 애플리케이션이기 때문에 필요합니다. 방사선 테스트 중에 빔은 중이온, 양성자, 중성자 등의 펄스를 몇 초 간격으로 컴퓨터에 보냅니다. 빔이 다시 켜지기 전에 프로그램을 시작해야 하며 컴퓨터가 충돌하여 다시 재부팅될 수 있습니다.
답변1
이를 수행하는 몇 가지 방법이 있지만 ...
그러지 마세요.
보안 애플리케이션이 있는 경우 이를 제어하기 위해 Linux 기반 컴퓨터에만 전적으로 의존하지 마십시오. 이를 관리하려면 일종의 하드웨어 기반 감시 장치가 있어야 합니다.
제발.
답변2
귀하의 상황을 잘 알고 있다면 정기적으로 발생하는 방사선 광선으로 인해 컴퓨터가 부팅되지 않으며 이러한 두 가지 이벤트 사이에 컴퓨터를 부팅하여 확인하려고 합니다. 따라서 컴퓨터가 마침내 부팅되는지는 중요하지 않습니다. 그렇죠?
다음을 수행할 수 있습니다.
- 정적 프로그램 구축(즉, 정적 링크, 디스크의 라이브러리에 대한 종속성 없음)
initrd
이미지 에 올려보세요- Linux 부팅 프롬프트에서(메뉴를 사용
grub
하여 변경) 다음을 추가합니다.init=/path/to/your/program
프로그램이 시작됩니다대신에Standard init
이므로 컴퓨터가 다시 부팅되지 않지만 프로그램은 실행됩니다.
표준 Linux 설치에서 제공하는 것(데몬의 마운트 지점, 원격 액세스, 직렬 콘솔 등 제외)이 필요하지 않기를 바랍니다. /
시스템이 전혀 부팅되지 않기 때문에 그런 것이 전혀 없기 때문입니다. .
기기를 제대로 부팅해야 하는 경우 참고하세요.뒤쪽에코드가 이미 실행되었으며 이를 exec
/sbin/init
마지막 명령으로 사용할 수 있습니다.