RHEL 7 · 8 서버에 Oracle VirtualBox 를 설치하고, GUI 가 없는 서버에서 VM 을 만들어 쓰는 방법을 정리한다. 핵심은 세 가지다. 커널과 kernel-devel 버전이 정확히 같아야 모듈이 빌드되고, VirtualBox 는 root 가 아닌 일반 사용자로 실행해야 하며, 서버 환경에서는 GUI 대신 VBoxHeadless + VRDP 또는 VNC 로 운용하는 것이 정석이다.
| 호스트 | 권장 버전 | 비고 |
|---|---|---|
| RHEL 8.10 | 7.2.x | Oracle 공식 dnf 저장소에서 설치 |
| RHEL 7 | 6.1.50 | 6.1 마지막 릴리스. 7.x 는 3.10 커널과 호환이 보장되지 않는다 |
RHEL 7 은 2024년 6월 이후 ELS 단계다. VM 호스팅이 목적이면 RHEL 내장 KVM/libvirt 가 더 안정적이다.
# 가상화 지원과 Secure Boot 확인 (Secure Boot 가 켜져 있으면 vboxdrv 가 로드되지 않는다)
egrep -c '(vmx|svm)' /proc/cpuinfo
mokutil --sb-state
# 커널 업데이트 후 재부팅 — kernel-devel 과 버전을 맞추기 위해 필수
dnf update -y && systemctl reboot
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf install -y wget binutils kernel-devel kernel-headers libgomp make patch gcc \
glibc-headers glibc-devel dkms elfutils-libelf-devel
# 두 값이 같아야 한다
uname -r
rpm -q kernel-devel
wget -O /etc/yum.repos.d/virtualbox.repo \
https://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo
rpm --import https://www.virtualbox.org/download/oracle_vbox_2016.asc
dnf install -y VirtualBox-7.2
/sbin/vboxconfig
systemctl status vboxdrv
usermod -aG vboxusers <user>
RHEL 7 은 yum 으로 같은 절차를 밟되 VirtualBox-6.1 을 설치한다. 모듈 빌드 실패 원인은 /var/log/vbox-setup.log 에서 확인하며, 대부분 kernel-devel 버전 불일치다(yum install kernel-devel-$(uname -r) 로 맞춘다).
Extension Pack(USB 2.0/3.0, VRDP) 은 설치된 버전과 정확히 같은 것을 받는다. 개인 · 평가 · 교육 용도만 무료다.
VBOX_VER=$(VBoxManage --version | cut -d'r' -f1)
wget https://download.virtualbox.org/virtualbox/${VBOX_VER}/Oracle_VM_VirtualBox_Extension_Pack-${VBOX_VER}.vbox-extpack
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-${VBOX_VER}.vbox-extpack
VBoxManage list extpacks
Qt CRITICAL: Could not connect to any X display 는 X 서버에 접근할 수 없을 때 나는 메시지다. 일반 사용자로 X 세션이 떠 있는데 su - 로 root 가 된 뒤 virtualbox 를 실행하면 root 에게 X 권한이 없어 실패한다. root 로 만든 VM 은 일반 사용자 GUI 에 보이지도 않는다. VBoxManage list vms 가 비어 있으면 VM 이 꺼진 것이 아니라 그 계정으로 만든 VM 이 없는 것이다.
whoami # root 가 아니어야 한다
groups # vboxusers 가 보여야 한다
VBoxManage list vms
VBoxManage list runningvms
VM_NAME="testvm"
ISO_PATH="$HOME/iso/Rocky-9-latest-x86_64-minimal.iso"
VM_DIR="$HOME/VirtualBox VMs/$VM_NAME"
VBoxManage createvm --name "$VM_NAME" --ostype RedHat_64 --register
VBoxManage modifyvm "$VM_NAME" --memory 2048 --cpus 2 --vram 16
VBoxManage modifyvm "$VM_NAME" --nic1 nat
VBoxManage modifyvm "$VM_NAME" --natpf1 "ssh,tcp,,2222,,22"
VBoxManage createhd --filename "$VM_DIR/$VM_NAME.vdi" --size 20000
VBoxManage storagectl "$VM_NAME" --name "SATA" --add sata --controller IntelAhci
VBoxManage storageattach "$VM_NAME" --storagectl "SATA" --port 0 --device 0 \
--type hdd --medium "$VM_DIR/$VM_NAME.vdi"
VBoxManage storagectl "$VM_NAME" --name "IDE" --add ide
VBoxManage storageattach "$VM_NAME" --storagectl "IDE" --port 0 --device 0 \
--type dvddrive --medium "$ISO_PATH"
VBoxManage modifyvm "$VM_NAME" --vrde on --vrdeport 3389 # Extension Pack 필요
VBoxHeadless --startvm "$VM_NAME" &
VM 콘솔은 RDP 클라이언트로 서버IP:3389 에 붙어 본다. 외부 노출이 싫으면 ssh -L 3389:127.0.0.1:3389 user@서버IP 로 터널을 뚫고 127.0.0.1:3389 로 접속한다. 게스트 SSH 는 NAT 포트포워딩(2222 → 22) 으로 ssh -p 2222 user@127.0.0.1 이다. 같은 대역의 IP 가 필요하면 어댑터를 Bridged 로 바꾼다.
yum install -y tigervnc-server
yum groupinstall -y "Server with GUI"
# 일반 사용자로
vncpasswd
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
# <USER> 를 실제 계정으로 치환
systemctl daemon-reload
systemctl enable --now vncserver@:1.service
firewall-cmd --permanent --add-service=vnc-server && firewall-cmd --reload
디스플레이 :1 은 TCP 5901 이다. 평문 프로토콜이므로 사내망 밖에서는 ssh -L 5901:127.0.0.1:5901 user@서버IP 터널을 거쳐 127.0.0.1:1 로 붙는다. 접속 후 회색 화면만 보이면 ~/.vnc/xstartup 에서 exec /etc/X11/xinit/xinitrc 가 실행되는지 확인하고 chmod +x 후 서비스를 재시작한다.
| 증상 | 원인 · 조치 |
|---|---|
Kernel driver not installed (rc=-1908) |
/sbin/vboxconfig 재실행, /var/log/vbox-setup.log 확인 |
KERN_DIR / kernel sources not found |
uname -r 과 rpm -q kernel-devel 불일치. 정확한 버전으로 재설치 |
| 커널 업그레이드 후 모듈 사라짐 | DKMS 가 재빌드하지만 실패 시 /sbin/vboxconfig |
| Secure Boot 환경에서 모듈 로드 실패 | UEFI 에서 Secure Boot 비활성화 또는 MOK 로 모듈 서명 |
VT-x is not available |
BIOS/UEFI(서버는 iDRAC 등 BMC) 에서 가상화 활성화 |