grub.cfg 편집하기

데스크탑 꾸미기(compiz)/소프트웨어 설치 및 설정에 관한 문제 해결

Moderator: Dry8r3aD

runa99
Posts: 145
Joined: 2014/12/31 Wed 11:28 pm

grub.cfg 편집하기

Postby runa99 » 2017/06/05 Mon 1:58 pm

== grub.cfg 의 이해 ==


#
먼저 기존의 메인 시스템이 grub 메뉴에서 Ubuntu 라는 이름으로 들어가는 경우,
grub.cfg 에서 menuentry 'ubuntu' --class............. 를 찾는다.

menuentry 'Ubuntu' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-a80aa313-296c-4288-a90b-ef440a56eacd' {
insmod part_gpt
insmod ext2
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 a80aa313-296c-4288-a90b-ef440a56eacd
else
search --no-floppy --fs-uuid --set=root a80aa313-296c-4288-a90b-ef440a56eacd
fi
linux /boot/vmlinuz-4.10.0-19-generic root=UUID=a80aa313-296c-4288-a90b-ef440a56eacd ro quiet splash $vt_handoff
initrd /boot/initrd.img-4.10.0-19-generic
}



#
위처럼,
menuentry 로 시작되서
} 로 끝나는
문단이 grub에 표시되는 하나의 리눅스 커널 진입을 위한 메뉴문단이다.


#
메뉴 이름 수정
menuentry 옆의 'Ubuntu' 를 수정함으로 grub에 표시되는 이름을 아주 쉽게 수정할 수 있다.


#
메뉴 문단을 살퍼 보면 다음의 수가 2개 있다.
4.10.0-19
진입할 커널의 버젼으로써
이 수를 수정함으로 해당 메뉴로 진입할 수 있는 커널벼젼을 바꿀 수 있다.

(나만의 메뉴순서와 메뉴이름을 수정했다 할지라도, 이후에 커널 업그레이드를 통한 update-grub에 의하여 grub.cfg 새로 초기화되며 업데이트 되는데, 이때 기존의 백업 파일을 복구하여 직접 새 버젼의 커널을 올림으로써 나만의 grub 메뉴를 유지할 수 있다. 기존 메뉴의 커널 버젼을 통째로 바꿀 수도 있고, 메뉴문단을 그대로 복사-붙여넣기 하여 커널버젼과 이름만 수정하는 것으로 추가적인 진입 메뉴를 만들 수도 있다.)


#
Grub에서 구 커널과 upstart, recovery mode가 모아져 있는 고급설정. 고급설정의 하위 메뉴는 다음과 같이 표시된마.

submenu '고급설정'................
submenu 라는 이 한줄의 문장이 하위메뉴를 열게 되며 바로, 이 문장의 바로 아래에

menuentry가 시작되는 구 버젼 커널을 비롯한 리커버리 모드와 업스타트 모드 등의 집입 메뉴가 모두 모여 있을 것이다.
그리고 마지막에
} 가 한번 더 추가로 닫김으로써 submenu의 문단이 완성이 된다. (Check!)


#
grub.cfg 편집을 통한 메뉴 순서를 바꾸는 것은 정말로 아주 너무나 쉽다. (하지만 } 하나 빼먹으면 grub recure> 등장)
방법은 간단하다.
menuentry 로 시작되서 } 로 끝나는 이 하나의 메뉴 문단을
cut & paste 통해 순서를 바꾸는 것이다.


한번 해보자!
Windows Boot Manager 와 같은 윈도우 진입 메뉴를 맨 위, 혹은 두번째로 순서를 바꾸어 저장해서 재부팅 하는 것이다.
(그냥 저장만 하고 재부팅하면 된다.)


#
만일 편집을 잘못한 경우 grub recure> 를 만나게 되된다.
http://linuxmint.kr/system/4082 의 TwitYoon 님의 글을 참조하자. (혹은 'grub recure 필살기'로 구글링)
필사하면 다음과 같다.

Code: Select all

set prefix=(hd0,2)/boot/grub
set root=(hd0,2)
insmod normal
normal


이러면 즉시 정상 부팅이 되는데 grub.cfg를 다시 확인해 편집하거나, 원인을 알 수 없다면 차라리 sudo update-grub 명령으로 초기화 하자.
그리고 hd0,2 의 2는 파티션 넘버를 말한다.
'ls'를 쳐서 확인할 수 있는데, gpt 시스템 사용자는 hd0,gpt2 로 표시가 되므로 입력도 그대로 해야 한다. (hd0,gpt2)


#
bios 모두가 아닌 uefi 모두사용자는 grub 배경화면 적용이 아주 쉽다.
grub-efi는 이미 고해상도가 적용되어 있으므로 해상도를 바꿀 필요도 없다.
/boot/gurb 에 그림파일을 하나 복사해 준 후에 (jpg 또는 png 또는 tga)
~$ sudo update-grub 명령을 내린다.
(이어서 그림파일 경로가 메세지로 뜰것이다. 안나오면 실패인데 그림파일을 바꾸어 보자.)
이후라는 해당 그림파일을 덮어쓰기 하는 것만으로 배경화면을 바꿀 수가 있다.
혹은 grub.cfg 에서 그림파일 경로를 찾아 수정해 주면 된다.

bios 모드를 기준으로 grub 꾸미기에 관한 훌륭한 화산폭발님의 시리즈 강좌 주소는 (우분투포럼 - 팁게시판 - 테마가이드)
https://forum.ubuntu-kr.org/viewtopic.php?f=13&t=29350


#
set default="0" 을 수정하면 기본 선택되는 메뉴의 위치를 바꿀 수 있가 있다.
0 은 첫반째. 1은 두번째.


#

Code: Select all

  set timeout=10
else
  if [ x$feature_timeout_style = xy ] ; then
    set timeout_style=menu
    set timeout=10
  # Fallback normal timeout code in case the timeout_style feature is
  # unavailable.
  else
    set timeout=10


set timeout=10 이 세 개 있다.

우리가 원하는 grub 메뉴 대기시간 변경은 중간에 있는 두번째 timeout 숫자다. 1 이나 2 로 수정하여 대기시간을 짧게 만들자.
첫번째 있는 timeout 숫자는 5나 정도로 바꾸어주자. 이건 기본 메뉴가 아닌 다른 메뉴로 진입했을 때 다음 부팅시에 적용되는 대기시간이다. (적용이 될때가 있고 안될때가 있다.)
그리고 맨 밑의 숫자는 뭔지 모르겠다. (뻔뻔!)


#
구글링에서 노트북 화면 밝기 조절이 안되는 경우에 다음의 해답이 제시된다.

/etc/default/grub 에서
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 를
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_backlight=vendor" 로 수정 후
~$ sudo update-grub

풀어 보자.
/etc/default/grub에 적용된 옵션에 따라서
update-grub를 통해 grub.cfg 가 새롭게 만들어지는 것이다.
따라서 위의 메뉴 문단에서 찾을 수 있는 grub.cfg의 다음의 부분이
ro quiet splash $vt_handoff
다음과 같이 수정되어 적용되는 것이다.
ro quiet splash acpi_backlight=vendor $vt_handoff

그러므로 default/grub 수정 후 update-gurb를 하지 않고
직접 grub.cfg에서 해당 문장을 수정하여 저장함으로써 팁을 적용할 수도 있는데
이럴 경우에는 모든 진입 메뉴를 일일이 수정해야 하며, 또한 커널 업데이트 시 자동으로 새롭게 update-grub가 될 시에도 초기화가 된다.

참고로 시스템 다운이 심각하게 잦은 내장 인텔 APU 이용자는 etc/default/grub 에서 quiet splash intel_idle.max_cstate=0 processor.max_cstate=1 modprobe.blacklist=dw_dmac,dw_dmac_core 수정 후 update-grub 해 주면 해결 될 수도 있다. (베이트레일 APU는 확실)


=== 종강 ===

protochaos
Posts: 1714
Joined: 2011/05/19 Thu 7:43 pm

Re: grub.cfg 편집하기

Postby protochaos » 2017/06/23 Fri 7:11 am

위의 설명을 바탕으로
/etc/grub.d 에 있는 스크립트 파일들을 살펴보세요.
update-grub 명령은 grub-mkconfig의 실행결과를 가지고
grub.cfg를 생성하는 것이라.. grub.cfg를 직접 수정할 게 아니라
/etc/default/grub과 위의 스크립트 파일들을 수정하는게 좋습니다.
또한 추가적으로 메뉴를 넣고 싶다면 custom.cfg를 만들어 수정하시면 됩니다

Return to “데스크탑/소프트웨어 게시판”

Who is online

Users browsing this forum: No registered users and 2 guests