우분투 centos 멀티 부팅시 grub 설정

안녕하세요

sdb3 에 Centos 5.5 부트로더가 설치되어있습니다.

sdb MBR에 우분투10.10 부트로더가 설치되어있구요

여러 문서를 참고하였지만 제 grub.cfg 파일의 설정 구문들과는 좀 다르네요

문서상 title Centos 로 시작하는데

제 우분투 grub.cfg 내용은 menuentry Centos 처럼 구문이 살짝 다릅니다.

그래서 적용이 까다로와졌는데

어떻게 설정해야 우분투 grub 메뉴에서 Centos 부팅이 가능할까요

현제 menuentry 부분 편집으로 항목은 표기되는데

실제로 선택하면 커널을 못찾아 로드할수 없다는 메시지가 나옵니다.

아래는 CensOS Grub…conf 설정 파일 내용입니다.

grub.conf generated by anaconda

Note that you do not have to rerun grub after making changes to this file

NOTICE: You have a /boot partition. This means that

all kernel and initrd paths are relative to /boot/, eg.

root (hd0,2)

kernel /vmlinuz-version ro root=/dev/sda6

initrd /initrd-version.img

#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,2)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.el5PAE)
root (hd0,2)
kernel /vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-194.el5PAE.img
title Other
rootnoverify (hd0,0)
chainloader +1

이건 우분투 grub.cfg 내용입니다.

menuentry ‘Ubuntu, with Linux 2.6.35-24-generic-pae (recovery mode)’ --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod part_msdos
insmod ext2
set root=‘(hd0,msdos8)’
search --no-floppy --fs-uuid --set 67553dc2-2ef9-41b4-a113-d1a6362752ce
echo ‘Loading Linux 2.6.35-24-generic-pae …’
linux /vmlinuz-2.6.35-24-generic-pae root=UUID=52c41f62-6f45-4f4d-862e-0e40401649af ro single
echo ‘Loading initial ramdisk …’
initrd /initrd.img-2.6.35-24-generic-pae
}

END /etc/grub.d/10_linux

BEGIN /etc/grub.d/20_linux_xen

END /etc/grub.d/20_linux_xen

BEGIN /etc/grub.d/20_memtest86+

menuentry "Memory test (memtest86+)" {
insmod part_msdos
insmod ext2
set root=‘(hd0,msdos8)’
search --no-floppy --fs-uuid --set 67553dc2-2ef9-41b4-a113-d1a6362752ce
linux16 /memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
insmod part_msdos
insmod ext2
set root=‘(hd0,msdos8)’
search --no-floppy --fs-uuid --set 67553dc2-2ef9-41b4-a113-d1a6362752ce
linux16 /memtest86+.bin console=ttyS0,115200n8
}

END /etc/grub.d/20_memtest86+

Centos 쪽 정보를 우분투의 grub.cfg에 설정을 해야하겠는데 어찌해야할까요

update-grub 해보면
found CentOS release 5.5 (Final) on /dev/sdb6 라고 나오네요

문법이 다른 이유는 CentOS는 grub이고 Ubuntu 10.10은 Grub2(정확히는 1.98)이기 때문입니다.
다른 리눅스를 설치 시 부트로더를 파티션에 설치해주면 우분투에서 알아서 감지해서 부트로더에 넣어줍니다.
update-grub으로 했을 때 CentOS가 인식되었다면 부트로더 목록에 뜰 것으로 추측됩니다.

만약 안되었다면 복잡하게 할 필요없이 chainloader로 CentOS가 설치된 파티션에 걸어주세요.
이때, /boot/grub/grub.cfg에 입력하지 마시고 /etc/grub.d/40_custom을 열고 밑에 넣어주셔야 합니다.
grub.cfg 맨 위에 보시면 이 파일은 고치지 말라고 써있고요, 무시해도 상관은 없지만 우분투에서 커널 업데이트라도 일어나면 죄다 없어집니다.

[code:9sn2wlzd]menuentry "CentOS" {
set root=(hd1,5)
chainloader +1
}[/code:9sn2wlzd]기억이 가물가물해서 이 코드가 된다는 장담은… :oops:
(hd1,5)를 부트로더가 설치된 파티션으로 바꾸세요.
뭐, 해당 파티션에 CentOS 부트로더를 설치하셨다고 말씀하셨으니 부팅될겁니다.

직접 부트로더에 커널을 지정해줘도 되기는 하지만 이 경우 CentOS에서 커널 업데이트를 할 때마다 매번 고쳐줘야 한다는 단점이 있습니다.
openSUSE는 이를 위해 커널 버전과 상관없는 심볼릭 링크를 제공하는데 CentOS는 잘 모르겠네요.

sdb3이면 root (hd1,2) 인데

우분투 grub.cfg에 아래 내용 추가 후 부팅 시도 해보십시오

[code:3t6wp8mf]title CentOS (2.6.18-194.el5PAE)
root (hd1,2)
kernel /vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-194.el5PAE.img
[/code:3t6wp8mf]부팅이 된다면
/etc/etc/grub.d/40_custom 에 내용 적어 넣으십시요
우분투가 커널업하면 상관없지만 centos 가 커널 업하면 커널 버전을 고치시기 바랍니다.

잘 안되어 Centos와 우분투를 재설치하였음에도 불구하고 잘안되네요

no such partition 이라는거 보니까

파티션을 못찾는거 같아요

PC에 IDE 하드 하나 SATA하드 하나 이렇게 두개가 있고

IDE하드가 sda SATA하드가 sdb 로 잡힙니다.

하지만 Cmos에서 SATA하드가 우선되도록 설정해놨기 때문에

실제 부트는 sdb에서 실행됩니다.

헌데 CentOS 설치시에는 IDE하드가 인식이 안되어

SATA하드가 sda로 설정이 됩니다.

결론적으로 우분투에서는 Centos의 부트로더가 sdb6로 검색및 설정되지만

Centos의 grub 설정은 sda4로 되어있습니다.

이와 같은 상황에서 우분투의 부트로더를 사용시에 sdb6으로 지정해주면

Centos의 grub 설정과 상관없이 커널을 찾을 수 있을까요?

일단 해결은 되었네요

문제는 설치시 /boot 파티션을 따로 잡아줬었는데

이번엔 Centos /boot 파티션을 /에 포함시켜

하나의 파티션으로 잡으니

우분투 grub에서 자동으로 잡아주네요

grub를 좀더 공부해야할것 같아요 도움주신분들 감사합니다.