問題が発生した場合、ユーザーをGUIセッションにサインインし、Unity(または他のウィンドウマネージャー)を取得してデスクトップを表示するために、裏で何が起こるかを理解するのが良いかもしれません。
問題が発生した場合、ユーザーをGUIセッションにサインインし、Unity(または他のウィンドウマネージャー)を取得してデスクトップを表示するために、裏で何が起こるかを理解するのが良いかもしれません。
回答:
イベントのチェーンは次のとおりです。
カーネルはプロセス番号1としてinitプロセスを開始します。これはUbuntu 12.04の新興企業です。
新興企業は /etc/init/
マニュアルページ: man init
ログ:カーネルログ(dmesg
;にコピー/var/log/syslog
)/var/log/upstart/jobname.log
、、開始されたジョブによって決定されるその他のログ。
ソース: /etc/init/lightdm.conf
upstartジョブが実行され/usr/sbin/lightdm
ます。おそらく、これsystemd
は時間の経過とともにサービスユニットに変換されると予想できます。
マニュアルページ:man lightdm
、また:Ubuntu Wiki:LightDM
ログ:
/var/log/syslog
/var/log/lightdm/lightdm.log
/var/log/lightdm/*
## for PAM:
/var/log/auth.log
## for the Xorg X server:
/var/log/Xorg.0.log
ソース:man lightdmおよび/var/log/lightdm/lightdm.log
lightdm getは、initプロセスのかなり後期に開始されました。たとえば、システムdbusがすでに起動されている必要があり、ファイルシステムが準備されている必要があり、グラフィック表示システムが準備されている必要があります。
lightdmはxauthorityファイルを作成してからXを起動し、VT 7で起動します。これは、Alt+ Ctrl+ を押すと取得できる仮想端末ですF7。Xが開始されると、lightdmは、Plymouthスプラッシュスクリーンプログラムが終了することを通知します。これは、すべてのtty(1〜6)が開始した後に発生することが不可欠です。
2013年7月以降、Mirサポートアイテムがlightdmに追加されましたが、14.04の時点ではこれらはデフォルトでデスクトップシステムに使用されていません。
Xは可能な限り最新のドライバーを使用しようとします。独自のドライバーはからロードされ/usr/lib/xorg/modules/
ます。多くのデバイスにはカーネルドライバーとxorgドライバーの両方が存在し、xorgドライバーはほぼ確実にカーネルのものを使用していることに注意してください。driとglxは、特に高度な高性能グラフィックスにとって重要な機能です。Xのログはに保存され/var/log/Xorg.0.log
ます。
この「座席」についてシステムdbusを介して通信が行われ、可能なユーザー名が取得されます。lightdmはXを使用して画面を描画します。unity-greeterは、プロセスを支援するために使用されます。
さまざまなユーザーIDを選択すると、そのユーザーIDの背景画像が使用されます。
lightdmは、から潜在的なウィンドウマネージャー/システムの名前を取得し/usr/share/xsessions/*.desktop
ます。
アカウント情報は、dbus経由のaccountsservice accounts-daemonを介して取得されます。
lightdmとグリーターはPAMを使用してユーザーを認証します。認証されると、PAMは--loginオプションを使用してgnome-keyring-daemonデーモンを起動し、ユーザーのパスワードを入力して、ユーザーのログインキーリングがあればロックを解除できるようにします。詳細については、https: //live.gnome.org/GnomeKeyring/Pamおよびman 8 pam_unixを参照してください。PAMはログ情報を保存し/var/log/auth.log
、/etc/pam.conf
(ほぼ空)およびによって制御され/etc/pam.d/*
ます。具体的には、参照/etc/pam.d/lightdm
と/etc/pam.d/lightdm-autologin
。
ユーザーが認証されると、特権が削除され~user/.dmrc
、セッションを説明するファイルが書き込まれます。例えば:
[Desktop]
Session=ubuntu
または
[Desktop]
Session=awesome
これ以降の.desktop
ファイルは/usr/share/xsessions/*.desktop
、残りの起動シーケンスを決定します。
たとえば、Unityの場合は次のとおりです。
[Desktop Entry]
Name=Ubuntu
Comment=This session logs you into Ubuntu
Exec=gnome-session --session=ubuntu
TryExec=unity
Icon=
Type=Application
X-Ubuntu-Gettext-Domain=gnome-session-3.0
/usr/sbin/lightdm-session
シェルスクリプトは、引数グラムを使用して実行されるnome-session --session=ubuntu
(原文のまま.--「Ubuntuの」、ない「統一」)
ログ:?
エラーログ:~/.xsession-errors
プロセスログの開始:~/.cache/upstart/*
ソース:/usr/sbin/lightdm-session
/usr/sbin/lightdm-session
その後、次の手順を実行します。
実行:
/etc/profile, $HOME/.profile
/etc/xprofile $HOME/.xprofile
; /etc/X11/Xresources
と$HOME/.Xresources
、彼らが存在する場合、内容使用setxbmapでキーボードマップロード
/etc/X11/Xkbmap
とは$HOME/.Xkbmap
、 /etc/X11/Xmodmap
と、$HOME/.Xmodmap
/etc/X11/xinit/xinitrc.d
ます。 /etc/X11/Xsession.d/*
のオプションを使用して、Xsessionスクリプトを実行します/etc/X11/Xsession.options
。
これらの1つはssh-agent(冗長)を起動し、別の1つはを実行し$HOME/.xsessionrc
ます。もう1つは、session-dbus(上記のXsession.options
ファイルで許可されているssh-agentとsession-dbusの両方)を開始します。このセッションdbusは、この単一ユーザーセッションに関するプロセス間の通信に役立ちます。
ssh-agentは、セッション中にssh-addされた場合にセッションのsshキーを保持できますが、gnome-keyring-daemonは同じことを行います。
/etc/X11/Xsession.d/50_check_unity_support
実行され /usr/lib/nux/unity_support_test
、失敗した場合LIBGL_ALWAYS_SOFTWARE=1
は環境へのエクスポートllvmpipe
が行われ、デスクトップのソフトウェアレンダリングに使用されます。
Ubunu 13.10以降:
/etc/X11/Xsession.d/00upstart
変数UPSTART
をに設定します1
。
/etc/X11/Xsession.d/99upstart
その変数をチェックし、設定されている場合、に設定されinit --user
ている他の項目に置き換え$STARTUP
ます。したがって、ユーザーモードのupstartは、これらのupstartジョブをで開始し/usr/share/upstart/sessions
ます。それらの1つはgnome-session.conf
gnome-sessionを開始します。
すでに行われていない限り、最後にlightdm-sessionがウィンドウマネージャーを起動します。または、単一の場合、上記はgnome-sessionセッションマネージャーを起動します。
lightdm-sessionは従来のxsessionの役割を担っているようです。そのmanページはhttp://manpages.ubuntu.com/manpages/precise/man5/Xsession.5.htmlにあります。lightdmは、それをセッションラッパーと見なします。
マンページ:http : //manpages.ubuntu.com/manpages/precise/en/man1/gnome-session.1.html
ログ:?
ソース:manページ
gnome-sessionはUnityに使用されますが、たとえばデフォルトでは素晴らしいものには使用されません。上記の.desktopファイルを参照してください。
gnome-sessionは、指定されたプログラムを/ usr / share / gnome-session / sessions /から開始し、アプリケーションを〜/ .config / autostart /および/ etc / xdg / autostartから開始します。
/ etc / xdg / autostartの1つの例を次に示します。
$cat /etc/xdg/autostart/nm-applet.desktop
[Desktop Entry]
Name=Network
Comment=Manage your network connections
Icon=nm-device-wireless
Exec=nm-applet
Terminal=false
Type=Application
NoDisplay=true
NotShowIn=KDE;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Component=general
X-GNOME-Autostart-enabled=true
X-Ubuntu-Gettext-Domain=nm-applet
別の/etc/xdg/autostart/gnome-keyring-ssh.desktopは、-startオプションを使用してgnome-keyring-daemonを起動し、そのデーモンプロセスの開始を完了し、環境に関する重要な情報を保存します。 ssh。
ps auxリストから、gnome-sessionはdbus-launchでウィンドウマネージャーを起動するようです。
マニュアルページ:http : //manpages.ubuntu.com/manpages/precise/en/man1/awesome.1.html
ログ:?
ソース:manページ、設定ファイルの検査
lightdm-sessionが使用する/ usr / share / xsessions /にあるawesome.desktopファイルは次のとおりです。
[Desktop Entry]
Encoding=UTF-8
Name=awesome
Comment=Highly configurable framework window manager
TryExec=awesome
Exec=awesome
ご覧のとおり、このエントリにより、素晴らしいウィンドウマネージャが実行されます。awesomeパッケージの/etc/xdg/awesome/rc.luaを含む独自の構成ファイルを読み取ります。$ HOME / .config / awesome / rc.luaで設定できます。
ソース:構成ファイルの検査
/ usr / share / xsessions /にあるubuntu.desktopファイルは次のとおりです。
[Desktop Entry]
Name=Ubuntu
Comment=This session logs you into Ubuntu
Exec=gnome-session --session=ubuntu
TryExec=unity
Icon=
Type=Application
X-Ubuntu-Gettext-Domain=gnome-session-3.0
これにより、/ usr / share / gnome-session / sessions / ubuntu.sessionに記述されているgnomeセッションが開始されます
そのファイルは次のとおりです。
[GNOME Session]
Name=Ubuntu
RequiredComponents=gnome-settings-daemon;
RequiredProviders=windowmanager;panel;
DefaultProvider-windowmanager=compiz
DefaultProvider-panel=compiz
IsRunnableHelper=/usr/lib/nux/unity_support_test
FallbackSession=ubuntu-2d
DesktopName=Unity
12.04でgnome-sessionによって実行されるIsRunnableHelperプログラムは、Unityを実行できるか、ubuntu-2dを実行するかを決定します。ミスを犯し、Unityが実行できて実行できないと言った場合、問題があります。lightdmでubuntu-2dが発生した場合は、手動で選択してください。リターンコードを返しますが、-pオプションを指定して実行することで、何をしているのかを確認できます。
$ /usr/lib/nux/unity_support_test -p
OpenGL vendor string: X.Org R300 Project
OpenGL renderer string: Gallium 0.4 on ATI RS690
OpenGL version string: 2.1 Mesa 8.0.2
Not software rendered: yes
Not blacklisted: yes
GLX fbconfig: yes
GLX texture from pixmap: yes
GL npot or rect textures: yes
GL vertex program: yes
GL fragment program: yes
GL vertex buffer object: yes
GL framebuffer object: yes
GL version is 1.4+: yes
Unity 3D supported: yes
12.10以降では、サポートされていないハードウェアはllvmpipeソフトウェアを使用して、ハードウェアができないことをレンダリングします。その構成ファイルは上記よりも簡単です。有効にする方法については、上記を参照してください。
上記のファイルから、gnome-sessionは設定デーモンを起動し、ウィンドウマネージャーとパネルを実行する目的でcompizを起動する必要があることがわかります。
マニュアルページ:http : //manpages.ubuntu.com/manpages/precise/en/man1/compiz.1.html
ログ:?
出典:http : //en.wikipedia.org/wiki/Compiz、ファイルシステムの調査
compizが開始されると、さまざまなプラグインが実行されます。12.10より前は、これらを定義するためにgnome-settingsが使用されます。これらは、ccsm(compiz config settings manager)またはgconf-editorで変更できます。プラグイン設定は、active_pluginsの下のapps / compiz-1 / general / screen0 / optionsに保存されます。重複により、compizでセグメンテーション違反が発生しました。これらは、上記のように編成された〜/ .gconf /ディレクトリのユーザーのホームディレクトリに保存されます。実際の値は、%gconf.xmlファイルに保存されます。
12.10以降、これらのプラグインは〜/ .config / dconf / userファイルにバイナリで保存されます。設定を保存するdconfまたはgsettingsメソッドは新しいです。これらの設定はすべてで確認できますdconf dump /org/gnome/
。
Unityshellはこれらのプラグインの1つです。nuxプロジェクトを埋め込みツールキットとして使用します。画像は、指定された透明度値で3次元空間のテクスチャに描画されます。これらはcompizによって処理され、llvmまたは高度なグラフィックスドライバーに送信され、システムのコンピューターグラフィックスハードウェアコンポジットにグラフィックスエンジンを搭載してレンダリングします。一般的に、これは、従来行われていたように画像をフレームバッファに直接レンダリングすることとは対照的です。この複雑なイベントチェーンは、より高度なドライバーを必要とするものであり、Ubuntuで独自のグラフィックドライバーの使用を促す場合があります。
ps aux
ます。Sessionパラメータのファイル〜/ .dmrcを確認することもできますcat ~/.dmrc
。上記を参照。。セッション= Ubuntuのは、あなたが一緒のcompizと団結を使用している(そしてそれがデフォルトだ意味