Linux 헤드리스 자동 감지 모니터

Linux 헤드리스 자동 감지 모니터

UEFI를 사용하여 실행되는 온보드 GPU(인텔)가 있는 Debian 11을 실행하는 키오스크 시스템이 있습니다. 모니터 포트는 VGA입니다.

현재는 getty 재정의를 사용하여 자동 로그인합니다(인용하다) 그리고 startxtty1을 호출합니다. 우리는 디스플레이 관리자를 사용하지 않습니다.

openbox-session그런 다음 하나를 시작한 다음 vnc 및 개별 응용 프로그램을 시작합니다 .

if [[ "$(tty)" == '/dev/tty1' ]]; then
    exec xinit $HOME/.xinitrc -- /etc/X11/xinit/xserverrc :0 vt1
fi

부팅하기 전에 모니터를 연결한 경우 나중에 모니터를 뽑았다가 다시 연결하면 정상적으로 표시됩니다.

그러나 전원을 켰을 때 모니터 플러그가 없는 경우. 앞으로는 모니터를 연결할 수 없을 것 같아요(화면은 영원히 공백으로 유지됩니다).

부팅하는 동안 openbox-session과 애플리케이션이 성공적으로 시작됩니다(vnc에서 볼 수 있음).

xserver-driver-xorg-video-dummy를 사용해 보고 /etc/X11/xorg.dummy.conf를 만들었습니다.
모든 구성 요소가 실행되는 동안 openbox-session이 화면에 로드되지 않습니다.
지금까지 xorg.log에 명백한 오류가 표시되지 않습니다.

if [[ "$(tty)" == '/dev/tty1' ]]; then
    exec xinit $HOME/.xinitrc -- /etc/X11/xinit/xserverrc :0 vt1 -config xorg.dummy.conf
fi

xorg.dummy.conf문서

Xvfb를 사용해 보았으나 이에 적합하지 않은 것 같습니다. 문제가 없어도 동일한 문제가 여전히 존재합니다.

이 목표를 달성하는 것이 가능합니까?
현재는 재부팅 시 모니터 연결을 잊어버리면 다시 재부팅해야 합니다.

답변1

문제는 x 서버나 디스플레이 관리자에 있는 것이 아니라 실제로는

그러나 xfce, gnome 및 etchave는 모니터 플러그를 자동으로 감지하고 openbox는 분명히
이 작업을 완료하기 위해 xrandr을 사용하지 않습니다(autorandr은 작동하지 않습니다).

.config/openbox/autostart에서

while true; do
    # Grep first connected display 
    FIRSTDISPLAY=$(xrandr | grep " connected " | awk '{ print$1 }' | head -n 1)
    # Force on
    xrandr --output ${FIRSTDISPLAY} --auto
    # Kill dpms, require to rerun incase display replug
    xset -dpms
    xset s noblank
    xset s off
    sleep 1
done

관련 정보