모니터 구성을 설정하는 스크립트 실행

모니터 구성을 설정하는 스크립트 실행

안녕하세요 여러분, 저는 VGA1 출력이 연결된 경우 데스크탑을 구성하기 위해 부팅 시 작성한 작은 스크립트를 실행하려고 합니다. BunsenLabs-Hydrogen(Debian 기반)을 실행합니다.

스크립트:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          resVGA1
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5 
# Default-Stop:      0 1 6
# Short-Description: Setup xrandr with VGA1
# Description:       Setup Multi-screen resolution with VGA1 connected
### END INIT INFO

if xrandr | grep "VGA1 connected"; then
    xrandr -s 1366x768                     #As it doesn't default to this with VGA1 connected
    xrandr --auto                          #To populate the second screen
    xrandr --output VGA1 --right-of LVDS1  #Right of VGA1, not duplicate
fi

스크립트를 실행 가능하게 만들었고 호출하면 작동합니다. 그런 다음 /etc/init.d/에 넣고 다음을 실행합니다.

update-rc.d resVGA1 defaults

“ls -l /etc/rc?.d/의 출력해상도VGA" 예:

lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc0.d/K01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc1.d/K01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc2.d/S01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc3.d/S01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc4.d/S01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc5.d/S01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc6.d/K01resVGA1 -> ../init.d/resVGA1 

내가 이해한 바에 따르면 이는 부팅 시 작동해야 하지만 그렇지 않습니다. /var/log/syslog를 확인하고 다음 보고서를 찾았습니다.

Dec 19 12:33:46 DankPad resVGA1[553]: Can't open display
Dec 19 12:33:46 DankPad kernel: [    0.244129] ACPI: bus type PNP unregistered
Dec 19 12:33:46 DankPad kernel: [    0.250523] pci 0000:00:1c.0: PCI bridge to [bus 02]
Dec 19 12:33:46 DankPad systemd[1]: Started LSB: Setup xrandr with VGA1.
Dec 19 12:33:46 DankPad kernel: [    0.250541] pci 0000:00:1c.1: PCI bridge to [bus 03]
Dec 19 12:33:46 DankPad kernel: [    0.250548] pci 0000:00:1c.1:   bridge window [mem 0xf2400000-0xf24fffff]
Dec 19 12:33:46 DankPad kernel: [    0.250560] pci 0000:00:1c.3: PCI bridge to [bus 05-0c]

제가 뭔가 잘못하고 있는 걸까요, 아니면 제가 하려는 일을 근본적으로 오해하고 있는 걸까요?

어떤 도움이라도 대단히 감사하겠습니다.

답변1

사용 가능한 X11 세션이 없는 시스템 시작 스크립트에 연결하고 있습니다. 이것이 "디스플레이를 열 수 없습니다" 오류가 발생하는 이유입니다. (시스템 단위가 아닌 시스템 시스템에서 스크립트를 작성하고 있다는 점은 제쳐두고 싶습니다 init.d. 그리고 초기화 스크립트는 실제로 API를 따르지 못합니다. 예를 들어 "시작" 또는 "중지"를 확인하지 않습니다).

대신, 부팅하려면 X11에 연결해야 합니다. 다섯 가지 옵션이 있습니다(적어도 이 글을 쓰는 동안 계속해서 더 생각해 보세요).

  1. 시스템 전반에 걸쳐 스크립트를 에 넣으십시오 /etc/X11/Xsession.d/. 스크립트는 X 세션 설정에서 파생되며 기본적으로 이 if블록만 있으면 됩니다. 이것이 나의 선택이 될 것입니다.

  2. 콘텐츠를 입력하여 모니터의 기본 구성을 설정할 수 있어야 합니다 /etc/X11/xorg.conf.d/(이 작업을 먼저 수행해야 할 수도 있음 mkdir). Xorg 구성 구문을 배워야 하지만.

  3. 사용자의 경우 ~/.Xsession.

  4. 한 명의 사용자의 경우 이를 데스크탑 환경의 시작 스크립트에 넣으십시오(대부분 이 스크립트가 있음). 아니면 DE가 실제로 모니터 설정을 기억하고 자동으로 적용할 수도 있습니다.

  5. 시스템 전체(또는 한 명의 사용자에 대해), systemd에 넣습니다.사용자회의. 여기에는 유닛 파일을 /etc/system.d/user또는 에 배치하는 작업이 포함됩니다 ~/.config/systemd/user/. 매우 유연하지만 체계적인 학습이 필요합니다.

관련 정보