
안녕하세요 여러분, 저는 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에 연결해야 합니다. 다섯 가지 옵션이 있습니다(적어도 이 글을 쓰는 동안 계속해서 더 생각해 보세요).
시스템 전반에 걸쳐 스크립트를 에 넣으십시오
/etc/X11/Xsession.d/
. 스크립트는 X 세션 설정에서 파생되며 기본적으로 이if
블록만 있으면 됩니다. 이것이 나의 선택이 될 것입니다.콘텐츠를 입력하여 모니터의 기본 구성을 설정할 수 있어야 합니다
/etc/X11/xorg.conf.d/
(이 작업을 먼저 수행해야 할 수도 있음mkdir
). Xorg 구성 구문을 배워야 하지만.사용자의 경우
~/.Xsession
.한 명의 사용자의 경우 이를 데스크탑 환경의 시작 스크립트에 넣으십시오(대부분 이 스크립트가 있음). 아니면 DE가 실제로 모니터 설정을 기억하고 자동으로 적용할 수도 있습니다.
시스템 전체(또는 한 명의 사용자에 대해), systemd에 넣습니다.사용자회의. 여기에는 유닛 파일을
/etc/system.d/user
또는 에 배치하는 작업이 포함됩니다~/.config/systemd/user/
. 매우 유연하지만 체계적인 학습이 필요합니다.