FreeBSD 핸드북 : FreeBSD 커널 설정 : 문제 해결
Previous: 장치 노드 만들기
Next: 보안

5.5. 문제 해결

맞춤 커널을 만들 때 발생할 수 있는 네가지 부류의 문제가 있습니다. 그것들은 아래와 같습니다:

Config 명령어 실패

커널 설정에 대해 config 명령어을 주었을 때 그것이 실패한다면, 대부분 어딘가에 단순한 실수를 했을 경우입니다. 다행히 config 명령어는 문제가 생긴 행 번호를 출력하므로, vi로 빨리 찾아낼 수 있습니다. 예를 들어, 만일 아래와 같은 메세지가 나오면:

config: line 17: syntax error
vi의 명령어 모드에서 ``17G''를 타이핑하면, 문제가 발생한 행으로 이동할 겁니다. GENERIC 커널이나 다른 참고물과 비교해가면서 키워드가 정확하게 입력되었는지 확인합니다.

Make 명령어 실패

만일 make 명령어가 실패하면, 보통 config가 잡아낼 만큼 겉으로 드러나지는 않지만 커널 설정에 오류가 있다는 것을 알려주는 것입니다. 역시, 설정 부분을 찬찬히 살펴 보시고, 그래도 해결이 안 되면 FreeBSD 일반 질문 메일링 리스트 <freebsd-questions@FreeBSD.ORG>으로 여러분의 커널 설정을 첨부해서 메일을 보내세요. 그러면, 그것을 매우 빨리 진단되어질 겁니다.

커널 부팅 실패

새로운 커널이 부팅되지 않거나, 장치를 인식하지 못한다고 해서, 당황하지 마세요! 다행히 BSD는 문제가 있는 커널로부터 복구하는 뛰어난 메카니즘을 가지고 있습니다. 단순히 FreeBSD 부트 프롬프트에서 리턴을 치는 대신에 부트하기를 원하는 커널의 이름(예를 들면 ``kernel.old'')을 입력하면 됩니다.커널을 재설정할 때, 잘 동작한다는 기존의 커널을 그대로 간직해 두는 것이 바람직합니다.

문제가 생기지 않는 커널로 부팅한 후, 설정 파일을 확인하고 다시 한번 커널을 빌드해 보세요. 성공적으로 부팅할 때마다 모든 커널 메세지를 기록하는 /var/log/messages 파일은 좋은 정보원이 될 겁니다. 또한 dmesg(8) 명령어는 현재 부팅 때의 커널 메세지를 출력합니다.

주: 커널의 빌드 중에 문제가 발생할 소지가 있다면, GENERIC이나 제대로 동작하는 다른 커널을 다음의 빌드 시에 지워지지 않을 다른 이름으로 보존해야 합니다. 새 커널의 설치시 제대로 작동하지 않는 최근에 설치한 커널로 kernel.old가 덮여 쓰여지기 때문에 kernel.old을 사용할 수 없습니다. 그리고, 가능한한 빨리 동작하는 커널을 적절한 ``kernel''의 위치로 이동시킵니다. 그렇게 하지 않으면 ps(1)와 같은 명령어가 동작하지 않습니다. make로 설치한 커널 파일을 (영구적으로 다른 커널로 되돌리기 위해) ``unlock''하기 위한 적절한 명령어는:
# chflags noschg /kernel
입니다. 만일 새로운 커널 또는 중요한 파일을 함부로 이동하거나 고칠 수 없도록 하기 위해서 한 장소에 ``lock'' 하려면 아래처럼 합니다:
# chflags schg /kernel

커널은 동작하지만, ps 명령어가 더이상 동작하지 않아요!

만일 시스템 유틸리티와 만들어진 것과 다른 버전의 커널을 설치한 경우, 예를 들면, 시험삼아 ``2.2.0''커널을 2.1.0-RELEASE 시스템상에 설치하는 경우, ps(1)와 vmstat(8)와 같은 많은 시스템 상태 확인 명령어가 동작하지 않게 됩니다. 그런 유틸리티와 libkvm를 재컴파일해야 합니다. . 이것은 운영체제의 나머지 부분과 다른 버젼의 커널을 사용하는 것은 일반적으로 좋지않기 때문입니다.


FreeBSD 핸드북 : FreeBSD 커널 설정 : 문제 해결
Previous: 장치 노드 만들기
Next: 보안