10.10에서 부팅 메뉴 리스트를 수정 하려면 어떻게 해야 하나요?

10.10을 설치 했습니다.

윈도우에서 메인 윈도우와 vhd 윈도우로 따로 부팅하고 있었구요.

그런데 우분투를 설치하고나니 grub에서 vhd 부팅해줄수 있게 잡더군요…

거기까지는 좋았는데 메뉴를 수정하려고 하니 예전처럼 menu.lst 파일인가? 이걸 못찾겠습니다.

또 다른 vhd 파일을 등록하고 싶은데 편집할수가 없습니다.

도움 부탁드립니다.

/etc/grub.d/40_custom 파일에 원하는 부트메뉴를 추가하고
sudo update-grub 하면 됩니다.

[quote="Leon":1rhs0x89]/etc/grub.d/40_custom 파일에 원하는 부트메뉴를 추가하고
sudo update-grub 하면 됩니다.[/quote:1rhs0x89]

답변 감사합니다.

말씀 하신 파일에는
#!/bin/sh
exec tail -n +3 $0

This file provides an easy way to add custom menu entries. Simply type the

menu entries you want to add after this comment. Be careful not to change

the ‘exec tail’ line above.

위 내용만 있는데요.

어떤식으로 파티션을 잡아 줘야 할지요?

그리고 기존 부트 메뉴의 이름들은 수정을 못하나요?

아직 GUI로 관리 할수 있는게 없는지도 궁금 합니다.

윗분이 잘 못 알려주셨네요
/boot/grub/custom.cfg입니다. 기본적으로 파일은 존재하지 않고
만들어야 합니다.

menu.lst는 grub4dos나 grub-legacy에서 즉 grub2 이전 버젼에서 사용하던 부트메뉴 설정 파일입니다.
grub2에서는 /boot/grub/grub.cfg가 부트메뉴 설정 파일 입니다
그런데 다른 운영체제를 추가 설치하거나, 리눅스 커널이 추가되면
sudo update-grub으로 메뉴항목을 갱신시켜 줄 수 있습니다 자동으로 변경사항이 메뉴에 적용되는것이죠
그렇기 때문에 /boot/grub/grub.cfg를 열어보시면 변경하지 말라고 써 있습니다.

그래서 직접 변경할 때는 /boot/grub/custom.cfg를 수정하고
여기에 부트메뉴항목을 만들어 넣으면 기본부트메뉴에 추가됩니다.

또 GRUB 부트옵션이나 설정을 바꾸고자 할 때는 (예를 들어 부트메뉴 타임아웃시간 등등)
/etc/default/grub파일을 변경하는 것입니다.

[quote:1troiul8]#!/bin/sh
exec tail -n +3 $0

This file provides an easy way to add custom menu entries. Simply type the

menu entries you want to add after this comment. Be careful not to change

the ‘exec tail’ line above.[/quote:1troiul8] /etc/grub.d/40_custom의 내용입니다. 이 파일

자체의 목적이 custom menu entry를 쉽게 추가하기 위함입니다.
간단히 /dev/sda1에 설치된 'Windows’메뉴를 수동으로 추가하려는 경우에는
아래의 예와 같이 할 수 있습니다. 물론 update-grub하면 os 검색해서 자동으로 windows는 추가가 됩니다만
질문하신 분처럼 필요에 의해서 수동으로 메뉴 엔트리를 추가하는 경우에는 40_custom파일에 아래의 예
와 같이 메뉴를 등록할 수 있습니다. 메뉴 엔트리 작성은 /boot/grub/grub.cfg 파일을 보시고 현재 설정되어
있는 메뉴 엔트리를 참고하시면 도움이 됩니다. 이 예는 가장 간단한 예시입니다. 참고 하세요. 이만~

[code:1troiul8]#!/bin/sh
exec tail -n +3 $0

This file provides an easy way to add custom menu entries. Simply type the

menu entries you want to add after this comment. Be careful not to change

the ‘exec tail’ line above.

menuentry "Windows" {
set root=(hd0,1)
chainloader (hd0,1)+1
}
[/code:1troiul8]

#------- /etc/grub.d/40_custom ---------------
#!/bin/sh
exec tail -n +3 $0

This file provides an easy way to add custom menu entries. Simply type the

menu entries you want to add after this comment. Be careful not to change

the ‘exec tail’ line above.

#----------------------------------------------------

#-------------- /boot/grub/grub.cfg ------------
… 중략 …

BEGIN /etc/grub.d/40_custom

This file provides an easy way to add custom menu entries. Simply type the

menu entries you want to add after this comment. Be careful not to change

the ‘exec tail’ line above.

END /etc/grub.d/40_custom

BEGIN /etc/grub.d/41_custom

if [ -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi

END /etc/grub.d/41_custom

크… 쉘스크립트인 /etc/grub.d/40_custom을 수정하는 것보다는
GRUB커맨드 형식의 /boot/grub/custom.cfg를 수정하는 것이 좋을 것이구요
또한 파일이 /boot밑에 있기 때문에 /boot가 파티션이 분리되어 있다면 /가 망가지더라도
메뉴항목이 보존되겠죠.

답변 감사합니다.

예전보다 뭔가 좀 복잡한 방법으로 되어 있는거 같네요.

열심히 시도해봐야 겠습니다.ㅋ

아 곰곰히 생각해보니 /etc/grub.d/40_custom과 /boot/grub/custom.cfg에는 많은 차이가 있네요.
왜 같은 기능을 하는 것을 두개나 만들어 놨을까 하고 곰곰히 생각해 봤죠.
그러다 보니 두개의 동작이 다르다는 것을 알게 되었어요.

40_custom은 update-grub에 의해서 실행되는 쉘스크립트이고
이건 GRUB부트매니져가 실행시켜주는것이 아니라 grub.cfg자체를 바꾸는 것이죠.
그래서 변경하면 sudo update-grub이 필요하겠구요

custom.cfg는 update-grub과는 상관없이
GRUB부트매니져가 source라는 명령으로 실행시간에 custom.cfg파일을 파싱하는거네요
그러니깐 update-grub은 필요없죠.

속도면에선 전자가 낫겠고, 호환성 안정성 편리성으로 봐선 후자가 나을 듯 하네요

추가로 한 가지 적습니다. grub에서 메뉴의 순서는 /etc/grub.d/ 아래에 있는 스크립트 실행
순서대로 grub.cfg에 내용이 추가되기 때문에 스크립트 실행순서와 같습니다.
grub 부트 메뉴 순서를 바꾸고 싶다면 간단히 스크립트 파일명에 있는 숫자를 조정하여 실행 순서를
바꾸면 됩니다.
간단히 windows와 우분투를 멀티부팅하는 경우를 예로 들어보면 다음과 같습니다.
/etc/grub.d/ 아래의 30_os-prober를 10_linux보다 먼저 실행하도록 06_os-prober등으로 바꾸고
sudo update-grub을 실행하면 os-prober에 의해서 검색되어 추가된 windows메뉴가 우분투보다 위쪽에
grub.cfg의 메뉴엔트리에 있게 됩니다. 06으로 한 이유는
00_header, 05_debian_theme 10_linux 순서대로 실행되기 때문에 5보다는 크고 10보다는 작은
값으로 하기 위해서 입니다.
windows와 우분투의 멀티부팅인 경우에는 결과적으로 windows가 기본부팅값으로 설정되게 됩니다.
(grub2의 부팅 기본값은 메뉴엔트리 첫번째 값입니다)
참고 하세요.