게시물 1,376건
   
Grub2 부팅순서 변경
글쓴이 : 최고관리자 날짜 : 2014-07-08 (화) 14:10 조회 : 12586
글주소 :
                                
/boot/grub/grub.cfg
읽기전용 파일로 설정정보를 포함하고 있음

/etc/default/grub
기본적인 설정을 할수 있으며 해당파일을 편집하고 명령을 실행해 /boot/grub/grub.cfg 파일에 반영한다.
# grub2-mkconfig -o /boot/grub2/grub.cfg
update-grub

/etc/grub.d/*****
 세부적인 설정이 포함되어있으며 아래와 같은 파일포함
  00_header 
  05_debian_theme
  10_linux
  20_memtest86+
  30_os-prober
  40_custom


현재 부팅 1순위 확인
# grub2-editenv list
saved_entry=Fedora (3.14.9-200.fc20.x86_64) 20 (Heisenbug)

시스템내 부팅커널 확인
# grep ^menuentry /boot/grub2/grub.cfg | cut -d "'" -f2
Fedora, with Linux 3.14.9-200.fc20.x86_64
Fedora, with Linux 3.11.10-301.fc20.x86_64
Fedora, with Linux 0-rescue-40089f9575bf4e12b7d6a674365956b9

부팅커널 변경
# grub2-set-default "Fedora, with Linux 3.11.10-301.fc20.x86_64"

# grub2-editenv list
saved_entry=Fedora, with Linux 3.11.10-301.fc20.x86_64

# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.14.9-200.fc20.x86_64
Found initrd image: /boot/initramfs-3.14.9-200.fc20.x86_64.img
Found linux image: /boot/vmlinuz-3.11.10-301.fc20.x86_64
Found initrd image: /boot/initramfs-3.11.10-301.fc20.x86_64.img
Warning: Please don't use old title `Fedora, with Linux 3.11.10-301.fc20.x86_64' for GRUB_DEFAULT, use `Advanced options for Fedora>Fedora, with Linux 3.11.10-301.fc20.x86_64' (for versions before 2.00) or `gnulinux-advanced-616b48a0-f80e-45fb-ae44-7988278c7df2>gnulinux-3.11.10-301.fc20.x86_64-advanced-616b48a0-f80e-45fb-ae44-7988278c7df2' (for 2.00 or later)
Found linux image: /boot/vmlinuz-0-rescue-40089f9575bf4e12b7d6a674365956b9
Found initrd image: /boot/initramfs-0-rescue-40089f9575bf4e12b7d6a674365956b9.img
done

# reboot

커널변경 내역 확인
# grub2-editenv list
saved_entry=Fedora, with Linux 3.11.10-301.fc20.x86_64

# uname -a
Linux localhost.localdomain 3.11.10-301.fc20.x86_64 #1 SMP Thu Dec 5 14:01:17 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux




Grub2 추가 보충설명
※ 출처 http://wiki.gentoo.org/wiki/GRUB2_Migration/ko

이 안내서의 목표는 기존 GRUB에서 GRUB2로 유연하게 옮겨가는 방안을 알려드리는 것입니다.

배경

GRUB 이란 무엇일까요?

GRUB은 비 임베디드 리눅스 장치에서 대부분 존재하는 부트로더중 하나입니다. GRUB의 역할은 디스크에서 메모리로 리눅스 커널을 불러오도록 갖추고 리눅스 커널을 실행하는 것입니다.

왜 옮겨야 하나요?

먼저, 이전 GRUB은 더이상 업데이트를 받지 않으므로 관리하지 않습니다. 이전 GRUB은 개발자들이 오늘날 더이상 제대로 된 상태로 유지할 수 없다는 다양한 고려 사항이 발생함에도 불구, 안전하다는 느낌에 빠질 때마다 계속 만들었습니다. 예를 들어 이전 GRUB은 2TB 이상의 디스크로는 부팅할 수 없으며 새 파일 시스템으로는 /boot를 대체할 수 없다고 간주합니다.

GRUB2는 좀 더 견고하고, 가벼우며, 강력함을 목표로 하였으며, 더욱 깔끔한 코드를 기반으로 유지 관리합니다. GRUB2는 이전 버전과는 달리 더 많은 하드웨어 설정, 파일 시스템, 드라이브 배치를 지원합니다.

GRUB2로 옮겨가기

GRUB2로 옮겨가는 것은 굉장히 간단합니다. 꾸러미 관리자가 보통 업그레이드 과정을 처리하는걸로 같이 끝냅니다. 자동으로 끌어오지 않았다면 sys-boot/grub:2를 언제든 설치할 수 있습니다.

부트 드라이브

첫번째 중요한 부분은 부팅 가능한 드라이브가 무엇인지 이해하는 것입니다. 대부분의 사람들에게는 /dev/sda일 것입니다. 이걸 가장 쉽게 찾는 방법은 /boot/grub/grub.conf를 보고 예전 GRUB을 어떻게 설정했는지 보는 것입니다. 그 예제 하나를 아래에 보여드리도록 하겠습니다.

참고
이 파일을 보려면 /boot에 마운트 해야 합니다. /boot에 마운트 하는 방법은 mount /boot와 같이 단순합니다.
 [Collapse
File/boot/grub/grub.conf

default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
  
title Gentoo Linux 3.2.12
root (hd0,0)
kernel /boot/kernel-3.2.12-gentoo root=/dev/sda3 quiet dolvm
initrd /boot/initramfs-genkernel-x86_64-3.2.12-gentoo

위 파일 내용을 근거로 (hd0)가 부트 드라이브임을 알아냈지만 이걸 실제 장치로 대응해야 합니다. 이를 알려면 /boot/grub/device.map을 봐야 합니다. 이에 대한 예제가 아래에 있습니다.

 [Collapse
File/boot/grub/device.map

(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/sdb
참고
/boot/grub/device.map이 정확하지 않은것 같으면, grub-install --recheck /dev/sda 명령을 실행하여 파일을 다시 만들 수 있습니다.

위 파일을 기반으로 /dev/sda가 부팅 드라이브임을 알고 있습니다.

GRUB2 설치 및 설정

다음 단계는 예전의 GRUB을 MBR에서 제거하지 않고 /boot 파티션에 GRUB2를 설치하고 설정하는 것입니다. 아래 예제는 /dev/sda를 사용하지만 여러분의 드라이브 경로로 (올바르게) 바꿔야 합니다. 첫번째 단계에서는 /boot/grub로 필요한 GRUB2 파일을 설치하는 것입니다. 그리고 두번째 단계에서는 존재하는 커널을 검색하고 /boot/grub/grub.cfg로 적당한 설정 파일을 만드는 것입니다. 직접 설정 방식대로 진행한다면 두번째 단계는 건너뛰십시오.

경고
예전 GRUB은 /boot/grub/grub.conf를 사용하는데 반해 GRUB2는 /boot/grub/grub.cfg를 사용하므로 예전 파일을 사용하는 우를 범하지 마십시오. 예를 들자면 탭 완성 기능을 활용하여 예전 파일이 아직 있는지 확인할 수 있습니다.
root # grub2-install --grub-setup=/bin/true /dev/sda
Installation finished. No error reported.
root # grub2-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/kernel-3.2.12-gentoo
Found initrd image: /boot/initramfs-genkernel-x86_64-3.2.12-gentoo
done
참고
grub2-mkconfig는 커널과 initramfs 이미지에 대한 엄격한 작명 요구사항이 있습니다. 커널은 반드시 kernel-${version}또는 vmlinuz-${version}이어야 하고 initramfs는 initramfs-${version}.imginitramfs-genkernel-${version}initramfs-genkernel-${arch}-${version}initrd-${version}.imginitrd.img-${version}initrd-${version}.gzinitrd-${version}중 하나가 되어야 합니다. /boot에 있는 ${version}이 붙은 파일 이름은 커널에 해당하는 이름으로 반드시 일치해야 합니다.

설정을 시험하기 위해 이전 GRUB에서 GRUB2 이어서 불러오기

깨진 GRUB 설정은 시스템 부팅을 불가능하게 한다는 의미를 지닐 수 있으므로, GRUB2 설정을 완전히 두기 전에 시험하려 합니다. 이를 위해 예전 GRUB에서 GRUB2로 그대로 이어서 불러오도록 하겠습니다. /boot/grub/grub.conf에 새 섹현을 추가하면 됩니다. 예제는 다음과 같습니다.

참고
예제에서 사용한 바와 같이 (hd0,0)과 실제 루트가 다룰 수 있음을 알아두시고, /boot/grub/grub.conf에서 같은 루트 값을 다시 사용하는지 확인하십시오.
 [Collapse
File/boot/grub/grub.conf

default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
  
title GRUB2 Chainload
root (hd0,0)
kernel /boot/grub/i386-pc/core.img
boot
  
title Gentoo Linux 3.2.12
root (hd0,0)
kernel /boot/kernel-3.2.12-gentoo root=/dev/sda3 quiet dolvm
initrd /boot/initramfs-genkernel-x86_64-3.2.12-gentoo

여기서 머신을 재부팅하고 머신이 부팅할때 GRUB 메뉴에서 GRUB2 Chainload를 선택해야 합니다. GRUB 2.0.0 이상과 같이 자체적으로 알려주는 다른 GRUB 메뉴가 상단에 함께 나타나고, 시스템에 있는 부팅 커널을 보여줍니다. 이게 동작하지 않으며 그냥 시스템을 껐다 켜고, GRUB2 Chainload 대신 일반 부트 옵션을 고르십시오.

이전 GRUB 대체하고 제거

여기서 모든 동작이 성공적으로 끝났다면, 예전 GRUB을 바꾸고 시스템에서 제거할 수 있습니다.

참고
시스템을 재부팅 했으므로, /boot를 다시 마운트 해야 합니다. /dev/sda 대신 부트 드라이브 경로를 제대로 사용하는지 확인하십시오.
root # grub2-install /dev/sda
Installation finished. No error reported.

여기서 sys-boot/grub:0을 제거하기 위해 꾸러미 관리자를 사용할 수 있습니다.

root # emerge -avC "=sys-boot/grub-0.97*"

이제 옮겨가기가 끝났습니다.

GRUB2 유지 관리

새 커널을 설치하는 언제든지, 다음 단계를 진행하여 GRUB2 설정이 (수동 설정 방식을 활용하지 않는다면)새 커널을 인식하도록 해야 합니다.

참고
이 단계를 위해 마운트한 /boot 파티션을 반드시 보유해야 합니다.
root # grub2-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/kernel-3.3.8-gentoo
Found initrd image: /boot/initramfs-genkernel-x86_64-3.3.8-gentoo
Found linux image: /boot/kernel-3.2.12-gentoo
Found initrd image: /boot/initramfs-genkernel-x86_64-3.2.12-gentoo
done

이름 패스워드
비밀글 (체크하면 글쓴이만 내용을 확인할 수 있습니다.)
왼쪽의 글자를 입력하세요.
   

 



 
사이트명 : 모지리네 | 대표 : 이경현 | 개인커뮤니티 : 랭키닷컴 운영체제(OS) | 경기도 성남시 분당구 | 전자우편 : mojily골뱅이chonnom.com Copyright ⓒ www.chonnom.com www.kyunghyun.net www.mojily.net. All rights reserved.