Super Grub2 Disk를 이용한 우분투 Live/설치 USB 만들기

Super Grupe2 Disk(SG2D)를 USB에 설치하고 우분투 Live/설치 iso 파일들과 같이 사용하여 BIOS와 (U)EFI 부팅이 가능한 USB를 만드는 방법에 대해 간단히 소개합니다.

사실, SG2D나 우분투 live/설치 iso 이미지를 Unebootin과 같은 도구를 사용해서 USB에 구우면 결과적으로 똑같이 BIOS와 (U)EFI 부팅에 사용할 수 있습니다. 그런데, 왜 쓸데없는 노가다를 하려는 것인지는 각자의 판단에 맡깁니다. 개인적으로는 이렇게 만든 USB가 나름 여러모로 편리하더라는 것이 있습니다.

리눅스는 Windows와 달리 UEFI 모드뿐 아니라 구식의 BIOS 모드에서도 GPT 파티션 방식을 지원합니다. SG2D를 사용하면, 1개의 USB로 PC 설정/사양에 따라 EFI 모드와 BIOS 모드로 부팅할 수 있고, 우분투 live/설치 iso 이미지 파일들을 버전 별로 USB에 복사한 후, 부팅시 선택하여 사용할 수 있습니다. 이외에도 SG2D는 시스템 복구 등 다양한 용도로 사용할 수 있습니다. 세부 사항은 SG2D 사이트([url:1tkkiub0]http://www.supergrubdisk.org/super-grub2-disk[/url:1tkkiub0])를 참고하면 됩니다.

참고로, 최신 PC들은 제조사에 따라 UEFI 방식과 BIOS 방식을 혼용해서 지원하므로 사용자가 EFI/BIOS 설정을 확인하지 않으면 부팅 모드가 무엇인지도 모르고 OS를 설치하게 됩니다. 심지어 어떤 PC는 EFI 방식을 지원하는지 여부나 부팅 방식을 바꾸기 위해 어떤 설정을 건드려야 하는지 알기 어려운 경우도 있습니다. 또한, 예전의 넷북과 같은 32-bit PC들은 EFI를 지원하지 않기 때문에 PC가 64-bit 인지 확인해야 합니다.

지금 만들게 될 USB도 최종적으로는 UEFI냐 BIOS 방식이냐를 따지지 않고 부팅하게 되기 때문에 초보자들은 혼란스러울 수도 있습니다.

[color=#0000FF:1tkkiub0][b:1tkkiub0]<< (U)EFI 모드 부팅 >>[/b:1tkkiub0][/color:1tkkiub0]

[b:1tkkiub0]1. 1GB 이상의 빈 USB를 준비하여 gparted를 이용, gpt 파티션 생성[/b:1tkkiub0]
여기서는 3개의 파티션을 사용하고, 1번은 ESP(EFI System Partition, 200MiB), 2번은 BIOS Grub 용(1MiB), 3번은 iso 이미지 용(나머지 USB 용량) 할당. USB 용량이 8GB이상이면 파티션 수를 많이 늘려서 여러가지 목적으로 활용 가능.

[code:1tkkiub0]# gksu gparted /dev/sdb
[/code:1tkkiub0] 먼저, Partition Table을 msdos가 아닌 gpt로 구성하고, 아래의 parted 실행 결과처럼 파티션을 나눈 후 gparted에서 빠져 나옴.
참고로, 아래의 2번 파티션은 gparted에서 unformatted 상태로 bios_grub Flag를 설정한 것임에 유의.

[code:1tkkiub0]# sudo parted /dev/sdb print

Model: USB DISK 2.0 (scsi)
Disk /dev/sdb: 3880MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number Start End Size File system Name Flags
1 1049kB 211MB 210MB fat32 msftdata
2 211MB 212MB 1049kB bios_grub
3 212MB 3880MB 3668MB ext2
[/code:1tkkiub0]
[b:1tkkiub0]2. Super Grub2 Disk(SG2D) iso 파일을 다운로드 받아 iso 내용물을 USB의 1번 ESP 파티션에 복사[/b:1tkkiub0]

[code:1tkkiub0]# sudo mkdir /tmp/mnt

sudo mount -o loop ~/Downloads/super_grub2_disk_hybrid_2.00s1-beta6.iso /tmp/mnt

sudo mount /dev/sdb1 /mnt

sudo cp -R /tmp/mnt/* /mnt

[/code:1tkkiub0]
[b:1tkkiub0]3. Ubuntu 사이트에서 우분투 설치 iso 파일을 내려 받아 우분투 설치 iso의 기본 EFI boot loader 복사[/b:1tkkiub0]

[code:1tkkiub0]# sudo umount /tmp/mnt

sudo mount -o loop ~/Downloads/ubuntu-13.10-desktop-amd64.iso /tmp/mnt

sudo cp -R /tmp/mnt/EFI /mnt

[/code:1tkkiub0]
[b:1tkkiub0]4. Ubuntu 사이트에서 내려 받은 우분투 설치 iso 파일들을 3번 ext2 파티션에 복사[/b:1tkkiub0]
iso 파일들은 파티션의 위치와는 무관하지만, 반드시 /boot-isos 또는 /boot/boot-isos 폴더에 두어야 함에 유의.
또한, USB 용량이 넉넉하다면 여러 개의 iso 파일을 복사해서 나중에 선택해서 부팅 가능함.
우분투 설치 iso 용량이 늘어나는 추세이고 USB에 복사하는 것이라 시간이 많이 걸림.

[code:1tkkiub0]# sudo umount /mnt

sudo mount /dev/sdb3 /mnt

sudo mkdir /mnt/boot-isos

sudo cp ~/Downloads/ubuntu-13.10-desktop-amd64.iso /mnt/boot-isos

sudo cp ~/Downloads/trusty-desktop-amd64.iso /mnt/boot-isos

sudo sync

[/code:1tkkiub0]
[b:1tkkiub0]5. USB로 부팅 후 Super Grup2 메뉴 확인[/b:1tkkiub0]
여기까지 해서 Super Grub2 Disk가 제공하는 Grub 메뉴가 보인다면 PC가 UEFI 방식으로 부팅한 것임.
BIOS 방식이라면 Super Grub2 메뉴가 나타나지 않고 바로 하드디스크 부팅으로 넘어감.

[color=#0000FF:1tkkiub0][b:1tkkiub0]<< BIOS 모드 부팅 >>
[/b:1tkkiub0][/color:1tkkiub0]

위의 과정까지 해보고 부팅이 안되거나 BIOS 모드 부팅까지 지원하도록 하기 위해 다음 과정이 필요함.

[b:1tkkiub0]6. BIOS 모드로 부팅된 PC에서 BIOS Grub(grub-pc) 설치[/b:1tkkiub0]

[code:1tkkiub0]# sudo mount /dev/sdb1 /mnt

sudo grub-install --recheck --no-floppy --boot-directory=/mnt/boot /dev/sdb

[/code:1tkkiub0]
[b:1tkkiub0]7. USB로 부팅 후 Super Grup2 메뉴 확인[/b:1tkkiub0]
이제 Super Grub2 메뉴가 보인다면 PC가 BIOS 방식으로 부팅한 것임.

[color=#0000FF:1tkkiub0][b:1tkkiub0]<< Super Grub2 Disk 사용 >>[/b:1tkkiub0][/color:1tkkiub0]

이제 Mac을 포함한 아무 PC에나 USB를 꽂고 부팅해서 Super Grub2 메뉴가 나타난다면 해당 PC에서 우분투를 사용할 수 있습니다.
iso 파일을 선택하기 위해서는 "Detect loop bootable isos (in /boot-isos or /boot/boot-isos)" 메뉴를 선택하면 됩니다.

우분투 live/설치 iso의 좋은 점은 live 기능으로 해당 PC에서 우분투를 설치하지 않은 상태에서 현재 버전의 우분투가 잘 동작하는지 점검해 볼 수 있다는 것입니다. 써보고 문제 없으면 Desktop의 설치 아이콘을 Click 해서 바로 설치하면 됩니다.

Grub 메뉴가 다양한데, 이것들이 Super Grub2 Disk가 Script를 통해 제공하는 기능들이고, 자세한 사용법은 [url:1tkkiub0]http://www.supergrubdisk.org/wiki/SuperGRUB2Disk[/url:1tkkiub0] 참고하시면 됩니다.

궁금한게 있어 간만에 글을 써 봅니다.

bios 모드로 부팅하기 위해 grub-install 을 실행 했는데…
그러고 나면 uefi 모드는 없어지는건가요?

PS. 대부분 USB 스틱으로 부팅 디스크 만드는 방법은 복잡하고, usb-creater-gtk 는 버그 투성이구한데…
이 문서는 해볼만 할것 같습니다…감사드립니다.

Grub2는 다양한 Platform을 지원합니다. 우분투의 경우, Grub2는 BIOS 모드는 grub-pc, EFI 모드는 grub-efi 패키지 형태로 제공됩니다.
즉, 두 가지 모두 Grub2이지만 바이너리 파일들이 다릅니다. 하지만, grub.cfg를 비롯한 설정 파일들은 동일한 형태로 제공됩니다. 굳이 세분화하면 우분투의 경우, grub-common 패키지는 공통으로 설치됩니다. OS는 BIOS나 EFI 방식 중 한 가지로만 부팅하기 때문에 그냥 Grub2를 설치하면 해당 부팅모드의 패키지가 설치됩니다.

그러니까, BIOS 모드로 설치한 grub과 EFI 모드로 설치한 grub은 충돌이 생기지 않도록 설치됩니다. 이것이 이 글을 쓰게 된 동기이기도 합니다.

참고로, Super Grub2 Disk의 구성물은 Grub2 + Grub2 Script 파일들(아래의 *.cfg 파일들) 입니다.
아래의 ls 결과와 같이 grub-pc는 /boot/grub/i386-pc 폴더, grub-efi는 /boot/grub/x86_64-efi 폴더에 설치됩니다. 기본 설치된 우분투의 /boot/grub에는 이 폴더 중 한가지만 있을 것이므로 해당 부팅 모드를 알 수 있는 방법이 될 수도 있습니다.

[code:17dz82i0]# ls -CF /mnt/boot/grub
AUTHORS* grub.cfg* language_select.cfg* sgd_locale/
autoiso.cfg* grubdetect.cfg* locale/ tools.cfg*
cfgdetect.cfg* grubenv* main.cfg* unifont.pf2*
COPYING* i386-pc/ menulstdetect.cfg* version.cfg*
fonts/ language.cfg* osdetect.cfg* x86_64-efi/
[/code:17dz82i0]
또한, Grub2에서 BIOS 모드와 UEFI 모드 부팅의 기본적인 차이는, UEFI 모드에서는 부팅에 필요한 정보가 모두 파일 형태인데 반해서, BIOS 모드에서는 인터럽트 방식을 사용하므로 추가적으로 하드디스크(또는 USB)의 MBR 영역 등에 Binary 부팅 정보를 기록한다는 점입니다.

잘 성공하여 usb 스틱에 심었습니다…
제가 가지고 있는 노트북으로 부팅을 해 봤는데…잘 되는군요…(레노보 노트북(마누라꺼)는 실패…)

parted 에서 msftdata 플레그는 주지 못했는데(13.04 parted가 좀 오래된 버젼인듯…) 상관은 없어 보이구
bios_grub 플래그는 주었습니다…하지만 이 파티션 영역이 왜 필요한지 잘 모르겠군요…

14.04 이미지를 ext2 영역에 /boot-isos 아래에 넣어서 부팅에 성공했습니다(맨첨 그냥 isos 라고 하는 바람에
실패…역시 글은 꼼꼼히 봐야 ㅠㅠ)

이제 이걸로 나중에 14.04 업데이트할때 써먹을려고 합니다. 감사합니다.(.,)

PS. 개인적으로 궁금한건데…전에는 live linux 쓸데는 remastersys를 주로 썼는데…얼마전부터 이 프로그램이
더이상 없어서리…이 라이브 스틱으로 부팅 후 거기에 apt로 프로그램 깔구 ip 세팅도 좀하구…그런거 해도 잘
될까요? 궁금궁금…

[quote:1yd712vc]제가 가지고 있는 노트북으로 부팅을 해 봤는데…잘 되는군요…(레노보 노트북(마누라꺼)는 실패…)
[/quote:1yd712vc]
레노보는 안써봐서 왜 안되는지 궁금하네요. Windows 설치 USB로는 부팅이 되나요? 32-bit PC라면 우분투 32-bit 설치 iso로 해야 부팅이 될거구요…

[quote:1yd712vc]bios_grub 플래그는 주었습니다…하지만 이 파티션 영역이 왜 필요한지 잘 모르겠군요…
[/quote:1yd712vc]
GPT 파티션을 사용할때 BIOS Grub2에서 MBR에 1단계 부팅정보를 기록하고 BIOS Grub Partition은 2단계 부팅 정보를 기록하는데 사용됩니다.

[quote:1yd712vc]PS. 개인적으로 궁금한건데…전에는 live linux 쓸데는 remastersys를 주로 썼는데…얼마전부터 이 프로그램이
더이상 없어서리…이 라이브 스틱으로 부팅 후 거기에 apt로 프로그램 깔구 ip 세팅도 좀하구…그런거 해도 잘
될까요? 궁금궁금…[/quote:1yd712vc]
우분투 Live USB는 RAM을 사용하기 때문에 apt-get으로 패키지 설치나 ip 설정해도 다시 부팅하면 모두 사라져 버립니다. Live 상태에서 임시로 쓰는 것은 문제 없구요. 패키지가 간단한 패키지들이라면 실행 파일/라이브러리를 USB의 ext2 파티션이나 새로운 파티션에 미리 복사해서 사용할 수 있습니다. 아니면, 아예 USB에 우분투를 설치해서 사용할 수도 있겠지만 번거롭겠지요.

친절한 답변 감사합니다.

32비트 피씨라는걸 미처 생각 못해 봤군요…
일단 grub 메뉴는 잘 뜹니다.(14.04 이미지 에서 EFI 디렉토리 부분 다시 복사 …전에꺼는 13.04 이미지
에서 추출…) 하지만 iso 파일 검색하면 에러 내더군요…

구글에서 검색해 봤는데…뾰족한 답을 못 찿았습니다.

일단 이정도로 만족 ㅋ