장치에서 Linux 시스템을 실행하고 있지만 Xserver가 시작되기 전에 디스플레이 장치를 수동으로 구성해야 합니다. 그렇지 않으면 프레임 버퍼 장치가 작동하지 않습니다.
이 "수동 작업"을 수행하는 방법에는 두 가지가 있습니다.
이것은 xinit 이전에 실행되지만 인터넷 검색과 startx 스크립트를 읽은 후에 xinit가 실행되기 전에 스크립트 후크가 실행되지 않는다는 것을 발견했습니다.
Xserver가 시작되기 전에 이 "수동 작업"을 수행하기 위해 시스템 장치를 구현했습니다. 검색했지만 어떤 서비스나 프로세스가 실제로 "startx"를 실행하거나 Xserver를 시작하는지 알 수 있는 내용을 찾을 수 없었습니다.
그래서 누군가 나에게 힌트를 줄 수 있기를 바라며 여기에 이 질문을 게시합니다.
답변1
명령을 실행하여 이것이 하위 프로세스라는 ps -A | grep Xorg | awk '{print $1}' | xargs pstree -s -p
것을 알았습니다 .Xorg
sddm
내 Fedora 36에서 이 명령의 결과는 다음과 같습니다.
systemd(1)───sddm(1642)───Xorg(1645)─┬─{Xorg}(1647)
├─{Xorg}(1648)
├─{Xorg}(1649)
├─{Xorg}(1650)
├─{Xorg}(1651)
├─{Xorg}(1652)
├─{Xorg}(1653)
├─{Xorg}(1654)
└─{Xorg}(1658)
SDDM
소스 코드를 읽은 후 마침내 systemd init 중에 Xorg가 어떻게 시작되는지 알아냈습니다.
systemd에서는 graphical.target
호출 display-manager.service
됩니다.
예를 들어, 로그인 화면을 표시하기 전에 자체적으로 시작되는 sddm.service
as를 사용합니다 .display-manager.service
sddm
Xorg
이는 스크립트를 실행하는 데 사용되는 디스플레이 관리자 사용자에 따라 다릅니다. 를 실행한 후에는 스크립트 sddm
가 제공되지만 /etc/sddm/Xsetup
시작하기 전에는 스크립트 후크가 제공되지 않습니다.Xorg
sddm
Xorg
systemd init 중에 스크립트를 사용하지 않는 경우 bing up을 display-manager.service
사용 하고 사이드 파일에 고유한 스크립트를 추가할 수 있습니다.startx
Xorg
xserverrc
이 경우 실제로 부팅하기 전에 특수 명령을 실행하려는 경우 Xorg
가장 좋은 방법은 systemd unit
which running 을 작성하여 부팅 전에 Before=display-manager.service
명령이 Xorg
실행되도록 하는 것입니다.
사전 출시 Xorg 스크립트 후크가 제공되는지 gdm
확인하기 위해 소스 코드를 연구하겠습니다 .gdm
답변2
어떤 사람들은 언제나 할 수 있다고 말해요(초대받지 않은 경우) 자신만의 startx를 만져보세요xinit를 호출하기 전에 명령을 시작하는 스크립트,
X 서버 이전에 명령을 시작해야 하는 경우 X 서버가 스크립트에 의해 실행된다는 점을 (수정되지 않은 startx를 통해) 확인할 수 있습니다 /etc/X11/xinit/xserverrc
.
따라서 실행하기 전에 이 스크립트에 명령을 삽입하기만 하면 됩니다.
물론 명령이 성공 또는 실패에 대한 값을 반환하는 경우 계속하기 전에 테스트해 보는 것이 좋습니다.