7.6. 무언가 잘못되었을 때

맞춤 커널을 빌드할 때 발생하는 문제점들은 크게 다음과 같은 네 가지로 분류할 수 있습니다.

config 명령이 실패한 경우

만약 config에 커널을 기술하고 수행시켰을 때 실패했다면, 어딘가에 간단한 에러가 있을 수 있습니다. 그러한 경우에 config는 문제가 발생한 행 번호를 화면에 출력합니다. 그러면 vi를 이용해서 빠르게 그 행으로 찾아갈 수 있습니다. 예를 글어서 다음과 같은 에러가 화면에 나타났다고 하면:

    config: line 17: syntax error

vi를 수행시킨 다음에 17G를 명령 모드에서 입력하여 한번에 문제가 발생한 곳으로 갈 수 있습니다. 카워드가 정확하게 입력되었는지 GENERIC커널이나 다른 참조 파일과 비교하여 보십시오.

make 명령이 실패한 경우

만약 make명령이 실패했다면, 보통 커널의 구성 파일에 config에서 잡아낼 만큼 심각하지는 않지만, 에러가 있다는 것을 알려 주는 것입니다. 설정 파일을 다시 한 번 보고 그래도 문제가 해결되지 않으면 FreeBSD 일반 질문 답변 메일링 리스트 로 커널 설정 파일과 함께 메일을 보내세요. 그러면 매우 빠르게 문제가 분석될 것입니다.

커널이 부팅되지 않을 때

커널이 부팅되지 않거나 장치를 잡아내지 못한다고 해서 당황하지 마십시오. 다행히도, BSD가 가지고 있는 문제가 있는 커널로부터 복구하는 기능은 매우 훌륭합니다. 단순히 FreeBSD 부트 로더에서 원하는 커널을 선택하기만 하면 됩니다.(다른 말로 하자면, 부트될 때 boot kernel.old 를 입력하십시오.) 커널을 새로 설정할 때마다 잘 작동하는 커널을 보관하고 있는 것이 좋습니다.

정상적인 커널로 부팅한 다음에는 구성 파일을 체크한 다음에 다시 빌드해 보십시오. /var/log/messages파일을 보면 성공적으로 부팅할 때마다 나타난 모든 커널 메세지를 볼 수 있습니다. 이는 매우 유용한 자료입니다. 또한, dmesg(8) 명령도 있습니다. 이는 현재 부팅할 때의 커널 메세지를 출력해 줍니다.

Note: 커널을 빌드하는 데 문제가 있다면, GENERIC을 조관하고, 잘 동작한다고 여겨지는 커널 이미지도 다른 이름으로 보관하십시오. kernel.old은 새로운 커널을 설치할 때마다 그 위에 덮어 쓰기 때문에 이 파일에만 의지할 수는 없습니다.또한, 제대로 동작하는 커널은 되도록 빨리 kernel위치로 옮기세요. 그렇지 않으면 ps(1)과 같은 명령이 제대로 동작하지 않습니다. make프로그램이 설치한 커널 파일의 "락을 푸는"(다른 커널을 커널 위치로 옮겨서 영구적으로 사용하기 위해) 가장 적절한 명령은 다음과 같습니다.

    # chflags noschg /kernel

그리고, 새로운 커널을 다른 곳으로 이동하거나 고쳐지지 않게 하기 위해서 "락을 거는" 방법은 다음과 같습니다.

    # chflags schg /kernel
커널은 동작하는데, ps가 제대로 작동하지 않는 경우!

만약 커널의 버전과 시스템 유틸리티가 만들어진 버전이 틀린 경우라면 - 예를 들어 4.X 커널에 3.X대의 시스템이라면, ps(1)이나 vmstat(8)과 같은 많은 시스템 상태 관련된 프로그램들은 더이상 동작하지 않을 것입니다. 이런 경우에는 그러한 유틸리티들과 libkvm을 함께 재컴파일하여야 합니다. 시스템의 다른 곳은 그대로 두고 커널의 버전만 올리는 것이 좋지 않은 이유 중 하나는 바로 이러한 것입니다.