3.3. 문제 해결

열심히 커널 옵션들을 설정하고 컴파일까지 마쳤는데 새로운 커널이 여러분을 배신할 때가 있습니다. 부트는커녕 LILO 프롬프트도 끝까지 볼 수 없는 상황이라면 어떻게 할까요.

커널 컴파일을 새로 했는데 부트조차 안된다면 난감하겠지만 사실 심각한 일은 아닙니다. 파일시스템을 비롯해 나머지 영역들은 전혀 다치지 않고 그대로 잘 있거든요. 걱정 말고 아래처럼 해보세요.

3.3.1. LILO 프롬프트가 멈춰요

Werner Almsberger의 Bootdisk-HOWTO를 참고하세요

LILO가 자신을 로드할 때 LILO 라는 단어를 화면에 표시합니다. 각 문자는 어떤 정해진 작업전이나 후에 출력됩니다. 어느 시점에서 LILO가 실패하면, 그때까지 출력된 문자를 통해 문제가 무엇인지 알아낼 수 있습니다.

표 3-1. LILO error codes

문자문제
(아무 글자도 없을 때)LILO가 조금도 로드되지 않았습니다. LILO 가 설치되지 않았거나 리로가 설치된 파티션의 부트 섹터가 활성화되지 않았습니다.
L첫 단계가 로드되어 부트로더가 시작되었지만, 두번째 단계가 로드되지 못했습니다. 두자리 에러코드들은 문제 유형을 나타냅니다. ("디스크 에러 코드" 부분을 참고하세요). 일반적으로 매체 이상이나 지오메트리가 실제 매체와 다른 경우입니다. (예를 들어 잘못된 디스크 패러미터)
LI부트로더의 첫 단계가 두번째 단계를 로드했지만 실행시키는 데 실패했습니다. 지오메트리를 잘못 짝지었거나 map installer를 실행하지 않고 /boot/boot.b를 옮기는 경우입니다.
LIL부트로더의 두번째 단계가 시작되었지만 map 파일에서 디스크립터 테이블을 읽어들이지 못했습니다. 대부분 매체 이상이나 지오메트리가 어긋났기 때문입니다.
LIL?두번째 단계가 잘못된 어드레스로 로드되었습니다. 이 코드는 전형적으로 알아채기 어렵게 지오메트리가 어긋났거나 map installer를 실행하지 않고 /boot/boot.b를 옮긴 경우 나타납니다.
LIL-디스크립터 테이블이 잘못되었습니다. 지오메트리를 잘못 짝지었거나 map installer를 실행하지 않고 /boot/boot.b를 옮기는 경우 나타납니다.
LILOLILO 의 모든 부분이 성공적으로 로드되었습니다.

LILO 가 부트 이미지를 로드할 때 BIOS가 에러 신호를 낸다면 각각의 에러메시지가 표시됩니다. 이 코드들은 0x00 부터 0xbb 까지 입니다. 설명은 LILO 사용자 가이드를 참고하세요.

3.3.2. 새 커널로도 이전 커널로도 부트할 수 없다면?

여러분에게 데비안 CD가 있다면 아래와 같은 방법으로 손쉽게 대체할 수 있습니다. 레드햇 계열이라면 더 복잡합니다. 설치할 때처럼 리눅스 CD로 부팅하면 'LILO Boot:' 프롬프트가 나타납니다. 이 프롬프트에 이어서 다음과 같이 입력합니다:

LILO Boot:
linux root=/dev/hda1 ro initrd= 

* hda1은 여러분의 시스템에 맞게 고칩니다. 예를 들어 여러분의 리눅스 루트 파티션이 두 번째 하드 드라이브의 두 번째 파티션에 설치되어 있다면 /dev/hdb2가 맞는 값입니다.

initrd 항목을 비워두었으므로 설치프로그램이 실행되지 않고 리눅스가 깔린 /dev/hda1 파티션을 루트 파티션으로 패스 워드 없이 로그인 됩니다.

3.3.3. 나는 CD-ROM으로 부트할 수 없는데:

CD-ROM으로 부트할 수 없다면, 도스로 부트해서 loadlin.exe를 사용할 수 있습니다. 도스가 설치되어 있지 않다면 주변에서 (아마) 흔하게 구할 수 있는 도스/MS윈도용 부트 디스켓으로 부트합니다.

도스 시스템에서 리눅스 커널을 로드하는 프로그램 LoadLin.exe을 사용한다면 CD-ROM에 들어 있는 커널 이미지를 도스 파티션에 복사하고 배치파일을 만들어줍니다. 아래 예문은 hda1(그러니까 첫 번째 하드 드라이브)에 MS 윈도우즈나 도스가 설치되어 있을 때 사용할 수 있는 방법입니다. C:는 하드 드라이브, D:는 CD-ROM 드라이브라 가정합니다:

먼저 커널 이미지와 loadlin.exe등 필요한 파일들을 하드드라이브로 옮깁니다.

c:
cd \
mkdir usr
mkdir usr\linux
xcopy32 d:\dosutils\* c:\usr\linux /s

그 다음, 아래 명령으로 리눅스로 부트할 수 있는 배치 프로그램을 구성합니다. ^z는 키보드에서 <F6> 키를 누르면 나타납니다.

c:
cd \usr\linux
c:\usr\Linux>copy con Lnx_boot.bat
LoadLin boot\bzImage root=/dev/hdb1
^Z
c:\usr\Linux>Lnx_boot.bat