
デバイスでLinuxシステムを実行していますが、Xserverが起動する前にディスプレイデバイスを手動で設定する必要があります。それ以外の場合、フレームバッファデバイスは動作しません。
この「手動操作」を実行する方法は2つあります。
これは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
この場合、実際に起動する前に特別なコマンドを実行したい場合は、which runningを作成して起動前にコマンドを実行するXorg
ことをお勧めします。systemd unit
Before=display-manager.service
Xorg
プレリリースXorgスクリプトフックが提供されていることをgdm
確認するためにソースコードを検討します。gdm
答え2
一部の人々はいつでもできると言います。(招待されていない場合)自分のstartxに触れるxinitを呼び出す前にコマンドを起動するスクリプト、
Xサーバーの前にコマンドを起動する必要がある場合は、Xサーバーがスクリプトによって実行されていることを(変更されていないstartx経由で)確認できます/etc/X11/xinit/xserverrc
。
したがって、実行する前にこのスクリプトにコマンドを挿入するだけです。
もちろん、コマンドが成功または失敗の値を返す場合は、続行する前にテストしてみることをお勧めします。