본문 바로가기

TroubleShooting/Kernel

grub 를 사용해서 디스크를 부팅가능하도록 하기

728x90
리눅스가 설치되어 있는 장비에서 디스크이미지(/dev/sda)를 복사해서 다른 장비의 하드디스크(/dev/sda)에다가 복사(cat; gzip 이용)를 하는 프로젝트를 하고 있다. 그런데, 실수인지 모르겠지만 복사된 장비(새로운 장비)로 부팅이 안되고 멈춰있는 화면이 계속 나온다. (증상이 OS없는 디스크를 읽어들일때와 비슷)
 ubuntu LiveCD 로 일단 부팅해서 하드디스크를 마운트해보면 분명히 자료는 복사된게 맞다.
 원인을 찾아서 자료를 찾다보니, 마스터부트레코드(MBR) 영역이 아무 내용이 없어서 나오는 현상일거 같았다.
(참고 :  http://wiki.kldp.org/KoreanDoc/html/EmbeddedKernel-KLDP/understanding-booting-process.html)

 그래서 grub 사용법을 찾아보고 다시 liveCD 로 부팅해서 grub 를 실행시키고, MBR 를 저장시키고 나서 리부팅해보니 정상적으로 작동한다.

grub> root (hd0, 0)                -> 리눅스 커널이 존재하는 파티션을 지정. 첫번째 하드디스크의 첫번째 파티션.
grub> setup (hd0)                 -> hd0 디스크의 MBR 에 저장
..........
........
....
..
(오류 확인하고, stage1, stage2 를 install 하는 메시지가 나오고, success 메시지가 나옴)

 grub 에서 커널 위치가 맞는지 확인하는 방법도 있다.
grub> root (hd0, 0)
grub> kernel /vmlinuz root=/dev/sda1              -> 커널 이미지 파일이 /(루트)vmlinuz 에 있다는 것임. /boot 에 존재한다면 /boot/vmlinuz 라고 씀. 뒤에 따라오는 "root=/dev/sda1" 는 옵션.
grub> boot                    -> 설정값으로 부팅테스트

 그외 grub 옵션을 지정할려면 다음 링크를 참조하도록 하자.

참고 : 
http://www.lug.or.kr/docs/LINUX/others/01-05-5.htm
http://www.linuxjournal.com/article/4622 


* grub 이용한 상세한 설명
http://www.linuxplanet.com/linuxplanet/tutorials/5361/1