대부분은 윈도우 먼저 설치하고 우분투 설치하시죠?

https://jimnong.tistory.com/676

위 글에서 윈도우 먼저 설치+우분투 나중에 설치로 듀얼부팅 구축하는 방법을 정리했었는데, 반대의 방식(우분투 먼저 설치 → 윈도우 나중에 설치)도 정리할 필요가 있을 것 같아서 글을 씁니다.


우분투를 먼저 깔고 윈도우를 나중에 깔면 100% 확률로 GRUB2가 깨질텐데, GRUB2를 수리하는 것이 우분투 먼저 설치 + 윈도우 나중에 설치하는 과정의 핵심이겠죠?

GRUB 수리 방법을 설명하신 분들은 boot-repair 패키지로 GUI에서 진행하는 방법을 소개하시더군요.


▲ boot-repair 화면


그런데 Boot-Repair로 GRUB을 수리하면 GRUB 항목에 이것저것 불필요한 항목들이 추가되는 사례가 보여서, 저는 터미널 창에서 수동으로 복구하는 방식으로 듀얼부팅 완성하는 과정을 정리할까 해요. 우분투/윈도우 설치 과정은 간단하게 언급하고, 실질적으로 중요한 GRUB 수리/복원 과정을 자세하게 적을 것입니다.


https://help.ubuntu.com/community/Grub2/Installing

에서 Reinstalling GRUB 2 부분을 참고했으니, 안심하고 따라하셔도 될 거예요.



1. Legacy 바이오스 + MBR 기준


▲ 아마 대부분 "Try Ubuntu"를 선택해서 USB로 부팅한 다음 설치를 진행하시겠죠?


우분투 설치 아이콘을 더블클릭하면 설치가 시작될 거예요.


▲ 우분투가 파티션을 어떻게 구성할지 모르니까, 대부분의 "디스크를 지우고 Ubuntu 설치"를 선택하실 거예요. 나중에 GParted라는 GUI 기반 파티션 조정 툴로 파티션 크기를 줄이고 윈도우 설치 공간을 확보할테니, 겁먹지 말고 진행합니다.

(만약 우분투 파티션 구조를 잘 알고 있다면 "기타"를 선택해서 파티션을 직접 구성하세요.)


▲ 설치 완료 후 다시 시작하면 하드디스크에 설치된 우분투 리눅스로 부팅되겠죠?


▲ 재부팅 전에 참고삼아 GParted 프로그램을 실행해봤더니 /dev/sda 디스크(우측 상단에 나옴)에 /dev/sda1 파티션이 통으로 설정되어 있네요. 그런데 열쇠모양 아이콘이 보이죠? 이렇게 되어 있으면 파티션 용량을 조정하지 못합니다.


※ 물리 디스크는 a,b,c,d 형태로 올라갑니다. sda, sdb, sdc, sdd 등등등... 파티션은 1,2,3,4 형태로 물리 디스크 뒤에 붙습니다. sda1, sda2, sda3, sda4 등등...


/dev/sda1 파티션 용량을 줄여 윈도우 설치 공간을 확보하기 위해, 우분투 USB로 재부팅합니다(Try Ubuntu 선택).

(하드디스크로 부팅하면 열쇠모양 아이콘이 계속 따라다닙니다.)


▲ 터미널 창을 띄우고(단축키 : Ctrl+Alt+T), gparted 라고 입력합니다.


 GParted가 실행되겠죠?

우분투가 설치된 파티션에서 마우스 우클릭 → Resize/Move를 클릭합니다.

(좌측 상단에 붉은 네모 표시한 아이콘을 눌러도 됩니다.)


▲ New Size의 용량을 줄이면 Free space가 늘어날 겁니다. Free space에 윈도우가 설치될테니 적당히 조정 후 "Resize/Move" 버튼을 누릅니다.


▲ 상당 바의 V 모양 아이콘을 누르면 축소 작업이 시작됩니다. 경고창이 뜨더라도 Apply 해주세요.


처리가 끝났으면 PC를 꺼주세요. 그리고 윈도우 USB를 넣고 하드디스크 여유 공간에 윈도우를 설치합니다.

[윈도우10] 다운로드 과정/USB 설치미디어 생성/윈도우10 설치 방법 정리


▲ 노파심에 적습니다. 윈도우도 Legacy + MBR로 설치해야 합니다!

파티션 생성할 때 500MB 시스템 예약 파티션만 추가로 생성되면 Legacy 모드인 겁니다.

(100MB짜리 EFI 파티션도 추가로 생성되면 UEFI 모드고요.)


윈도우 설치 후 재부팅해보면 "무조건" 윈도우로만 부팅될 겁니다. 우분투 파티션은 지워지지 않았음에도...

이제 GRUB2를 수리할 차례입니다. 우분투 설치용 USB를 넣고 부팅하세요.


▲ "Try Ubuntu"를 선택해야겠죠?


▲ 터미널 창을 띄우고(단축키 : Ctrl+Alt+T), sudo fdisk -l (또는 lsblk -o NAME,FSTYPE,UUID,SIZE ) 라고 입력해서 파티션 구조&이름을 파악합니다.



스샷에서는 sda1 파티션(ext4 파일시스템)에 우분투가, sda3 파티션(ntfs 파일시스템)에 윈도우가 설치되어 있겠죠? sda1은 2048번째 섹터부터 시작한다고 나오는데, 0~2047까지의 섹터는 어디에서 뭘 하는지 안 나와있죠? 0~2047 섹터의 어딘가에 GRUB2가 설치되어 있었을 겁니다. 우분투/윈도우 영역이 인식되기 전에 GRUB2가 먼저 인식되려면 그 공간을 쓰는 게 최적이겠죠! 그런데 이 부분에 파티션 이름이 부여되어있지 않네요. 아무튼 /dev/sda 디스크의 0번 섹터부터 읽어들이다 보면 GRUB2가 첫번째로 얻어 걸려 띄워지는 것이지요.


각설하고,

우분투 파티션을 /mnt 경로에 마운트해야 합니다. 위 스샷 기준으로는 /dev/sda1 이겠죠? 본인의 파티션 넘버에 맞춰주면 되는 겁니다.


▼ " sudo mount 우분투파티션경로 /mnt "  이렇게 입력하면 마운트가 됩니다.

▲ 실수를 방지하기 위한 확인작업!

ll /mnt/boot 라고 입력했을 때 grub 디렉토리가 보여야 합니다. 그리고 ll /mnt/boot/grub 이라고 입력했을 때 i386-pc 디렉토리가 보이면 우분투 설치할 때 Legacy 바이오스용 GRUB2가 설치되었던 겁니다.


(저를 포함한) 대부분의 분들은 이 문단의 과정을 건너뛰게 될텐데(요즘은 흔치 않은 구성이라서요),

만약 우분투 부팅 파티션을 별도로 구성한 적이 있다면 아래처럼 명령어를 입력하여 부팅 파티션을 마운트합니다.

sudo mount /dev/sda6 /mnt/boot

(/mnt/boot 디렉토리 아래에 grub 디렉토리가 오도록. /mnt/boot/grub 이렇게.)

부팅 파티션이 있는지 어떻게 알 수 있느냐? 마운트한 우분투 파티션에서 /mnt/etc/fstab 파일을 에디터로 열어봤을 때 /boot 에 대한 항목이 있고 /dev/sda4 처럼 가리키는 파티션이 있으면 부팅 파티션이 있는 것입니다.


▲ for i in /dev /dev/pts /proc /sys /run; do sudo mount -B \$i /mnt\$i; done

라고 입력해서 우분투 USB의 /dev, /dev/pts, /proc, /sys, /run 디렉토리들을 하드디스크 /mnt 하위에 합칩니다.

sudo mount --bind /dev /mnt/dev

이런 식으로 여러 줄에 걸쳐 입력해야 할 것을 한 줄로 단순화한 거예요.


▲ sudo chroot /mnt

라고 입력해서 루트 디렉토리를 /mnt로 변경합니다. 우분투 USB(라이브 배포판)의 루트가 아니라 우분투가 설치된 파티션의 루트에 대해서 작업해야 되기 때문입니다.

grub-install 우분투 설치디스크 이름(본문 기준 /dev/sda)

root@ubuntu:/# 이라고 바뀌면 위의 명령어를 입력합니다. 우분투 파티션에 존재하던 GRUB 설정 파일이 유지된 채로 GRUB2가 재설치됩니다.

update-grub

위의 명령어를 입력하면 GRUB2 선택 항목에 Windows 10 이 추가됩니다.


터미널 창을 종료한 다음, PC를 끕니다. USB 메모리를 제거하고 하드디스크로 부팅을 시도합니다.


▲ GRUB2 정상화 성공! 윈도우10도 선택지에 추가된 것이 보입니다.


GRUB2를 완전히 삭제+재설치해야 하는 경우를 제외한 대부분의 상황에서 이 방법으로 GRUB2를 살릴 수 있을 겁니다. 윈도우 재설치 시에도 써먹을 수 있을 거예요.


▲ 혹시라도 GRUB2를 완전삭제+재설치할 경우가 생길지 모르니, Legacy 바이오스 환경에서 우분투 설치했을 때 깔리는 GRUB 패키지들의 목록을 올려둡니다.



2. UEFI 바이오스 + GPT 기준


바이오스에서 Secure Boot는 해제하셨겠죠? Fast Boot도 해제하면 좋을 겁니다.


▲ 아마 대부분 "Try Ubuntu"를 선택해서 USB로 부팅한 다음 설치를 진행하시겠죠?


우분투 설치 아이콘을 더블클릭하면 설치가 시작될 거예요.


▲ 우분투가 파티션을 어떻게 구성할지 모르니까, 대부분의 "디스크를 지우고 Ubuntu 설치"를 선택하실 거예요. 나중에 GParted라는 GUI 기반 파티션 조정 툴로 파티션 크기를 줄이고 윈도우 설치 공간을 확보할테니, 겁먹지 말고 진행합니다.

(만약 우분투 파티션 구조를 잘 알고 있다면 "기타"를 선택해서 파티션을 직접 구성하세요.)


▲ 설치 완료 후 다시 시작하면 하드디스크에 설치된 우분투 리눅스로 부팅되겠죠?


▲ 재부팅 전에 참고삼아 GParted 프로그램을 실행해봤더니 /dev/sda 디스크(우측 상단에 나옴)에 512MB짜리 /dev/sda1 파티션이 EFI용으로, /dev/sda2 파티션이 우분투 용으로 설정되어 있네요. 그런데 열쇠모양 아이콘이 보이죠? 이렇게 되어 있으면 해당 파티션의 용량을 조정하지 못합니다.


※ 물리 디스크는 a,b,c,d 형태로 올라갑니다. sda, sdb, sdc, sdd 등등등... 파티션은 1,2,3,4 형태로 물리 디스크 뒤에 붙습니다. sda1, sda2, sda3, sda4 등등...


/dev/sda2 우분투 파티션 용량을 줄여 윈도우 설치 공간을 확보하기 위해, 우분투 USB로 재부팅합니다(Try Ubuntu 선택).

(하드디스크로 부팅하면 열쇠모양 아이콘이 계속 따라다닙니다.)


▲ 터미널 창을 띄우고(단축키 : Ctrl+Alt+T), gparted 라고 입력합니다.


▲ GParted가 실행되겠죠?

우분투가 설치된 파티션에서 마우스 우클릭 → Resize/Move를 클릭합니다.

(좌측 상단에 붉은 네모 표시한 아이콘을 눌러도 됩니다.)


▲ New Size의 용량을 줄이면 Free space가 늘어날 겁니다. Free space에 윈도우가 설치될테니 적당히 조정 후 "Resize/Move" 버튼을 누릅니다.


▲ 상당 바의 V 모양 아이콘을 누르면 축소 작업이 시작됩니다. 경고창이 뜨더라도 Apply 해주세요.


처리가 끝났으면 PC를 꺼주세요. 그리고 윈도우 USB를 넣고 하드디스크 여유 공간에 윈도우를 설치합니다.

[윈도우10] 다운로드 과정/USB 설치미디어 생성/윈도우10 설치 방법 정리


▲ 노파심에 적습니다. 윈도우도 UEFI + GPT로 설치해야 합니다!

우분투를 UEFI 모드로 설치할 때 EFI 파티션이 512MB짜리가 생성되어서 그런지

윈도우10 UEFI 모드로 설치할 때는 100MB짜리 EFI 파티션이 안 만들어지고 16MB짜리 MSR(예약) 파티션이 생성되네요.


윈도우 설치 후 재부팅해보면 "무조건" 윈도우로만 부팅될 겁니다. 우분투 파티션은 지워지지 않았음에도...

이제 GRUB2를 수리할 차례입니다.

우분투 설치용 USB를 넣고 부팅하세요. Try Ubuntu 를 선택.


▲ 터미널 창을 띄우고(단축키 : Ctrl+Alt+T), sudo fdisk -l (또는 lsblk -o NAME,FSTYPE,UUID,SIZE ) 라고 입력해서 파티션 구조&이름을 파악합니다.



스샷에서는 sda1은 EFI 파티션, sda2 파티션(ext4 파일시스템)에 우분투가, sda4 파티션(ntfs 파일시스템)에 윈도우가 설치되어 있겠죠? sda1은 2048번째 섹터부터 시작한다고 나오는데, 0~2047까지의 섹터는 어디에서 뭘 하는지 안 나와있죠? 0~2047 섹터의 어딘가에 GRUB2가 설치되어 있었을 겁니다. 우분투/윈도우 영역이 인식되기 전에 GRUB2가 먼저 인식되려면 그 공간을 쓰는 게 최적이겠죠! 그런데 이 부분에 파티션 이름이 부여되어있지 않네요. 아무튼 /dev/sda 디스크의 0번 섹터부터 읽어들이다 보면 GRUB2가 첫번째로 얻어걸려 띄워지는 것이지요.


각설하고,

우분투 파티션을 /mnt 경로에 마운트해야 합니다. 위 스샷 기준으로는 /dev/sda2 이겠죠? 본인의 파티션 넘버에 맞춰주면 되는 겁니다.


▼ " sudo mount 우분투파티션경로 /mnt "  이렇게 입력하면 마운트가 됩니다.

▲ 실수를 방지하기 위한 확인작업!

ll /mnt/boot 라고 입력했을 때 grub 디렉토리가 보여야 합니다. 그리고 ll /mnt/boot/grub 이라고 입력했을 때 x86_64-efi 디렉토리가 보이면 우분투 설치할 때 UEFI 바이오스용 GRUB2가 설치되었던 겁니다.


(저를 포함한) 대부분의 분들은 이 문단의 과정을 건너뛰게 될텐데(요즘은 흔치 않은 구성이라서요),

만약 우분투 부팅 파티션을 별도로 구성한 적이 있다면 아래처럼 명령어를 입력하여 부팅 파티션을 마운트합니다.

sudo mount /dev/sda6 /mnt/boot

(/mnt/boot 디렉토리 아래에 grub 디렉토리가 오도록. /mnt/boot/grub 이렇게.)

부팅 파티션이 있는지 어떻게 알 수 있느냐? 마운트한 우분투 파티션에서 /mnt/etc/fstab 파일을 에디터로 열어봤을 때 /boot 에 대한 항목이 있고 /dev/sda4 처럼 가리키는 파티션이 있으면 부팅 파티션이 있는 것입니다.


▲ for i in /dev /dev/pts /proc /sys /run; do sudo mount -B \$i /mnt\$i; done

라고 입력해서 우분투 USB의 /dev, /dev/pts, /proc, /sys, /run 디렉토리들을 하드디스크 /mnt 하위에 합칩니다.

sudo mount --bind /dev /mnt/dev

이런 식으로 여러 줄에 걸쳐 입력해야 할 것을 한 줄로 단순화한 거예요.


▲ ll 명령어로 /mnt/boot/efi 디렉토리를 조회해봤는데 아무것도 없네요? UEFI용 GRUB2는 EFI 파티션이 /boot/efi 경로에 마운트된 상태로 돌아가던데 말이지요. 그래서...

sudo mount EFI파티션 /mnt/boot/efi

이런 식으로 입력해서 마운트해 줬습니다.


▲ sudo chroot /mnt

라고 입력해서 루트 디렉토리를 /mnt로 변경합니다. 우분투 USB(라이브 배포판)의 루트가 아니라 우분투가 설치된 파티션의 루트에 대해서 작업해야 되기 때문입니다.

grub-install 우분투 설치디스크 이름(본문 기준 /dev/sda)

root@ubuntu:/# 이라고 바뀌면 위의 명령어를 입력합니다. 우분투 파티션에 존재하던 GRUB 설정 파일이 유지된 채로 GRUB2가 재설치됩니다.

update-grub

위의 명령어를 입력하면 GRUB2 선택 항목에 Windows Boot Manager 가 추가됩니다.


터미널 창을 종료한 다음, PC를 끕니다. USB 메모리를 제거하고...

하드디스크로 부팅을 시도합니다.


▲ 반가운 화면. ^^ GRUB2 고치기 성공!


GRUB 복구 방법은 윈도우 파티션 밀고 재설치할 때에도 써먹을 수 있겠지요? 윈도우 먼저 설치+우분투 나중에 설치했을 때에도 언젠가는 윈도우 파티션 밀고 재설치할 때가 반드시 오니까...


▲ 혹시라도 GRUB2를 완전삭제+재설치할 경우가 생길지 모르니, UEFI 바이오스 환경에서 우분투 설치했을 때 깔리는 GRUB 패키지들의 목록을 올려둡니다. (어떤 PC는 grub-common, grub-efi-amd64, grub-efi-amd64-bin, grub-efi-amd64-signed, grub2-common 패키지들만 깔끔하게 보이기도 하더군요.)


나중에 요청 들어오면+시간이 나면 GRUB2를 완전히 삭제해서 기존 GRUB 설정파일을 날리고 GRUB2를 재설치하는 방법도 적어볼게요.

즐거운 우분투 생활 하세요~

반응형