1. 소개

여러분은 사고를 피하지 못한다. 그리고 만일 그 사고가 리눅스 시스템에서 발생한다면, 마스터 부트 레코드 (MBR) 또는 LILO(리눅스 부트 로더)에 손상을 입히게 될 것이다. 하드 디스크 실패로 인해 리눅스가 기동되지 않을 경우도 있을 수 있다. 만일 여러분이 뜻하지 않게 하드 디스크의 파티션을 다시 나누어야 하거나 리눅스 컴퓨터에 Windows 98/NT와 같은 또다른 운영체제를 추가로 설치한다면, LILO는 또한 실패할 수 있을 것이다.

이 문서는 여러분한테 LILO 또는 리눅스에 관한 수천 쪽의 문서를 애써 보지 않더라도 긴급히 복구 가능하도록 몇 가지 아이디어, 팁, 속성 안내서(quick guide)를 제공한다.

1.1. 초소형 플로피 리눅스

어떠한 Windows 95/NT/2000, OS/2, BeOS 또는 리눅스 박스라도 복구하기 위해서는 한 장의 플로피 디스크에 맞춰진 초소형 리눅스(tiny linux)를 필요로 할 것이다. 아래에 제시된 초소형 플로피 리눅스의 목록을 보라 -

1.2. 준비 요령

다음 섹션에 있는 Tomsrtbt 플로피를 사용하여 로그인 한 후 /etc/fstab, /etc/lilo.conf와 같은 중요한 시스템 파일들을 백업하는 것은 바람직한 착상이다. 이것은 충돌 상황 또는 어떤 문제가 시스템 파일에 발생한 동안에 매우 유용할 수 있다.
bash# cp /etc/fstab /etc/fstab.orig
bash# cp /etc/lilo.conf /etc/lilo.conf.orig
bash# cp /etc/hosts /etc/hosts.orig
bash# cp /etc/hosts.allow /etc/hosts.allow.orig
bash# cp /etc/hosts.deny /etc/hosts.deny.orig
bash# cp /etc/inetd.conf /etc/inetd.conf.orig
bash# cp /etc/inittab /etc/inittab.orig
bash# cp /etc/networks /etc/networks.orig

1.3. 복구를 위한 신속한 조치

LILO 또는 시스템 실패로부터 복구하기 위하여 다음의 조치 단계를 따르라.

  1. 사태 1: 만일 여러분의 시스템이 기동되지 않으면 -

    tomsrtbt 플로피 또는 MuLinux 플로피를 구하라. (참고로 1.1절를 보라.) tomsrtbt 플로피로 기동하라. 파티션을 찾기 위해 fdisk를 사용하라. 이대로 하여 루트 파티션을 분간하도록 시도하라 -
    bash# fdisk /dev/hda
    bash# mkdir /test
    bash# mount /dev/hda1 /test
    bash# ls /test
    여러분은 이처럼 루트 파티션 목록을 보아야 한다 -
    bin   fd    lib   mnt  proc  sbin  usr
    boot  dev   etc   home  lost+found  opt  root  tmp   var
    만일 이것이 루트 파티션이 아니면, 다음 파티션인 /dev/hda2를 시도하라. 다음으로, 루트 파티션을 찾을 때까지 hda3, hda4, hda5 등을 계속 시도하라. 여전히 hda에서 찾아지지 않으면, hdb, hdc, hdd 등과 같은 다른 장치들에 대해 위의 조치 단계를 반복하라. 새로운 lilo 구성을 생성하기 위해 이런 것들이 요구되는 것처럼 /usr, /var, /boot 파티션 역시 필요하다.

    필자의 경우는, 루트 파티션이 /dev/hda4이다. 이것이 아래의 예제에서 사용된다.
    bash# mkdir /hda4
    bash# mount /dev/hda4 /hda4
    bash# cat /hda4/etc/fstab
    	fstab의 출력을 읽고, fstab 파일대로 파티션을 마운트하라. 아래를 보라 -
    bash# mount /dev/hda5 /hda4/boot
    bash# mount /dev/hda6 /hda4/usr
    bash# mount /dev/hda7 /hda4/var
    bash# mount /dev/hda8 /hda4/opt
    bash# mount /dev/hda9 /hda4/root
    bash# mount /dev/hda10 /hda4/home
    필자의 경우에, fstab 파일에 따라 hda는 boot이었고, hda6은 usr이었고, hda7은 var이었고, hda8은 opt이었고, hda9는 root이었고, hda10은 home이었고, hda11은 windows95 디렉토리였다.

    (/hda4/etc/fstab가 아닌) /etc/fstab를 편집하고, (여기에 제공된 샘플 코드를) 넣어라 -
    	/dev/hda4  /hda4           ext2 defaults 1 1
    	/dev/hda5  /hda4/boot      ext2 defaults 1 1
    	/dev/hda6  /hda4/usr       ext2 defaults 1 1
    	/dev/hda7  /hda4/var       ext2 defaults 1 1
    	/dev/hda8  /hda4/opt       ext2 defaults 1 1
    	/dev/hda9  /hda4/root      ext2 defaults 1 1
    	/dev/hda10 /hda4/home      ext2 defaults 1 1
    	/dev/hda11 /hda4/win95part vfat defaults 1 1
    
    필자의 컴퓨터에서, hda4는 리눅스 루트 파티션을 수용하고, hda5는 boot 파티션을 가지고,
    hda11은 windows 95 vfat 시스템을 가진다.
    
    bash# mkdir /hda4/win95part
    bash# mount /hda4/win95part
    	그리고, fsck 또는 e2fsck 명령어를 사용하여 시스템을 복구하라.
    bash# man fsck
    bash# man e2fsck

  2. 사태 2: 만일 LILO가 동작하지 않으면..

    상기한 사태1을 따르라. 만일 그 조치가 실패하면 이 조치를 따르라. 이제 여러분은 /hda4를 이미 마운트 했어야 하고, /etc/fstab 파일을 생성해 두어야 한다.
    bash# mount -a 
    bash# chroot /hda4 /sbin/lilo -q
    bash# man chroot
    bash# chroot /hda4 /sbin/lilo 
    또 다른 방법으로, chroot 대신에 /sbin/lilo를 직접 사용할 수도 있다. lilo의 -r 옵션이 실제로 chroot를 수행한다. 여러분이 lilo -r을 대신에 chroot를 사용하는 것이 매우 강력하게 권장된다. 훨씬 간편하고, 오류를 보다 쉽게 잡아낼 수 있기 때문이다.
    bash# man lilo
    bash# /sbin/lilo -r /hda4

  3. 사태 3: 만일 LILO가 동작하지 않으면..

    만일 사태 1과 2가 실패한다면, 만일 여러분이 (설치 동안 또는 'man mkbootdisk'를 사용함으로써) 'mkbootdisk'로 부트 디스크를 만들었다면, 그것으로 기동하여 여러분의 파티션을 복구하라. mkbootdisk는 mkbootdisk*.rpm 패키지에 있고, 여러분은 이것을 반드시 설치하여야 한다. 아니면, 에서 Linux/NT/Windows/DOS/Mac을 위한 부트 디스크를 구하라. 다른 선택은 이렇다 - 설치 Linux-CDROM을 찾아내라. 거의 모든 리눅스 배포본은 그 CD에 구조용(rescue) 디스크의 이미지를 제공한다. 리눅스에서는, 구조용 플로피 디스크를 생성하기 위해 "dd if=/cdrom/disks/rescue of=/dev/fd0"를 사용하라. 도스에서는 (리눅스 CD에 포함된) rawrite.exe를 사용하여 "rawrite 이미지-명칭 a:"를 하라.

  4. 사태 4: 상기한 사태 1, 2, 3이 실패하고, 부트 디스크를 가지지 못한 경우

    만일 여러분이 리눅스를 실행 중인 또다른 컴퓨터를 가진다면, root로 로그인하여 수행하라 -

    주의: 만일 여러분이 bzImage(예를 들어, bzImage-2.4.4)로서 여러분 자신의 커널을 컴파일 한다면, 다음과 같이 vmlinuz-2.4.4에 대한 하드 링크(hard link)를 생성하여야만 한다. (vmlinuz 명칭에서 z를 주의하라. vmlinux가 아니다.) 만일 여러분이 이것을 제대로 하지 못하면, mkbootdisk 명령은 실패할 것이다.
    bash# cd /boot
    bash# ls -l vmlinuz*
    bash# ln /boot/bzImage-2.4.4  /boot/vmlinuz-2.4.4
    이제 여러분이 bzImage와 vmlinuz를 가지게 되었다. 다음 명령들을 내려라 -
    bash$ man mkbootdisk
    bash# cp /etc/lilo.conf /etc/lilo-original.conf
    /etc/lilo.conf를 편집하여 상기한 '사태1'에서 획득한 바대로 루트 파티션 이름을 넣고, 공 플로피를 넣고, 명령을 내려라 -
    bash$ mkbootdisk --device /dev/fd0 2.2.12-20
    mkbootdisk는 mkbootdisk*.rpm 패키지에 있고, 여러분은 이것을 반드시 설치하여야 한다. /etc/lilo-original.conf를 /etc/lilo.conf로 되돌려야 한다!! 이 플로피를 가지고, 사태 3으로 가라.

  5. 사태 5: 이는 가장 나쁜 시나리오다. 원컨대, 여러분이 결코 이런 사태에 처하지 않으면 좋겠다. 1부터 4까지의 사태는 대부분의 경우에 이용할 것이다. 그러나, 단지 만일에 대비하여, 위의 사태 1,2,3,4 모두가 실패하는 경우에 -

    조치 1: and mount the partitions and backup the root partition to another partition having disk space with comamnds - tomsrtbt를 기동하라. (참고로 1.1절를 보라.) 파티션을 마운트 하고, 다음 명령어로 루트 파티션을 디스크 공간을 가지는 또다른 파티션에 백업한다 -
    	/etc/fstab을 편집하고, (여기에 제공된 샘플 코드를) 넣어라 (여러분의 디스크 레이아웃에
    	맞도록 반드시 변경하여야 한다) -
    		/dev/hda4  /hda4	ext2 defaults 1 1
    		/dev/hda11 /b1 		vfat defaults 1 1
    bash$ mkdir /hda4; mount /hda4
    bash$ mkdir /b1; mount /b1
    bash$ cd /
    bash$ df 
    	그리고, 루트 파티션을 tar로 백업하기 위해 /b1에 충분한 디스크 공간이 있는지 알아 보라.
    bash$ tar cvf /b1/root-hda4.tar   /hda4

    조치 2: 리눅스 cdrom을 넣고, 재기동(reboot)하고, /dev/hda4에 레드햇 리눅스를 설치한다. (그러나 어떠한 여분의(extra) 패키지도 설치하지는 말아야 한다. 매우 제한된 수의 최소 조건으로 루트, 부트 시스템, LILO 관리자만 설치하는 것이 필요하다.) 이는 또한 하드 디스크에 LILO를 설치할 것이다. 이제 리눅스를 기동하여 root로 로그인하고, 명령을 내려라 -
    bash$ man mkbootdisk
    bash# cp /etc/lilo.conf /etc/lilo-original.conf
    주의: /etc/lilo-original.conf를 /etc/lilo.conf로 되돌려야 한다!! /etc/lilo.conf를 편집하여 상기한 '사태1'에서 획득한 바대로 루트 파티션 이름을 넣고, 공 플로피를 넣고, 명령을 내려라 -
    bash$ mkbootdisk --device /dev/fd0 2.2.12-20
    bash# cp /etc/lilo-original.conf /etc/lilo.conf
    이것이 작동하는지 알아 보기 위하여 이 부트 플로피를 시험하라. 그 뒤에 상기한 조치 1에서처럼 /b1/root-hda4.tar에 tar를 사용하여 백업 해두었던 모든 파일을 원래대로 복원하라.

1.4. 경계 방책

여러분은 장차 생길 수 있는 문제점을 막기 위하여 다음과 같은 경계 방책을 취해야만 한다.

1.5. LILO를 제거하기

여러분은 MS DOS 프롬프트에서 DOS 명령어를 내려서 부트 섹터를 DOS 부트 로더로 대체할 수 있다:
	FDISK  /MBR
여기서 MBR은 "Master Boot Record"의 약자이다.

LILO를 없애는(uninstalling) 다른 방법에 대해서 /usr/doc/lilo*에 있는 linux에 관한 LILO 문서들을 보라. 그리고 'man lilo'를 또한 보라.

1.6. 흔히 있는 실수들

/etc/lilo.conf를 변경한 후에 변경 내용을 유효하도록 만들기 위해 반드시 lilo를 실행하여야 한다. 초보자들에 의해 저질러지는 너무나 흔히 있는 실수이다. 타자하라 -
bash# lilo -v -v -v