[페도라20·21] 윈도8or8.1 멀티부트 설정. Grub2에서 UEFI부팅 시스템 잡기 (리눅스)

Views: 1224

 

 

wrote 2015-06-01

 

 

마이크로 소프트에서 윈도 8부터 보안상의 이유로 UEFI라는 부팅시스템을 도입했죠.

도입 한건 좋은데... 리눅스 유저인지라 기존의 멀티 부팅 설정으로는 도저히 부팅이 되지 않는 상황이 발생해서 짜증이...

그래서 어떻게든 해보려고 별 ㅈㄹㅈㄹ다하다가 지금은 잘 쓰고있습니다.

일단 처음 멀티 부팅 시도했던 시스템은 페도라20 + 윈도8 이었고, 지금은 페도라21 + 윈도8.1로 사용중이에요.

잡썰은 여기까지하고 바로 설명 들어가겠습니다.

 

페도라는 GRUB2라는 부팅시스템을 사용하고 있고, 윈도는 부트 매니저를 사용합니다.

제가 알려드릴 방법은 GRUB2에 윈도의 부트 매니저를 포함시켜버리는 방식입니다.

OS설치 방법은 자세히 다루지 않을겁니다.

단, 먼저 하나의 디스크에 파티션을 나누고 설치하실텐데

윈도를 먼저 설치해 주시고, 페도라는 나중에 설치해 주세요.

윈도 시스템에선 리눅스 파티션 포맷을 인식하지 못하기 때문에 GRUB를 다시 잡아줘야 하는데 매우 귀찮습니다ㅜ

그리고 만약 OS를 여러 하드에 따로 설치하셨다면....

전체적인 방법은 같겠지만, 이 글을 그대로 따라하기 어렵다고 느끼실 수도 있습니다 ㅜㅜ. 댓글 따로 남겨주시면 상황에 맞게 알려드릴게요.

OS 설치가 끝났으면 페도라를 키고, 터미널을 여세요.

지금까지 포스팅에서는 sudo로 임시적인 권한을 얻어 사용했는데

오늘 작업은 그냥 root 권한을 가지고 진행할게요. 일일이 sudo 치기도 귀차늠 -_-;;

$ su root ($su 만 치셔도 됩니다.)

그리고 패스워드 입력하세요. 패스워드는 입력해도 패스워드 입력줄에는 아무것도 안나타나는 게 정상입니다.

권한 얻으셨다면 터미널 앞부분에 $가 #으로 바뀌셨을 겁니다.

일단

# yum install -y grub2*

으로 혹시나 누락되었을 수도 있는 것들을 전부 설치합니다.

# fdisk -l

입력하시면 뭐가 많이 나오게 됩니다.

일단 제 노트북 상황을 예시로 쓰겠습니다.

컴터에 sd카드 1개 외장하드 2개가 연결된 상태라 여러분보다 조금 더 정보가 많을거에요..

즉 아래보다는 덜 복잡할겁니다!!

아래 예시중에 필요한 정보는 내장하드(OS를 설치한 디스크) 관련 정보입니다.

Disk /dev/sda: 238.5 GiB, 256060514304 bytes, 500118192 sectors <-내장 하드
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 5FC4BCFD-D98A-4AA0-82CE-E458168B8097

Device Start End Sectors Size Type
/dev/sda1 2048 534527 532480 260M unknown
/dev/sda2 534528 3553279 3018752 1.5G Windows recovery environment
/dev/sda3 3553280 4085759 532480 260M EFI System
/dev/sda4 4085760 4347903 262144 128M Microsoft reserved
/dev/sda5 4347904 317988863 313640960 149.6G Microsoft basic data
/dev/sda6 317988864 318920703 931840 455M Windows recovery environment
/dev/sda7 318920704 319125503 204800 100M EFI System
/dev/sda8 319125504 320149503 1024000 500M Linux filesystem
/dev/sda9 320149504 328544255 8394752 4G Linux LVM
/dev/sda10 328544256 500117503 171573248 81.8G Linux filesystem

Disk /dev/mmcblk0: 14.4 GiB, 15472787456 bytes, 30220288 sectors <- 꼽혀있는 sd 카드
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 8192 30220287 30212096 14.4G c W95 FAT32 (LBA)

Disk /dev/mapper/fedora-swap: 4 GiB, 4294967296 bytes, 8388608 sectors <-리눅스 설치시 스왑으로 잡아 둔 부분
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sdb: 931.5 GiB, 1000204884480 bytes, 1953525165 sectors <-외장하드
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xfbe90e49

Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 1953525164 1953523117 931.5G 7 HPFS/NTFS/exFAT

Disk /dev/sdc: 946.4 GiB, 1016218828288 bytes, 1984802399 sectors <-외장하드
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A1C72D00-E421-4D8C-8FDB-76CBFEE8C000

Device Start End Sectors Size Type
/dev/sdc1 2048 1984800767 1984798720 946.4G Microsoft basic data

 

주목해야 할 부분은 EFI System의 장치 번호에요.

제 장치정보를 보면 /dev/sda3이 윈도, /dev/sda7이 리눅스입니다.

앞으로 명령어에서 숫자는 항상 자신의 컴퓨터에 맞춰서 수정해서 쓰세요.

숫자는 다 다르겠지만, 윈도를 먼저 설치하셨다면 빠른숫자가 윈도일 확률이 높아요ㅎㅎ

잘 모르시겠다면 댓글에 이 결과물 복사해서 남겨주시면 알려드릴게요!!

시작하면서 언급했다시피 여러개의 하드에 따로 OS를 설치하셨다면 여기서 부터 차이가 생기기 시작합니다...

잘 응용해서 해결하시거나, 정 힘드시면 댓글 남겨주세요.

이제 다음단계입니다.

금방 본 정보에서 두개의 EFI 시스템 파티션이 있었는데,

윈도 부팅시스템이 있었던/dev/sda3이 용량이 더크기 때문에 이곳으로 모두 모을겁니다.

만약 페도라 EFI 시스템 파티션이 더 크다면 그쪽으로 모으세요 ㅎ

일단 여기서는 윈도 부팅시스템이 들어있던 파티션으로 진행합니다.

먼저 페도라의 부팅시스템을 홈 폴더로 가져올게요.

# mount /dev/sda7 /mnt/

# cp -rv /mnt/EFI/fedora/ .

# umount /mnt

그리고 이 시스템을 다시 용량이 컸던 /dev/sda3으로 넣습니다.

# mount /dev/sda3 /mnt/

# cp -rv fedora/ /mnt/EFI

이제 uuid를 체크하겠습니다.

uuid는 각 파티션별로 고정되어있는 주소라고 생각하시면 돼요.

# blkid

그러면 아까보다는 짧게 정보가 출력됩니다.

금방 작업으로 두 운영체제의 부팅 시스템이 모두 들어있는 /dev/sda3의 uuid를 확인합니다.

 

/dev/sda1: LABEL="SONYSYS" UUID="6AF3-0CF9" TYPE="vfat" PARTUUID="6db128ff-0c21-411e-ab0a-a57fba21d236"
/dev/sda2: LABEL="Windows RE tools" UUID="C6D6F331D6F31FFB" TYPE="ntfs" PARTUUID="cbf7088c-6219-48ac-beb5-733c68a8e91e"
/dev/sda3: UUID="30D1-2A26" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="3c3257e4-1cbd-43b5-94e4-740c82865222"
/dev/sda4: PARTLABEL="Microsoft reserved partition" PARTUUID="2faafda6-dba0-4727-aee4-16775603effc"
/dev/sda5: UUID="0AC8D19DC8D186FB" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="14978ab9-32b5-4bd3-bf52-b9ba8e56f5e1"
/dev/sda6: UUID="66465D37465D08E7" TYPE="ntfs" PARTUUID="05a808f7-72f5-42b0-84e5-fc01f317998c"
/dev/sda7: SEC_TYPE="msdos" UUID="3242-6831" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="3c393ad6-8846-47e6-9eeb-5f6120c6cdb0"
/dev/sda8: UUID="802b739f-4b55-465b-8658-f41c9da2748f" TYPE="ext4" PARTUUID="4cb0fb5b-cb88-4bdf-b1e4-06a128af2c7c"
/dev/sda9: UUID="befGeY-MgWn-OyJS-XLcM-Ljue-Snaw-ttyFmy" TYPE="LVM2_member" PARTUUID="6a543dc8-67cc-4ba4-9f10-40ab45427309"
/dev/sda10: UUID="61de8d81-0689-4abb-a72c-b8c5b4a34aff" TYPE="ext4" PARTUUID="85019171-57c9-4579-bccf-68be2c36e781"
/dev/mmcblk0: PTTYPE="dos"
/dev/mmcblk0p1: LABEL="Transmissio" UUID="4CCA-1918" TYPE="vfat"
/dev/mapper/fedora-swap: UUID="6141b3df-970c-4612-90f7-36ac47c5e22e" TYPE="swap"
/dev/sdb1: LABEL="Libert" UUID="3C83B3EC41663A88" TYPE="ntfs" PARTUUID="fbe90e49-01"
/dev/sdc1: LABEL="Majesticer_BCKU" UUID="759D2E345283FDA4" TYPE="ntfs" PARTUUID="1ccebfdd-0346-4f6c-aab4-45ad40e9b94e"

 

/dev/sda3의 uuid는 30D1-2A26이네요.

확인 했으니 본격적으로 수정 들어갑니다.

yum관련 포스팅에서 vi 썼던것 기억 하시려나.. ㅎ

# vi /etc/fstab

그러면 텍스트 파일이 열립니다.

수정을 하기위해 i를 눌러줍니다.

 

#
# /etc/fstab
# Created by anaconda on Thu Jan 8 21:21:19 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=61de8d81-0689-4abb-a72c-b8c5b4a34aff / ext4 defaults 1 1
UUID=802b739f-4b55-465b-8658-f41c9da2748f /boot ext4 defaults 1 2
UUID=30D1-2A26 /boot/efi vfat umask=0077,shortname=winnt 0 0
/dev/mapper/fedora-swap swap swap defaults 0 0

 

이렇게 수정해주세요. /boot/efi 앞에 있는 UUID=~~~를 아까확인했던 UUID로 수정하는 겁니다.

역시 끝나셨다면 Esc 눌리시고 : 눌리시고 wq 쓰시고 엔터!

그리고 이번엔

# grub2-mkconfig -o /boot/grub2/grub.cfg

에러안뜨고 완료 되셨다면

# vi /boot/grub2/grub.cfg

이 파일은 좀... 길어요 ㅋㅋ

그래도 하나만 찾아서 바꾸면 됩니다.

i 눌러주시고~~

 

#
# DO NOT EDIT THIS FILE <-수정하지 말라고 합니다... 그러나 해야죠 ㅋㅋ 그냥 쭉 내려보세요
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
set pager=1

if [ -s $prefix/grubenv ]; then
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="${saved_entry}"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi

function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}

function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}

terminal_output console
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=1
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=5
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Fedora (4.0.4-201.fc21.x86_64) 21 (Twenty One)' --class fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.17.8-300.fc21.x86_64-advanced-61de8d81-0689-4abb-a72c-b8c5b4a34aff' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt8'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt8 --hint-efi=hd0,gpt8 --hint-baremetal=ahci0,gpt8 802b739f-4b55-465b-8658-f41c9da2748f
else
search --no-floppy --fs-uuid --set=root 802b739f-4b55-465b-8658-f41c9da2748f
fi
linuxefi /vmlinuz-4.0.4-201.fc21.x86_64 root=UUID=61de8d81-0689-4abb-a72c-b8c5b4a34aff ro rd.lvm.lv=fedora/swap rhgb quiet LANG=ko_KR.utf8
initrdefi /initramfs-4.0.4-201.fc21.x86_64.img
}
menuentry 'Fedora (3.19.7-200.fc21.x86_64) 21 (Twenty One)' --class fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.17.8-300.fc21.x86_64-advanced-61de8d81-0689-4abb-a72c-b8c5b4a34aff' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt8'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt8 --hint-efi=hd0,gpt8 --hint-baremetal=ahci0,gpt8 802b739f-4b55-465b-8658-f41c9da2748f
else
search --no-floppy --fs-uuid --set=root 802b739f-4b55-465b-8658-f41c9da2748f
fi
linuxefi /vmlinuz-3.19.7-200.fc21.x86_64 root=UUID=61de8d81-0689-4abb-a72c-b8c5b4a34aff ro rd.lvm.lv=fedora/swap rhgb quiet LANG=ko_KR.utf8
initrdefi /initramfs-3.19.7-200.fc21.x86_64.img
}
menuentry 'Fedora (3.19.5-200.fc21.x86_64) 21 (Twenty One)' --class fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.17.8-300.fc21.x86_64-advanced-61de8d81-0689-4abb-a72c-b8c5b4a34aff' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt8'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt8 --hint-efi=hd0,gpt8 --hint-baremetal=ahci0,gpt8 802b739f-4b55-465b-8658-f41c9da2748f
else
search --no-floppy --fs-uuid --set=root 802b739f-4b55-465b-8658-f41c9da2748f
fi
linuxefi /vmlinuz-3.19.5-200.fc21.x86_64 root=UUID=61de8d81-0689-4abb-a72c-b8c5b4a34aff ro rd.lvm.lv=fedora/swap rhgb quiet LANG=ko_KR.utf8
initrdefi /initramfs-3.19.5-200.fc21.x86_64.img
}
menuentry 'Fedora, with Linux 0-rescue-3ee6ea3669714e53976265389502c9a9' --class fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-3ee6ea3669714e53976265389502c9a9-advanced-61de8d81-0689-4abb-a72c-b8c5b4a34aff' {
load_video
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt8'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt8 --hint-efi=hd0,gpt8 --hint-baremetal=ahci0,gpt8 802b739f-4b55-465b-8658-f41c9da2748f
else
search --no-floppy --fs-uuid --set=root 802b739f-4b55-465b-8658-f41c9da2748f
fi
linuxefi /vmlinuz-0-rescue-3ee6ea3669714e53976265389502c9a9 root=UUID=61de8d81-0689-4abb-a72c-b8c5b4a34aff ro rd.lvm.lv=fedora/swap rhgb quiet
initrdefi /initramfs-0-rescue-3ee6ea3669714e53976265389502c9a9.img
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/20_ppc_terminfo ###
### END /etc/grub.d/20_ppc_terminfo ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/sda3)' --class windows --class os $menuentry_id_option 'osprober-efi-30D1-2A26' {
insmod part_gpt
insmod fat
set root='hd0,gpt3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3 30D1-2A26
else
search --no-floppy --fs-uuid --set=root 30D1-2A26
fi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
### END /etc/grub.d/30_os-prober ###

### 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 ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

 

거의 끝나갈때 쯤에 윈도 부트 매니저라는 이름의 메뉴엔트리항목이 보입니다.

그 항목에 포함된 set root='hd0,gpt~'에서 마지막 숫자만 아까 /dev/sda~에 있던 숫자로 바꿔주세요.

저는 /dev/sda3이었기 때문에 hd0,gpt3!!

다 하셨다면 Esc 눌리시고 : 눌리시고 wq 쓰시고 엔터!

힘드시죠??

이제 끝이 보이네요 ㅎㅎ

방금 수정한 파일을 EFI 파티션에도 보내줍니다.

# cp /boot/grub2/grub.cfg /mnt/EFI/fedora/grub.cfg

그리곤 그대로 설치합니다.

# grub2-install /dev/sda

이제 끝!!! 재부팅하면서 확인하세요 ㅎ

# reboot

부팅화면에서 윈도 항목이 떠있다면 성공입니다!!

혹 진행하시다가 오류가 발생하거나 어려우신 부분 있다면 댓글로 남겨주세요.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다