다음 이전 차례

7. 애로사항과 문제해결

부트디스크를 만들 때 단번에 성공하는 일을 거의 없습니다. 루트디스크를 만드는 일반적인 접근방법은 우선 당신의 현재 시스템으로부터 필요한 요소들을 끌어모아 조립한 디스켓 기반의 시스템을 가지고 시행착오를 거쳐 콘솔 상에 어떤 메시지가 나타나는 단계에까지 진입하는 것입니다. 일단 시스템이 어떤 메시지를 출력하는 단계에까지 이르면 전투의 반은 끝난 것입니다. 왜냐하면 이 단계까지 오면 출력된 메시지를 보고 무엇이 문제인지를 파악해 나갈 수 있으므로 시스템이 원활히 동작할 때까지 각각의 개별적 문제들을 해결해 나가기만 하면 되기 때문입니다. 시스템이 아무런 메시지 없이 그냥 멈추어 버린 경우라면 그 원인을 찾는 것은 어려운 일입니다. 시스템이 부트되어 어떤 메시지를 보낼 수 있는 단계까지 왔다는 말은 몇 가지 구성요소들은 동작하고 있으며 거기까지는 제대로 설정이 되었다는 말이 됩니다. 만일 시스템이 아무런 메시지를 남기지 않고 멈추어 버렸다면 아래의 순서대로 원인을 조사해 나가십시요.

일단 위의 일반적인 사항들을 확인했다면 이제 보다 구체적인 파일들을 확인합니다.

  1. init 가 /sbin/init 혹은 /bin/init 로 제대로 포함되었는지 확인합니다. 실행가능한 상태인지도 확인합니다.
  2. ldd init 해서 init 의 라이브러리들을 체크합니다. 보통 이것은 libc.so 가 되지만 하여튼 확인합니다. 필요한 라이브러리와 로더들을 포함시켰는지 확인합니다.
  3. 각 라이브러리들에 대해 그에 해당하는 알맞은 로더를 가지고 있는지를 확인합니다. a.out 에는 ld.so 가 있어야 하고 ELF 에는 ld-linux.so 가 있어야 합니다.
  4. getty(혹은 agetty, mgetty, getty_ps 등의 이른바 getty 류 프로그램)를 호출하는 부트디스크 파일시스템 내의 /etc/inittab 을 체크합니다. 하드 디스크의 inittab 과 비교하면서 체크해 봅니다. 당신이 사용하는 프로그램의 맨 페이지를 펼쳐놓고 과연 제대로 설정되었는지 확인합니다. inittab 는 리눅스 시스템에서 가장 다루기 어려운 부분입니다. 그 이유는 init 의 문법과 내용은 사용되는 init 프로그램에 따라 서로 다르고, 또 각 시스템의 특성에 의존적이기 때문입니다. init 에 관한 문제를 다루는 유일한 방법은 init 와 inittab 에 대한 맨 페이지를 읽고 당신의 시스템 본체가 부트할 때 하는 작업을 플로피 디스크 상에서 똑같이 수행해보는 것입니다. /etc/inittab 가 시스템 초기화 엔트리를 가지고 있는지 확인하십시요. 이 파일에는 시스템 초기화 스크립트들을 수행시키는 명령어가 반드시 포함되어 있어야만 합니다.
  5. init 에 했던 것처럼 getty 에 대해서도 ldd 를 실행시켜서 getty 가 무엇을 필요로 하는지 확인하고 필요한 라이브러리와 로더들이 루트파일 시스템에 들어있는지 확인합니다.
  6. 쉘 프로그램(예를들면 bash 나 ash 등)을 포함시켰는지 확인합니다. 쉘 프로그램은 rc 스크립트를 실행시키는 프로그램입니다.
  7. 만일 복구디스켓에 /etc/ld.so.cache 파일을 포함시켰다면 그것을 리메이크합니다.

init 가 시작되기는 하는데 다음과 같은 메시지를 받는 경우:

          Id xxx respawning too fast: disabled for 5 minutes

이것은 init 로부터 온 메시지입니다. 주로 getty 나 login 이 시작하자마자 죽어버렸음을 알리는 것입니다. getty 와 login 이 의존하는 실행파일들과 라이브러리들을 확인해 보십시오. /etc/inittab 내의 호출형식이 정확한지 확인하십시오. 만일 getty 로부터 이상한 메시지를 받았다면 아마도 /etc/inittab 내 의 호출형식이 어딘가 틀렸을 것입니다. getty 프로그램들의 옵션은 다양합니다. 심지어 같은 agetty 프로그램에서조차 버전에 따라 호출형식이 서로 다른 경우도 있습니다.

만일 로그인 프롬프트가 떴고 제대로 된 로그인 네임을 넣었는데도 시스템 프롬프트가 즉각 또다른 로그인 네임을 요구한다면, 문제는 아마도 PAM 이나 NSS 에 관련된 것일 겁니다. PAM 과 NSS에 대한 대책 절을 참고하세요. shadow password 를 사용하면서 깜박 /etc/shadow 를 부트디스크로 복사해 넣지 않았을 수도 있습니다.

복구 디스켓에 있는 df 등등의 일부 실행파일을 실행했을때 다음과 비슷한 메시지를 받는 경우: df: not found

다음 두가지를 확인하십시요. (1) 그 바이너리가 위치한 디렉토리가 PATH 에 잡혀있는지 (2) 그 프로그램이 필요로 하는 라이브러리와 로더를 가지고 있는지.


다음 이전 차례