Linux에서 dummy plug 없이 가상 디스플레이 출력을 얻는 방법
Source: Dev.to
참고: 이 가이드는 Xorg에 초점을 맞추고 있습니다. Wayland에서는 같은 결과를 더 쉽게 얻을 수 있는 방법이 있으며, 예를 들어 KDE의 가상‑모니터 구현인 Krfb가 있습니다.
Source: …
Method #1 – 기존 출력 중 하나를 포기하기
-
사용 가능한 출력 확인
xrandr -
다음 글의 첫 번째 부분을 따라하기
How to Create a Virtual Display for Sunshine on Arch Linux – Anton Ždanov ()
Sunshine‑전용 섹션 전에 멈춥니다.팁: EDID 파일은
xrandr로 나중에 추가할 수 있으므로 원하는 사양과 정확히 일치하는 파일을 고를 필요는 없습니다.
Step 1 – EDID 파일 얻기
EDID(Extended Display Identification Data) 파일은 모니터를 시뮬레이션합니다.
v4l‑utils 저장소에서 미리 만든 파일을 다운로드하고 해상도와 기능(예: 4K, HDR)이 필요한 것과 일치하는 파일을 선택합니다.
Step 2 – EDID 파일 배치하기
sudo mkdir -p /usr/lib/firmware/edid
sudo cp samsung-q800t-hdmi2.1 /usr/lib/firmware/edid/
(다운로드한 파일 이름이 samsung-q800t-hdmi2.1이 아니라면 해당 이름으로 바꾸세요.)
Step 3 – 커널 파라미터 설정하기
-
사용 가능한 HDMI 또는 DP 출력 찾기
for p in /sys/class/drm/*/status; do con=${p%/status} echo -n "${con#*/card?-}: " cat "$p" done출력 이름을 확인합니다(예:
HDMI‑A‑1). -
커널 파라미터 추가 (자세한 내용은 Arch Wiki와 EndeavourOS 가이드를 참고)
drm.edid_firmware=HDMI-A-1:edid/samsung-q800t-hdmi2.1 video=HDMI-A-1:e확인한 출력 이름으로
HDMI-A-1을 교체합니다. -
mkinitcpio.conf업데이트FILES=(/usr/lib/firmware/edid/samsung-q800t-hdmi2.1) -
initramfs 재생성
sudo mkinitcpio -P -
재부팅
재부팅 후, 데스크톱의 디스플레이 설정에서 새 디스플레이를 활성화해야 할 수도 있습니다.
Method #2 – Using the EVDI Linux Driver (before adding kernel parameters)
EVDI – Extensible Virtual Display Interface – 은 사용자‑공간 프로그램이 가상 화면을 관리할 수 있게 해 주는 커널 모듈입니다. 주로 DisplayLink 장치에 사용되지만 하드웨어 없이 가상 출력을 만들기 위해 재활용할 수 있습니다.
Background
- ArchWiki: Extreme Multihead – Using a virtual output
- Stack‑Exchange discussion: Unable to add a VIRTUAL display to Xorg
- Etam Software – Virtual screen (clear step‑by‑step guide)
Caveat: 순수 EVDI 솔루션은 데스크톱 환경의 화면 관리자(예: KDE의 KScreen2)와 잘 통합되지 않습니다. 해당 서비스들을 수동으로 비활성화해야 할 수도 있습니다.
Install the EVDI Kernel Module
git clone https://github.com/DisplayLink/evdi.git
cd evdi/module
make && sudo make install # or
sudo make install_dkms
Load the Module at Boot
# /etc/modules-load.d/local.conf
evdi
Set the Desired Number of Virtual Outputs
# /etc/modprobe.d/local.conf
options evdi initial_device_count=1 # 필요에 따라 숫자를 변경
Activate the Module
Warning: 다음 명령을 실행하면 현재 Xorg 세션이 멈출 수 있습니다.
파일을 편집한 뒤 재부팅하는 것이 안전하며, 아니면 가상 콘솔(Ctrl+Alt+F3)로 전환한 뒤 명령을 실행하십시오.
sudo modprobe evdi
재부팅 후 xrandr 명령을 실행하면 새로운 DVI 출력(예: DVI‑1)이 표시됩니다.
만약 모드가 없으면 xrandr --newmode / --addmode 명령으로 직접 추가하십시오.
이제 Method #1의 단계에 따라 EDID 파일을 연결하고 가상 디스플레이를 활성화할 수 있습니다.
새로 만든 가상 출력 사용하기
- 스크린‑공유 – VNC, RDP 또는 기타 원격‑데스크톱 솔루션을 사용해 가상 모니터를 노출할 수 있습니다. VNC 트래픽은 기본적으로 암호화되지 않으니 기억하세요.
- Android 기기 – 지연 시간을 줄이고 고정 IP 주소 설정을 피하려면 ADB reverse 사용을 고려하세요.
adb reverse tcp:5900 tcp:5900 # example for VNC on port 5900
참고 문헌
- Krfb virtual monitor –
- Anton Ždanov article –
- v4l‑utils EDID repository –
- Arch Wiki – Kernel parameters –
- EndeavourOS systemd‑boot guide –
- EVDI GitHub –
- Etam Software – Virtual screen –
행복한 가상‑디스플레이 해킹!
[Virtual screen](https://etam-software.eu/blog/2021-01-09-virtual-screen.html):
4) (optional) Attach Android device through USB cable
adb reverse tcp:5900 tcp:5900
Now you can point your VNC client application, such as [MultiVNC](https://f-droid.org/packages/com.coboltforge.dontmind.multivnc/), to `localhost:5900`.