|  |  |
|
부트 과정 정리
init는 무얼 하는가?
init 프로그램은 시스템 스타트업을 관리하며, 그러고 난 후 시스템의 동작을 유지한다. 예를 들어 프로세스가 죽으면 init는 프로세스의 종료 상태 값을 수집하는 프로그램이다. 따라서 커널은 프로세스 언로딩(unloading)을 끝낼 수 있다. 정확한 스타트업 과정은 리눅스 버전마다 다르다. 이번 경우에는 우리 테스트 시스템을 부팅하는 데에서 init는 비지박스 버전에 따라 달랐을 것이다.
왜 이전 스타트업 스크립트가 그저 init를 불러내지 않고 exec /sbin/init를 사용하는지 궁금했을 수도 있겠다. 이유는 이런 것이다. 스타트업 스크립트는 이전 init이고, 특수한 프로세스 ID 1을 갖고 있다. init 프로그램은 그 프로세스 ID가 1이 아니라면 시스템의 스타트업 데몬이 되지 않는다. exec는 새로 프로세스 ID를 받는 대신 호출하는 셸 프로세스 ID를 획득하도록 한다.
초기 스타트업
init 프로그램은 최초 시스템 스타트업 스크립트인 /etc/init.d/rcS를 구동하면서 시작한다(그런 파일이 없다면 경고 메시지를 출력하고 계속 진행한다). 이후 /etc/inittab이 있다면 그에 따라 실행된다. /etc/inittab이 없다면 비지박스 init는 콘솔에 셀을 구동하고 재부팅과 종료 요청을 유도한다.
마무리
여러분만의 커널, 살짝 바꾼 initrd, 여러분이 만든 루트 파일 시스템을 이용하여 시스템을 부트하여 이제 셸 프롬프트까지 볼 수 있게 되었다. rcS 파일을 생성했다면 부트 시 시스템에서 환영 메시지가 나타날 것이다. 이제 동작하는 리눅스 시스템을 갖게 되었다. 꽤 작지만 완전히 소스에서 만들었고 손수 조립한 리눅스 시스템을 말이다.
이제 여러분이 다음에 할 일은 여러분 손에 달려 있다. 필자는 비디오 게임을 설치해 볼 것을 제안하지만 데이터베이스 서버나 웹 서버용으로 시스템을 설정해 볼 수도 있을 것이다. 디스크 작업이 많은 일을 할 계획이 있다면 USB를 통해 외장 하드 드라이브 사용을 고려해 보기 바란다.
기사의 원문보기
|  |
|