'grub 복구'에 해당되는 글 1

  1. 2007.09.18 컴퓨터 부팅 과정 대~충 알아보기 (1)
IT 이야기 | Posted by 민창 2007.09.18 10:14

컴퓨터 부팅 과정 대~충 알아보기

얼마전 제가 쓰는 노트북에 쿠분투를 깔아 쓰다가 윈도우XP 가 급 필요해서 비스타에서 XP로 다운그레이드를 진행하였습니다. 그러다보니 저의 완소 부트로더였던  GRUB 이 자연스럽게 날아가 버리면서 윈도우즈로만 부팅이 되는 상황이 발생했습니다. 전에 이런적이 한번 있었는데 잘 몰라서 쿠분투를 다시 설치하여 사용했습니다.; ;; 여간 바보같은 일이 아니죠. 그래서 이참에 GRUB 복구와 함께 리눅스 부팅 과정을 한번 알아볼까 하는 생각이 들었습니다.

제일 처음 해본일은 일단 리눅스 컴퓨터 부팅 과정 알아보기!

부팅 과정에 대해서는 제가 설명할것이 아니고 ( 아직 설명할 정도의 이해는..;; ) 역시 IBM DW에 '리눅스 부팅 프로세스 연구'라는 article을 통해서 쉽게(?), 자세히 알아볼 수 있었습니다. ( DW의 저작권도 있고해서 제가 퍼다 나르기는 좀 그렇습니다. ^^;; )

간단하게 설명하자면
--- BIOS ---
먼저 pc의 전원이 켜지면 BIOS 에서 부터 부팅이 시작되는데 BIOS라는 것이 뭐하는 거냐면 ( 급 위키피디아 검색;; )

BIOS refers to the firmware code run by an IBM compatible PC when first powered on. The primary function of the BIOS is to prepare the machine so other software programs stored on various media (such as hard drives, floppies, and CDs) can load, execute, and assume control of the PC[3]. This process is known as booting up.

출처 : http://en.wikipedia.org/wiki/BIOS

결국 여러가지 부팅 가능한 장치( 하드디스크, CD, 플로피디스크 등..) 를 CMOS 라는곳에 정의된 순서대로 사용가능 할 수 있게 머신을 준비시켜 주는 것입니다. 이런 프로세스를 보통 우리가 말하는 '부팅'이라고 한다는 군요. 여기서 준비를 안시켜주면 곤란한 경우가 생기는데요... 저의 예를 들자면 전에 내장 CD롬이 없는 친구의 노트북을 포맷시켜 줄려고 하는데 CMOS에서 USB장치에 대한 부팅을 지원해 주지 않아서 상당히 곤욕을 치룬적이 있습니다.

--- Stage 1 Bootloader ---
BIOS가 만약 하드디스크로 부팅을 가장 먼저 하라고 했다면 다음 순서는 하드디스크의 가장 앞부분 512바이트에 상주하고 있는 MBR(Master Boot Record)로 주도권이 넘어가게 됩니다. MBR에 있는 주 부트로더의 임무는 stage2 부트로더를 찾아서 로딩하는 것이 주 임무 입니다.

--- Stage 2 Bootloader ---
두번째 부트로더 부분이 제가 복구할 GRUB 이나 LILO등과 같은 부트로더 입니다. grub같은 경우는 부팅 가능한 커널의 목록을 디스플레이 해주고 선택된 커널을 로딩하여 줍니다. OS를 작동시켜준다고 생각하믄 되죠. 커널이 로딩되기 시작하면 OS마다 예쁜 로고( 리눅스 같은 경우엔 없는 경우도 많죠..;; )가 팍~ 뜨면서 커널 로딩에 들어갑니다.

--- 커널 ---
커널을 설명하면 글이 길어져서...;;;; ( 이렇게 무식을 대충 때웁니다 );;;;

그 후엔 .... 으로 대체 합니다.

하여튼 중요한건 GRUB 복구 방법인데요.
저 같은 경우는 하드디스크의 파티션이
1. IBM Thinkpad recovery 용 파티션
2. 윈도우 xp
3. 리눅스 swap
4. 리눅스 /
이렇게 나눠져 있었습니다.

그렇다면 보통 Grub은 / ( root ) 파티션이 있는 4번째 파티션에 위치하게 됩니다.

쿠분투는 grub복구가 쉬운데

1. live CD로 부팅한다.
2. 터미널을 실행시켜서 #sudo grub
3. grub> find /boot/grub/stage1 으로 linux 의 root partition을 찾는다.
4. grub> root (hd0, 3) ( 위에서 찾은 root 파티션 )
5. grub> setup (hd0, 3)
6. grub> quit

하면 간단히 grub이 복구됩니다. 그런데 저는 안되더라 이겁니다...ㅡㅡ^
저는 find /boot/grub/stage1으로 나온 결과가 root partition이 아닌 swap 파티션이 나오는 것입니다. 그러니 결과가 계속 root(hd0, 2) 로 나오고 그쪽에다 설치를 한것이죠..;;;;
그래서 grub이 뜰때 직접 (hd0, 3)으로 고쳐주니 부팅이 되었습니다. 아직 왜 grub에서 root(hd0, 2)라는 결과값이 나온지는 파악하지 못했습니다.

대신 고쳐주어야 할 것이 /boot/grub/menu.lst 파일을 열어서 grub을 수동으로 고쳐주면 됩니다.

이상, 오늘은 부팅에 대해 대~~충 알아보았습니다. ㅋ


댓글을 달아 주세요

  1.  댓글주소  수정/삭제  댓글쓰기 Favicon of http://seoltang.com BlogIcon ㄹㅔㅈㅕ 2008.04.12 04:21

    ㅎㅎ 저도 그런일 많이 겪었습니다.ㅋ
    컴퓨터에 우분투와 윈도XP를 설치해 놓고 XP에 문제가 있을시 재설치를 하면 우분투의 부트로더인 GRUB가 사라지는 현상이 있었지요;;
    제가 리눅스를 잘 다루지 못하는지라 GRUB복구법을 열심히 찾아 해보았는데도 별 성과가 없었지요.. 그래서 리눅스 재설치;;;
    나중에 요령이 생기니깐 XP를 고스트를 떠놔서 부트로더 손상없이 XP 재설치 효과를 보니 그런현상이 없더군요..ㅋㅋ (이러니 실력이 안늘지..ㅋㅋ)
    아직도 GRUB 재설치를 해보진 않았습니다.ㅡㅡ;;;