방법은 간단한 건데, 1.x 와 전혀 다른 방식이라서 좀 알아먹기가 어려웠었다.
하고자 하는 바는 이렇다.
현재 하드디스크는 2개이다.
첫번째 하드디스크에는 윈도우가 설치되어 있다.
두번째 하드디스크에는 우분투가 설치되어 있다.
두번째 하드디스크에 Grub 이 설치되어 있고, 바이오스에서 부팅 순서를 바꿔서 둘째 하드디스크로 부팅이 되도록 설정했다.
이렇다면, 윈도우로 부팅하고자 할 때 바이오스의 힘을 빌어서 또 순서를 바꿔줘야 한다. Grub 설정만으로 윈도우 부팅이 가능할 수 있을까? 그것이 이 글의 핵심이다.
참고로, 윈도우7은 아래 방법으로는 안된다. 윈도우7은 바이오스 장난(?)을 인식하지 못하는 것 같다. 안되면.. 안쓴다! 젠장.
..................................................................................
Grub2 관련파일은 아래와 같다. (참고 : https://wiki.ubuntu.com/Grub2)
1. /boot/grub/grub.cfg
설정을 모두 포함하고 있는 파일이며, 읽기전용이다. 즉, 설정을 하기 위해 이 파일을 직접 건드리는 것이 아니다.
2. /etc/default/grub
기본적인 설정을 할 수 있다. 이 파일을 편집하고 명령을 내리면 위 1. 파일에 반영된다.
3. /etc/grub.d/ (폴더)
/etc/default/grub 파일로는 간단한 설정만을 할 수 있고, grub 1.x 때처럼 좀 더 복잡한 설정을 하려면 여기를 건드려줘야 한다.
여기엔 다음과 같은 파일이 들어있다.
00_header
05_debian_theme
10_linux
20_memtest86+
30_os-prober
40_custom
자세히 보면, 저 파일들이 반영되어 Grub2 초기화면에 나타나는 것이다. 30 파일에 의해 MS 윈도우 같은 것들이 찾아지고 등록이 되는데, 바이오스를 바꿔친 경우는 잘 동작하지 않았다. 따라서, 그런 경우엔 이렇게 한다.
40_custom 파일을 열고 아래와 유사한(?) 내용을 넣는다.
menuentry "Microsoft Windows (on /dev/sda1)" {
set root=(hd1,1)
drivemap -s hd0 hd1
chainloader +1
}
저 명령어는 grub1 때와 좀 달라졌다. set root 내 숫자는 환경에 따라 좀 달라지는데.. 저게 정확하게 뭘 의미하는지는 잘 모르겠다. grub2 초기 화면에서 e 인가 눌러서 설정값을 직접 바꿀 수 있는 화면으로 들어간 후에 직접 고친 후에 그 값을 적용해줘도 될 것 같다.
아무튼, 저렇게 넣어주고나서 마지막 명령을 준다.
sudo update-grub
이러면 저 설정들이 grub.cfg 에 반영되어 다시 작성된다.
grub1 과 달라진 건, 직접 고치는 게 아니라 간접으로 고친다는 것! 따라서 다른 곳에서 변경사항이 발생하여 grub.cfg 파일이 고쳐진다고 해도 저 내용이 다시금 반영되게끔 된다. 좀 더 직관적으로 된 거라 볼 수도 있겠다.
만약, 인위로 추가한 OS가 Grub 목록에서 우분투보다 앞 쪽에 나오길 바란다면, 07_custom 등을 만들고 같은 식으로 하면 된다. 물론, 실행가능하게 만들어야 하고, 40_custom 파일에 나오는 앞쪽 내용도 넣어야 할 것 같다.
원문 : Tip: If the user wants his custom entries to appear at the top of the menu, the file can be named a value less than"10_linux", such as "07_custom". Check that the "DEFAULT" value in /etc/default/grub points to the correct menuentryafter making this change.