it-swarm-ja.com

Ubuntu9.10でXが起動する前に起動時にスクリプトを実行する

起動時に実行して場所に応じてX構成を切り替えるスクリプトがありますが、Xが起動する前に実行するためにどこに配置するかがわからないようです。その結果、Xを再起動して、正しい構成を実行する必要があります。

現在、私のスクリプトは/etc/init.d/whereamiにあり、シンボリックリンクは/etc/rc[2-5].d/S25whereamiにあります。問題が単に25である場合に備えて、Xがいつ開始されるかを調べようとしていましたが、答えが見つからないようです...

どんな助けでも大歓迎です。

2
Epcylon

Ubuntuは、GDM(標準ubuntu-desktopを使用するシステムの場合)またはKDM(kubuntu-desktopを使用するシステムの場合)からX-windowsを起動します))。

GDM/KDMの起動前にスクリプトを実行するには、次のいずれかを実行できます。

  1. GDMの前に実行する独自のUpstartスクリプトを作成します。または
  2. システムGDMスクリプトを変更して、カスタム外部スクリプト(たとえば、/ etc/init.d/whereamiスクリプト)を初期タスクの1つとして実行します。

UbuntuはDebianスタイルのランレベルを使用します:ランレベル1はシングルユーザーのリカバリモードです。 ランレベル2-5はすべて同じです(GUIマルチユーザー);デフォルトでは、システムはランレベル2で起動します。

Ubuntu 9.10はUpstartを使用します。これは、/ etc/initでサービス起動スクリプトを提供します。 / etc/init.dおよび/ etc/rc.dにある従来のinitスクリプトは、 Upstartスタイルのinitスクリプトには移植されていませんが、GDMには移植されています。 (Ubuntu 9.10は/ etc/init.d/gdmを提供しますが、/ etc/rcX.dシンボリックリンクを作成しないことに注意してくださいそれのための。)

GDMの起動は、/ etc/init/gdmによって制御されます。スクリプトの上部にあるこれらの行は、GDMをいつ開始および停止するかを指定します。 GDMを開始するためのrunlevel仕様がないことに注意してください。最初に開始する必要があるサービスのみです。

start on (filesystem
          and started hal
          and tty-device-added KERNEL=tty7
          and (graphics-device-added or stopped udevtrigger))
stop on runlevel [0156]

emits starting-dm

Upstartスクリプトのドキュメントについては、 man 5 init を参照し、システムの /etc/init/*.conf いくつかの例のファイル。 startingevent のマンページも参照してください。


別のサービスが実行され、開始および停止になるたびに実行を希望するサービス、使用する可能性があります:

start on starting Apache
stop on stopped Apache

別のタスクまたはサービスを開始する前に実行する必要があるタスクは、次のものを使用する場合があります。

start on starting postgresql

また、GDM/KDM Upstartスクリプトがシグナルstarting-dmを発行することにも注意してください。便利である。

したがって、GDMの前に実行するように設計されたUpstartスクリプトは、次のstart on句のいずれかを使用する必要があります。

# run only when starting GDM
start on starting gdm

# run when starting GDM or KDM
start on (starting gdm 
          or starting kdm)

# run when starting any DM
# starting-dm is a custom event emitted by the GDM/KDM/etc scripts
start on starting-dm
6
quack quixote

通常、Xはランレベル5で開始されますが、スクリプトをXの前に(xdm/kdm/gdmの形式で)開始する必要があるため、Sxxxdmエントリよりも小さい番号にする必要があります。したがって、ここの私のシステムでは、xdmはS111xdmで開始されるため、シンボリックリンクが必要になります/etc/rc5.d/S10whereami

0
Sven