이번에는 윈도우가 설치된 PC에 우분투를 같이 설치해서, 부팅할 때 윈도우와 우분투 중 하나를 선택할 수 있도록 만드는 과정을 정리해보려고 한다.
간략하게 순서는
다만 파티션을 직접 건드리는 작업이라 잘못 선택하면 윈도우 데이터가 날아갈 수 있다.
실제로 정말 위험한 순간이 몇번 지나갔다..
또한 중요한 파일은 먼저 백업해두고 진행하는 게 좋다.
윈도우가 UEFI로 설치되어 있는데 우분투를 BIOS/Legacy 방식으로 설치하면 부트로더 쪽에서 문제가 생길 수 있다.
때문에 윈도우와 우분투의 부팅 방식이 맞아야 한다.
그래서 설치 USB로 부팅할 때도 UEFI: USB 이름처럼 UEFI가 붙은 항목을 선택해주자.
준비물은 다음과 같다.
.deb 파일 USB윈도우 설치 USB는 우분투 설치용은 아니여서 필수는 아니지만,
부트로더가 꼬여서 윈도우 복구 환경으로 들어가야 할 때를 대비해서 준비해두는 용도다.
정말 위험한 순간에 나를 여러 번 살려줬다 ㅠ
그리고 vim USB는 인터넷이 안 되는 환경에서 GRUB 설정 파일을 수정하려고 넣은 준비물이다.
인터넷이 된다면 그냥 아래처럼 설치하면 된다.
sudo apt update
sudo apt install vim
vim 외에 nano 등도 가능한데 vim이 익숙해서 이걸로 진행했다.
먼저 우분투가 설치될 공간을 만들어야 한다.
윈도우 버튼을 우클릭하고 디스크 관리로 들어간다.
그 다음 C 드라이브나 D 드라이브처럼 용량을 줄일 파티션을 우클릭하고 볼륨 축소를 선택한다.
![]()
이미지 출처: 디스크 파티션 분할하기

축소할 공간은 MB 단위로 입력한다.
예를 들어 50GB 정도를 확보하고 싶다면 대충 아래처럼 계산하면 된다.
50GB = 50 * 1024 = 51200MB
예전에는 우분투 설치 최소 용량을 8GB 정도로 잡기도 했는데, 지금 기준으로는 너무 빠듯하다.
우분투 공식 문서에서도 데스크탑 설치에 최소 25GB 이상의 저장 공간을 안내하고 있다.

https://ubuntu.com/tutorials/install-ubuntu-desktop?utm_source=chatgpt.com#1-overview
그래서 개인적으로는 최소 30GB 이상, 개발 환경까지 생각하면 50GB 이상을 권장한다.
축소가 끝나면 할당되지 않음 공간이 생긴다.

이미지 출처: 디스크 파티션 분할하기
여기서 중요한 건 이 공간을 윈도우에서 새 볼륨으로 만들지 않는 것이다.
그냥 할당되지 않음 상태로 놔둬야 우분투 설치 화면에서 사용할 수 있다.
우분투 ISO는 공식 다운로드 페이지에서 받으면 된다.
윈도우에서 설치 USB를 만들 때는 보통 Rufus를 사용한다.
Rufus에서는 대충 아래 기준으로 맞춰주면 된다.
| 항목 | 값 |
|---|---|
| 부트 선택 | 다운로드한 Ubuntu ISO |
| 파티션 구성 | GPT |
| 대상 시스템 | UEFI |
| 파일 시스템 | FAT32 또는 NTFS |
파일 시스템은 보통 FAT32로 많이 잡히는데, ISO 파일 구성에 따라 NTFS로 잡히는 경우도 있다.
중요한 건 GPT, UEFI 쪽이다.
ISO 파일을 USB에 복사하는 것이 아니라, Rufus 같은 도구로 부팅 가능한 USB를 만들어야 한다.
USB를 꽂고 재부팅한 뒤 부팅 메뉴로 들어간다.
부팅 메뉴 키는 제조사마다 조금씩 다르다.
| 제조사 | 자주 쓰는 키 |
|---|---|
| Samsung | F2, F10 |
| LG | F2, F10 |
| ASUS | F2, F8 |
| Lenovo | F1, F2, F12 |
| Dell | F2, F12 |
| HP | Esc, F9 |
정확한 키는 모델마다 다를 수 있어서, 부팅할 때 잠깐 뜨는 안내 문구를 보는 게 제일 확실하다.
부팅 장치 목록에서 USB를 고를 때는 UEFI가 붙은 항목을 선택해주자.

예를 들면 이런 식이다.
UEFI: SanDisk USB
UEFI가 안 붙은 USB 항목도 같이 보일 수 있는데, 그건 BIOS/Legacy 방식으로 부팅되는 경우가 있다.
이 글에서는 UEFI 기준으로 설치할 것이기 때문에 UEFI가 붙은 쪽을 고르면 된다.

그 후 최상단의 Ubuntu를 골라준다.(한 5분 정도 기다리기)
우분투 설치 화면이 뜨면 대략 이런 순서로 진행하면 된다.
Ubuntu 설치 선택기타 또는 수동 설치 선택자동 설치 옵션을 잘못 선택하면 윈도우 파티션이 날아갈 수 있기 때문에 멀티부팅을 직접 구성할 때는 기타, Something else, Manual installation 같은 수동 설치 옵션으로 들어간다.

위에서 윈도우에서 만들어둔 공간이 남은 공간, free space, 할당되지 않음 같은 이름으로 보일 것이다.
남은 공간을 선택하고 파티션을 만들어주면 된다.
내가 잡을 기준은 아래처럼 정리했다.
| 파티션 | 용량 | 형식 | 마운트 위치 |
|---|---|---|---|
| boot | 1024MB | ext4 | /boot |
| EFI System Partition | 300MB ~ 512MB | EFI / FAT32 | /boot/efi 또는 EFI 시스템 파티션 |
| root | 최소 25GB 이상 | ext4 | / |
| swap | 선택 | swap | 없음 |
처음 정리할 때는 /boot를 500MB 정도로 잡아도 된다고 생각했는데, 커널 업데이트나 설치 과정에서 용량이 부족할 수 있다.
특히 Error installing linux-image-5.19.0-41-generic 같은 오류가 나오면 /boot 용량 부족일 가능성이 있다.
그래서 /boot는 1024MB 정도로 안전하게 잡도록 하자.
EFI 파티션은 UEFI 부팅에 필요하다.
설치 화면에 따라 EFI System Partition이라고 나오기도 하고, 마운트 위치가 /boot/efi로 보이기도 한다.
이미 윈도우가 설치된 디스크에는 기존 EFI 파티션이 있을 수 있다.
이 파티션은 절대 포맷하면 안 된다.
새 EFI 파티션을 만들지, 기존 EFI 파티션을 사용할지는 환경마다 다르지만, 어떤 경우든 윈도우 EFI 파티션을 지우거나 포맷하는 건 피해야 한다.
root 파티션은 우분투의 실제 시스템이 들어가는 공간이다.
최소 설치만 해도 25GB 이상은 잡는 게 좋고, 용도에 따라 넉넉하게 잡도록 하자. 나같은 경우엔 서버, 프로젝트 빌드 파일, 로그 파일 등을 고려해서 잡았다.
swap은 RAM이 부족할 때 임시 저장 공간처럼 쓰이는 파티션이다.
요즘은 swap file로도 많이 처리되기 때문에 꼭 파티션으로 만들 필요는 없지만, 만들 거라면 1GB 이상 정도로 잡으면 된다.
파티션을 다 만들었으면 부트로더를 설치할 장치를 선택한다.
여기서 장치 이름이 /dev/sda, /dev/nvme0n1처럼 보일 수 있다.
우분투를 설치하는 디스크나 /boot 쪽을 기준으로 잡아주면 된다.
이 부분은 환경마다 이름이 다르기 때문에 무작정 따라 누르기보다, 어느 디스크에 윈도우가 있고 어느 디스크에 우분투를 설치하는지 확인하면서 진행해야 한다.
설정을 마쳤으면 지금 설치를 누르고 지역, 계정, 비밀번호를 설정한 뒤 설치를 기다리면 된다.
설치가 끝나면 다시 시작을 누르고, 안내가 나오면 USB를 뽑은 다음 엔터를 누른다.

설치가 끝났는데 바로 윈도우로 들어가면 당황할 수 있다.
이건 우분투가 설치되지 않은 게 아니라, 윈도우 부트 매니저가 먼저 실행되고 있을 가능성이 있다.
GRUB 화면에서 윈도우와 우분투를 고르려면 우분투 부트 매니저가 먼저 실행되어야 한다.
우리의 목적은 멀티 부팅이기 때문에 윈도우 혹은 우분투 중에 선택할 수 있어야 한다.
다시 재부팅하고 이전의 방법대로 UEFI 설정 화면으로 들어간다.
그리고 Boot 탭에서 부팅 우선순위를 아래처럼 맞춰준다.

설정을 저장하고 재부팅하면 GRUB 화면이 나온다.
이제 우분투로 들어가서 GRUB 설정을 바꿔주자.
기본 설정에 따라 GRUB 메뉴가 숨겨져 있거나, 너무 빠르게 넘어갈 수 있다.
그래서 /etc/default/grub 파일을 수정한다.
sudo vim /etc/default/grub
아래 값을 찾아서 수정한다.
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=10
GRUB_TIMEOUT_STYLE의 초기 값은 hidden인데, 이러면 메뉴가 숨어있다.
menu로 바꾸면 부팅할 때 GRUB 메뉴가 보인다.
GRUB_TIMEOUT=10은 10초 동안 선택을 기다리겠다는 뜻이다.
이것도 0인 경우 메뉴가 안나올 수 있다.
아무것도 선택하지 않으면 기본값인 우분투로 부팅된다.
수정이 끝났으면 GRUB 설정을 업데이트한다.
sudo update-grub
그리고 재부팅한다.
sudo reboot
최종적으로 아래처럼 우분투와 윈도우를 선택할 수 있는 화면이 나오면 된다.

우분투는 잘 켜지는데 GRUB 메뉴에 윈도우가 안 보일 수 있다.
그럴 때는 os-prober가 비활성화되어 있는 경우를 확인해보면 된다.
먼저 설치한다.
sudo apt update
sudo apt install os-prober
그 다음 GRUB 설정 파일을 연다.
sudo vim /etc/default/grub
아래 값을 추가하거나 수정한다.
GRUB_DISABLE_OS_PROBER=false
그리고 다시 업데이트한다.
sudo os-prober
sudo update-grub
여기서 윈도우가 감지되면 재부팅 후 GRUB 메뉴에 윈도우 항목이 보일 것이다.
미리 받아둔 .deb 파일로 vim을 설치할 수 있다.
USB가 /media/hyeon/8886-07/linux/ 경로에 마운트되어 있다고 가정하면 아래처럼 실행한다.
sudo dpkg --force-all -i /media/daeho/8886-07/linux/*.deb
위 경로는 예시다.
본인 USB가 마운트된 경로에 맞게 바꿔야 한다.
경로가 헷갈리면 /media 아래를 확인해보면 된다.
ls /media
ls /media/$USER
인터넷 안되는 상황에서 vim은 그냥 신이야
/boot 용량 부족설치 중에 아래와 비슷한 오류가 나오면 /boot 파티션 용량이 부족한 경우가 있다.
Error installing linux-image-5.19.0-41-generic
이 경우 /boot를 500MB가 아니라 1024MB 정도로 다시 잡고 설치하는 게 좋다.
부팅 중 grub rescue> 화면이 뜨면 GRUB이 부팅 파일 위치를 제대로 못 찾는 상태일 수 있다.
이때는 먼저 파티션 목록을 확인한다.
ls
그리고 각 파티션을 하나씩 확인한다.
ls (hd0,gpt1)
ls (hd0,gpt2)
ls (hd0,gpt3)
Filesystem is unknown이 아닌 파티션을 찾은 뒤, 예를 들어 (hd0,gpt2)가 맞다면 아래처럼 시도할 수 있다.
set boot=(hd0,gpt2)
set prefix=(hd0,gpt2)/boot/grub
insmod normal
normal
이건 임시로 부팅 메뉴로 돌아가는 방법에 가깝다.
부팅에 성공했다면 우분투로 들어가서 다시 GRUB을 업데이트해주는 게 좋다.
sudo update-grub
윈도우 자체가 부팅되지 않는다면 윈도우 설치 USB로 복구 환경에 들어가야 할 수 있다.
이때는 컴퓨터 복구 > 문제 해결 > 명령 프롬프트 쪽으로 들어간다.
자주 보이는 명령어는 아래와 같다.
bootrec /fixmbr
bootrec /fixboot
다만 EFI 파티션을 직접 잡아서 bcdboot를 실행해야 하는 경우도 있다.
이 부분은 디스크와 EFI 파티션 번호가 환경마다 달라서, 그대로 복붙하면 오히려 더 꼬일 수 있다.
그래서 윈도우 부트로더 복구는 현재 디스크 구조를 먼저 확인하고 진행하는 게 맞다.
멀티 부팅 왜 하는건가 싶었는데, 내 경우엔 윈도우의 환경과 깔린 내용을 유지한 채 리눅스 서버에 배포해야 하는 상황이었다.
아직까지도 대체 왜 잘 있는 정품 윈도우에 배포를 안한 걸까 안할 이유도 없고 멀티부팅 얘기 꺼낼 사람도 없고 리눅스에서만 돌아가는 프로그램도 아니고 오히려 윈도우가 더 친숙하고 여러모로 이해는 되지 않는데 일단 위에서 정해져서 작업은 했다.
정말 말도 안되는 상황 아니면 안쓰지 않을까..
이 작업을 하면서 전반적인 파티션이나 OS의 개념이나 우분투에 대해 많이 배울 수 있었다.
테스트할 때 안쓰는 PC긴 하지만 연습 여러 번 해보겠다고 까불다가 데이터 다 날아갈 뻔한 적도 있고..
그래도 즐거운 경험이었다!