VirtualBox에서 USB 드라이브로 부팅하는 방법 – 실전 튜토리얼
업데이트: 2024년 2월 12일
들어가며: 왜 USB 드라이브 부팅이 필요한가?
VirtualBox에서 새 가상 머신을 만들면 일반적으로 게스트 운영체제를 시작하는 방법은 두 가지입니다. ISO 이미지(CD/DVD 드라이브에 해당)로 부팅하거나, 가상 하드 디스크로 부팅하는 것입니다. 그런데 만약 운영체제가 USB 드라이브에 들어 있고, 그것을 부팅 미디어로 사용하고 싶다면 어떻게 해야 할까요?
이런 상황이 필요한 이유는 다양합니다. 예를 들어 운영체제가 ISO처럼 간편한 형식으로 제공되지 않을 수 있습니다. 아니면 원본 ISO는 없고 외장 드라이브의 파티션 테이블과 데이터만 남아 있는 경우도 있죠. 이번 튜토리얼에서는 기존의 부팅 가능한 USB 드라이브에서 부팅하여 그 안에 담긴 운영체제를 실행하는 방법을 소개합니다. 플랫폼은 Linux를 기준으로 설명합니다.
Raw 디스크 옵션과 반드시 알아야 할 경고
VirtualBox는 'raw' 장치로부터 부팅하는 기능을 지원합니다. 즉, 내장 또는 외장 저장 장치를 raw 장치로 구성한 뒤 그것으로 부팅할 수 있습니다. 듀얼 부팅이나 멀티 부팅 환경을 포함해 어떤 운영체제든 가능하고, 이론상으로는 자신의 시스템 드라이브(Windows라면 C:\이 있는 파티션)를 매핑해서 실행하는 것도 가능합니다.
그리고 바로 여기에 큰 위험이 숨어 있습니다. 디스크를 잘못 구성하기란 너무나 쉽습니다. 글자 하나만 잘못 입력해도 기존 디스크와 그 안의 데이터를 되돌릴 수 없이 파괴할 수 있습니다. 실제로 이 기능을 잘못 사용해 노트북을 망친 지인까지 있습니다. raw 장치 기능을 사용할 때는 각별히 주의해야 합니다. 충분히 경고했으니 이제 본격적으로 시작해 보겠습니다.
1단계: 디스크 파일 생성 후 raw 장치에 매핑
아래 명령으로 raw 디스크를 생성합니다:
sudo VBoxManage createmedium disk --filename=[file.vmdk] --format=VMDK --variant=RawDisk --property RawDrive=[device]
명령어 구성 요소 살펴보기
여기서 가장 중요한 두 가지 요소는 다음과 같습니다:
- filename – VirtualBox가 raw 장치를 인식하는 데 사용할 파일(VMDK 형식)입니다.
- RawDrive – 해당 파일에 매핑할 실제 raw 장치입니다.
파일이 저장되는 위치는 크게 중요하지 않지만, 올바른 raw 장치를 식별하는 것은 매우 중요합니다. Linux에서는 fdisk로 장치 목록을 확인할 수 있습니다. 하드 디스크 표기 방식과 정확한 용량을 파악해야 합니다. 먼저 fdisk -l로 로컬 장치 전체를 확인하고(스냅 같은 루프백 장치도 함께 표시됩니다), 저장 장치 구성을 파악한 뒤 목록을 좁혀 나가면 됩니다. 예를 들면 다음과 같습니다:
sudo fdisk -l /dev/nvme*
Disk /dev/nvme0n1: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 980 1TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 131072 bytes
Disklabel type: gpt
Disk identifier: C096EC37-7278-4E24-98C6-6A3906628E91
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 1050623 1048576 512M EFI System
/dev/nvme0n1p2 1050624 4550655 3500032 1.7G Linux filesystem
/dev/nvme0n1p3 4550656 1953523711 1948973056 929.3G Linux filesystem
USB 드라이브도 마찬가지로 확인할 수 있습니다:
sudo fdisk -l /dev/sdb
Disk /dev/sdb: 14.91 GiB, 16008609792 bytes, 31266816 sectors
Disk model: Cruzer Switch
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: A674DC54-3E17-4C42-8B62-90E4DCE4AEB3
...
이 경우 fdisk는 디스크 모델 정보도 함께 출력해 주는데, 이것이 상당히 유용합니다. 덕분에 외부 USB 메모리와 내장 하드 디스크를 쉽게 구분할 수 있고, 절대 건드려서는 안 될 내장 디스크를 피할 수 있습니다. 일부 배포판은 GUI로도 장치 정보를 확인할 수 있습니다.
예를 들어 USB 드라이브가 /dev/sdb에 매핑되어 있다면, raw 장치 매핑 명령은 다음과 같이 실행합니다:
sudo VBoxManage createmedium disk --filename=./Rdisk.vmdk --format=VMDK --variant=RawDisk --property RawDrive=/dev/sdb
이 단계에서는 특히 신중해야 합니다. USB 드라이브를 정확히 식별해야 하며, 잘못된 장치를 매핑하면 나중에 문제가 발생하거나 데이터가 손실될 수 있습니다.
sudo VBoxManage createmedium disk --filename=./Rdisk.vmdk --format=VMDK --variant=RawDisk --property RawDrive=/dev/sdb
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Medium created. UUID: 041a84a8-9d9a-4ae3-a4a1-5393a24f6f7d
명령이 완료되면 VirtualBox를 실행합니다.
2단계: 새 디스크를 저장 장치 목록에 추가
다음은 생성한 디스크를 연결하는 단계입니다. VirtualBox의 하드 디스크 선택 도구(Hard Disk Selector)를 통해 진행할 수 있습니다. 도구 > 미디어 > 추가를 클릭하고 VMDK 파일을 찾아 추가하면 됩니다. 그런데 잠깐, 이 작업을 하려면 올바른 권한이 필요합니다. 디스크를 추가할 수 있다 해도 가상 머신이 실행되지 않으면서 다양한 오류가 발생할 수 있는데, 이 문제는 곧 다루겠습니다. 우선 권한이 올바르다고 가정하고 진행합니다.
디스크를 추가했다면 가상 머신 설정을 열고 '저장소(Storage)'를 클릭합니다. 기본적으로 SATA 컨트롤러 하나에 디스크(VDI) 하나가 이미 할당되어 있을 것입니다. 이를 선택한 뒤 파란색 + 아이콘을 눌러 디스크를 추가하고 VMDK 파일을 선택합니다. SATA 컨트롤러가 없다면 먼저 초록색 + 아이콘으로 SATA 컨트롤러를 추가한 후, 다시 + 아이콘으로 디스크를 추가하면 됩니다. 아래 예시의 최종 구성에는 Windows 11용 디스크(VDI 형식)와 Rdisk.vmdk(VMDK 형식), 두 개의 디스크가 할당되어 있습니다. ISO 파일로 부팅하지 않을 것이므로 기본 가상 광학 드라이브는 제거했습니다.
실전 활용 사례: Rufus로 만든 설치 미디어 테스트
제가 하려던 작업은 다음과 같습니다. Rufus라는 훌륭한 도구로 Windows 11 설치 미디어를 만들었습니다. Rufus는 설치 과정을 세밀하게 사용자 지정할 수 있어서, Windows 설치 중에 흔히 보이는 불필요한 요소들을 제거할 수도 있습니다. 다만 Rufus는 미디어와 설정을 오직 외부 장치에만 기록하며, ISO 파일은 만들지 않습니다.
따라서 Rufus가 제대로 작동했는지 확인하려면 USB 장치를 어딘가에서 부팅해 결과를 봐야 했습니다. 실제 물리적인 PC에서 테스트할 수도 있지만, 디스크를 포맷하고 시스템을 설치해야 하는 상황이라면 늘 쉬운 선택지는 아닙니다. 대신 가상 머신이 완벽한 대안이 되는데, 이때 가상 CD(ISO 파일)가 아닌 USB 드라이브로 부팅할 수 있어야 합니다.
그래서 위 예시의 가상 머신에는 비어 있는 Windows용 디스크와 raw 장치가 함께 연결되어 있으며, raw 장치는 설치 과정에서만 사용됩니다. 이론상 가상 머신에 여러 개의 부팅 가능한 디스크를 연결할 수도 있으며, 그 경우 BIOS에서 올바른 부팅 순서를 확인해야 합니다.
3단계: 발생 가능한 오류와 해결 방법
새 raw 디스크를 생성하면 Linux에서는 권한이 0600, 소유자가 root:root로 설정됩니다. 즉, 일반 사용자는 이 파일에 접근할 수 없고 VirtualBox에서 사용하는 것은 더욱 불가능합니다. 다른 사용자에게 rwx 권한을 추가하거나(권장하지 않음), 소유권을 변경하는 것이 좋습니다. 예를 들면 다음과 같습니다:
sudo chown roger:roger file.vmdk
또는:
sudo chown roger:vboxusers file.vmdk
그런데 이것만으로는 부족합니다. 대개 VERR_ACCESS_DENIED 오류를 만나게 됩니다:
Permission problem accessing the file for the medium 'path-to-your-vmdk-file' (VERR_ACCESS_DENIED).
Result Code: VBOX_E_FILE_ERROR (0X80BB0004)
Component: MediumWrap
Interface: IMedium {ad47ad09-787b-44ab-b343-a082a3f2dfb1}
Callee: IVirtualBox {7682d5eb-f00e-44f1-8ca2-99d08b1cd607}
Callee RC: VBOX_E_OBJECT_NOT_FOUND (0X80BB0001)
원인은 다음과 같습니다. 사용자 계정이 올바르게 설정되어 있고 vboxusers 그룹의 멤버라 하더라도, raw 장치(disk 그룹)에 접근할 수 있도록 별도로 허용해야 합니다. 다음 명령으로 처리할 수 있습니다:
sudo usermod -a -G disk $USER
이후 로그아웃했다가 다시 로그인하면 변경 사항이 적용됩니다. 로그아웃 없이 적용하는 방법도 있지만, 대부분의 사용자에게는 이 방법이 가장 간단합니다. Windows와 Linux 모두에서 이 문제를 우회하는 또 다른 방법은 관리자 권한으로 VirtualBox를 실행하는 것입니다. 하지만 이는 일반적으로 현명하지 않습니다. 모든 작업과 실수들이 승격된 권한 수준으로 반영되기 때문입니다.
4단계: 부팅 및 테스트
모든 문제를 해결했으니 이제 실제로 작동하는지 확인해 보겠습니다. 사용자 지정된 부팅 화면이 나타난 것만으로도 Rufus가 제 역할을 하고 있다는 신호였습니다. 설치 단계에서는 두 개의 하드 디스크가 모두 보였는데, 하나는 실제 raw 장치(USB 드라이브)인 작은 디스크이고, 다른 하나는 설치 대상인 100GB 빈 가상 디스크였습니다.
두 개의 드라이브가 표시됩니다. 드라이브 0은 파티션이 두 개인 16GB USB 드라이브로, 설치 대상으로는 원하지 않는 디스크입니다(바로 이 점이 VirtualBox에서 raw 장치를 사용할 때의 잠재적 위험이기도 합니다). 드라이브 1은 파티션 테이블이 없는 100GB 빈 가상 디스크입니다. 선택지가 둘 이상일 때는 극도로 신중해야 한다는 점을 다시 강조합니다.
마무리
이 튜토리얼을 익혔다면 이제 본격적으로 활용할 수 있습니다. 멀티 디스크 구성을 테스트하거나, 외장(및 내장) 장치에 이미 존재하는 운영체제를 부팅해 볼 수 있습니다. 멀티 부팅 USB를 만들어 실제 하드웨어에 적용하기 전에 VirtualBox에서 정상 작동 여부를 검증하는 것도 좋은 방법입니다. 어떤 경우든 주의가 필요합니다. raw 디스크 기능은 물리적 호스트와 가상 게스트 사이의 격리 경계를 무너뜨리기 때문입니다.
이 글이 도움이 되었기를 바랍니다. VirtualBox에서 raw 장치를 사용하는 첫 번째 단계는 올바른 저장 매체를 정확히 식별하는 것입니다. 방법을 모르거나 확신이 서지 않는다면 지금 당장 멈추세요. 그다음에는 vmdk 파일을 생성해 올바른 장치에 매핑하고, 이후 권한 문제를 해결한 뒤, 마지막으로 디스크를 연결하고 USB 드라이브로 가상 머신을 부팅하면 됩니다. 오늘은 여기까지입니다. VirtualBox에 대해 궁금한 점이 있다면 의견을 남겨주세요. 앞으로도 유용한 가이드를 더 준비하겠습니다.
감사합니다.