· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Docbook Sgml/LILO-crash-rescue-HOWTO

LILO, 리눅스 정지 구난 하우-투

LILO, 리눅스 정지 구난 하우-투

(LILO, Linux Crash Rescue HOW-TO)

Al Dev (Alavoor Vasudevan)

황성준

          
        

이 문서는 리눅스 시스템 실패(failures)로부터 복구하는 방법을 검토한다. 리눅스 시스템 실패에 대해서는 여러 가지 이유가 있을 수 있다 - LILO가 파괴되었거나, 리눅스가 기동(boot)에 실패하거나, 마스터 부트 레코드 (MBR)이 손상되었거나, LILO 또는 MBR을 지우는 Windows NT와 같은 또다른 운영체제가 설치되어 있을 때 리눅스가 기동에 실패하는 경우이다.

고친 과정
고침 10.12001-11-14고친이 황 성준
내용 갱신 및 버전업
고침 2.02000-09-27고친이 맹 지찬
2.0버전 최초 번역

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 플로피 http://www.toms.net/rb 또는 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 패키지에 있고, 여러분은 이것을 반드시 설치하여야 한다. 아니면, http://www.bootdisk.com에서 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. 경계 방책

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

  • 여러분은 때때로 그리고 여러분이 파티션을 변경할 때마다 긴급 부트 디스크를 꼭 만들어야 한다. 공 디스크를 넣고, 이렇게 하라 -

    bash$ man mkbootdisk
    mkbootdisk는 mkbootdisk*.rpm 패키지에 있고, 여러분은 이것을 반드시 설치하여야 한다.
    bash$ mkbootdisk --help
    bash$ mkbootdisk --device /dev/fd0 2.2.12-20

  • 여러분은 tomsrtbt 부트 플로피를 반드시 가까이에 두어야 한다. http://www.toms.net/rb를 들르라. (참고로 1.1절를 보라.)

  • http://www.croftj.net/~fawcett/yard을 들르라.

  • /root 및 /boot 디렉토리를 백업하라. Tomsrtbt 플로피를 기동하라. (참고로 1.1절를 보라.) 그런 다음에

    bash# vi /etc/fstab
    그리고, 다음 내용들을 넣어라 -
    		/dev/hda1 /a1 vfat defaults 1 1
    		/dev/hdb1 /b1 vfat defaults 1 1
    필자의 경우에, hda1은 리눅스 루트 파티션 '/'을 가졌다.
    bash# cd / 
    bash# tar cvf /b1/linux-root-partition-hda1.tar  a1
    bash# tar cvf /b1/linux-boot-partition-hda1.tar  a1/boot


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


2. 관련된 url들

LILO, 구조용 리눅스, 충돌 복구에 관련된 다음의 위치(locator)를 들르라 -


3. 이 문서의 다른 형식들

이 문서는 14 가지 상이한 형식으로 출판되어진다. 즉, DVI, Postscript, Latex, Adobe Acrobat PDF, LyX, GNU-info, HTML, RTF(Rich Text Format), 평문(Plain-text), Unix man pages, 단일 HTML 파일, SGML (Linuxdoc 형식), SGML (Docbook 형식), MS WinHelp 형식이 그것이다.

이 하우투 문서는 다음에 위치한다 -

  • http://www.linuxdoc.org HOWTOs에 클릭하고, 웹 브라우저 내에서 CTRL+f 또는 ALT+f를 사용하여 하우투 문서명을 검색하라.

여러분은 이 문서를 다음과 같은 미러 사이트(mirrors sites)에서도 찾을 수 있다 -

함sgml2html -split 0 xxxxhowto.sgml (단일 페이지 html 파일을 생성하기 위) sgml2html xxxxh함owto.sgml (html 파일을 생성하기 위) 문서는 http://www.sgmltools.org로부터 구해질 수 있는 "SGML-Tools"라고 불리는 도구를 사용하여 작성된다 - 소스를 컴파일 하기 위해 다음과 같은 명령어를 배울 것이다.

  • sgml2html xxxxhowto.sgml (html 파일을 생성하기 위함)

  • sgml2html -split 0 xxxxhowto.sgml (단일 페이지 html 파일을 생성하기 위함)

  • sgml2rtf xxxxhowto.sgml (RTF 파일을 생성하기 위함)

  • sgml2latex xxxxhowto.sgml (latex 파일을 생성하기 위함)


3.1. Acrobat PDF 형식

PDF 파일은 acrobat distill 혹은 Ghostscript을 사용하여 포스트스크립트(postscript) 파일로부터 생성될 수 있다. 그리고 포스트스크립트 파일은 LaTeX 파일로부터 생성되는 DVI로부터 생성된다. 여러분은 http://www.adobe.com로부터 distill 소프트웨어를 다운로드 할 수 있다. 샘플 세션이 아래에 제공된다:

bash$ man sgml2latex
bash$ sgml2latex filename.sgml
bash$ man dvips
bash$ dvips -o filename.ps filename.dvi
bash$ distill filename.ps
bash$ man ghostscript
bash$ man ps2pdf
bash$ ps2pdf input.ps output.pdf
bash$ acroread output.pdf &
또한, Ghostscript 명령어인 ps2pdf를 사용할 수도 있다. ps2pdf는 Adobe의 Acrobat Distiller 제품의 거의 모든 기능성에 비해 차이가 없는 작품이다: ps2pdf는 포스트스크립트 파일을 휴대용 문서 형식 (PDF) 파일로 변환한다. ps2pdfpdfwrite라고 불리는 특수한 "출력 장치(output device)"를 선택하여 Ghostscript를 호출하는 매우 작은 명령어 스크립트 (배치 파일)로서 구현된다. ps2pdf를 사용하기 위하여, Ghostscript가 컴파일 되었을 때 pdfwrite 장치가 makefile에 반드시 포함되어야 한다; 상세한 사항을 위해 Ghostscript를 만드는 데 관해 제공되는 문서를 보라.


3.2. Linuxdoc을 Docbook 형식으로 변환하기

이 문서는 linuxdoc SGML 형식으로 작성되어 있다. Docbook SGML 형식은 linuxdoc 형식보다 우위에 있고, linuxdoc에 비해 많은 특징을 가진다. linuxdoc은 매우 간단하고, 사용하기가 쉽다. Linuxdoc SGML 파일을 Docbook SGML으로 변환하기 위해서 ld2db.sh 프로그램과 몇 가지 펄(perl) 스크립트를 사용하라. ld2db 출력은 100% 완전하지는 않다. 따라서 여러분은 clean_ld2db.pl 펄 스크립트를 사용할 필요가 있다. 어쩌면 그 문서에서 한 두 줄을 손수 고쳐야 할 필요가 있을 수도 있다.

ld2db.sh은 100% 완전하지 않다. 따라서 여러분이 실행할 때 많은 오류를 얻게 될 것이다.
	bash$ ld2db.sh file-linuxdoc.sgml db.sgml
	bash$ cleanup.pl db.sgml > db_clean.sgml
	bash$ gvim db_clean.sgml 
	bash$ docbook2html db.sgml
그리고, 펄 스크립트를 실행한 후에, 사소한 오류 몇 가지를 손수 편집하여야만 한다. 예를 들면, 각 <Listitem>에 대해 닫는 태그(closing tag) </para>를 넣어야 할 필요가 있다.


3.3. MS WinHelp 형식으로 변환하기

여러분은 SGML 하우투 문서를 Microsoft Windows Help 파일로 변환할 수 있다. 먼저, 다음을 사용하여 sgml을 html로 변환한다.

	bash$ sgml2html xxxxhowto.sgml     (html 파일을 생성하기 위함)
	bash$ sgml2html -split 0   xxxxhowto.sgml (단일 페이지 html 파일을 생성하기 위함)
그다음에 HtmlToHlp 도구를 사용하라. 또한, 여러분은 winhelp 파일을 생성하기 위하여 sgml2rtf을 사용하고, RTF 파일을 사용할 수도 있다.


3.4. 다양한 형식을 읽기

dvi 형식의 문서를 보기 위하여 xdvi 프로그램을 사용하라. xdvi 프로그램은 ControlPanel | Applications | Publishing | TeX 메뉴 버튼에 의해 위치를 지정할 수 있는 레드햇 리눅스에서 tetex-xdvi*.rpm 패키지에 위치한다. dvi 문서를 읽으려면 명령을 내려라 -

	xdvi -geometry 80x90 howto.dvi
	man xdvi
그리고 마우스로 창의 크기를 조절하라. 조종하기 위해 화살표 키, Page Up, Page Down 키를 사용하라. 또한 위로, 중앙으로, 다음 페이지로, 이전 페이지로 등과 같이 이동하기 위해 숙련자 메뉴를 감추려면 'x'를 눌러라.

여러분은 'gv' (ghostview) 또는 'ghostscript' 프로그램을 사용하여 포스트스크립트 파일을 읽을 수 있다. ControlPanel | Applications | Graphics 메뉴 버튼에 의해 위치를 지정할 수 있는 레드햇 리눅스에서 ghostscript 프로그램은 ghostscript*.rpm 패키지에 있고, gv 프로그램은 gv*.rpm 패키지에 있다. gv 프로그램은 ghostscript 보다 훨씬 더 사용자에 친숙하다. 또한, ghostscript과 gv는 OS/2, Windows 95와 NT와 같은 다른 플랫폼에서 사용 가능하다. 여러분은 그런 플랫폼에서도 이 문서를 볼 것이다.

포스트스크립트 문서를 읽으려면 명령을 내려라 -

		gv howto.ps
		ghostscript howto.ps

여러분은 Netscape Navigator, Microsoft Internet explorer, Redhat Baron Web browser 또는 10 가지 다른 웹 브라우저의 어떤 것이라도 사용하여 HTML 형식 문서를 읽을 수 있다.

여러분은 latex에 대한 X-Windows 전위(front end)인 LyX를 사용하여 latex, LyX 출력물을 읽을 수 있다.


4. 저작권

저작권 정책은 LDP (Linux Documentation project)를 그대로 따라서 GNU/GPL이다. LDP는 GNU/GPL 프로젝트이다. 추가적인 요구로, 여러분은 모든 복사본마다 저자의 이름, 전자우편 주소, 이 저작권 공지문을 유지해야 한다. 만일 여러분이 이 문서의 어떠한 것이라도 변경하거나 추가한다면, 아무쪼록 이 문서의 저자들 모두한테 알리시오. 이 문서에서 언급된 상표명은 해당되는 개별 소유자의 재산이다.




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-08-10 11:52:29
Processing time 0.0170 sec