LinuxのどのプロセスがSystemdをINITとして使用してX Serverを起動しますか?

LinuxのどのプロセスがSystemdをINITとして使用してX Serverを起動しますか?

デバイスでLinuxシステムを実行していますが、Xserverが起動する前にディスプレイデバイスを手動で設定する必要があります。それ以外の場合、フレームバッファデバイスは動作しません。

この「手動操作」を実行する方法は2つあります。

  1. これはxinitの前に実行されますが、インターネット検索とstartxスクリプトを読んだ後にxinitが実行される前にスクリプトフックが実行されないことがわかりました。

  2. Xserverが起動する前に、この「手動操作」を実行するためにシステムデバイスを実装しました。検索しましたが、どのサービスやプロセスが実際に「startx」を実行するのか、Xserverを起動しているのかを知ることができませんでした。

だから誰かが私にヒントを与えることを願ってここにこの質問を投稿します。

ベストアンサー1

コマンドを実行して、これが子プロセスであることがps -A | grep Xorg | awk '{print $1}' | xargs pstree -s -p わかりました。Xorgsddm

私の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.serviceasを使用します。display-manager.servicesddmXorg

これは、スクリプトの実行に使用されるディスプレイ管理者のユーザーによって異なります。を実行した後はスクリプトがsddm提供されますが、/etc/sddm/Xsetup始める前にスクリプトフックは提供されません。XorgsddmXorg

systemd init中にスクリプトを使用しない場合は、bing upをdisplay-manager.service使用してサイドファイルに独自のスクリプトを追加できます。startxXorgxserverrc

この場合、実際に起動する前に特別なコマンドを実行したい場合は、which runningを作成して起動前にコマンドを実行するXorgことをお勧めします。systemd unitBefore=display-manager.serviceXorg

プレリリースXorgスクリプトフックが提供されていることをgdm確認するためにソースコードを検討します。gdm

おすすめ記事