Ketika ada masalah, mungkin baik untuk memahami apa yang terjadi di bawah sampul untuk menandatangani pengguna ke sesi GUI dan mendapatkan Unity (atau manajer jendela lainnya) untuk membuka desktop.
Ketika ada masalah, mungkin baik untuk memahami apa yang terjadi di bawah sampul untuk menandatangani pengguna ke sesi GUI dan mendapatkan Unity (atau manajer jendela lainnya) untuk membuka desktop.
Jawaban:
Inilah rangkaian acara:
Kernel memulai proses init sebagai proses nomor 1. Ini adalah pemula untuk Ubuntu 12.04.
Pekerjaan pemula ada di /etc/init/
Halaman manual: man init
Log: log kernel ( dmesg
; disalin ke /var/log/syslog
),, /var/log/upstart/jobname.log
log lain ditentukan oleh pekerjaan yang dimulai.
Sumber: /etc/init/lightdm.conf
Pekerjaan pemula dijalankan /usr/sbin/lightdm
. Kami mungkin dapat mengharapkan ini dikonversi ke systemd
unit layanan dari waktu ke waktu.
Halaman manual:,man lightdm
Juga: Ubuntu Wiki: LightDM
Log:
/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
Sumber: man lightdm dan/var/log/lightdm/lightdm.log
lightdm sudah mulai cukup terlambat dalam proses init; Misalnya, sistem dbus harus sudah dimulai, sistem file harus sudah siap, dan sistem tampilan grafik harus siap.
lightdm membuat file xauthority dan kemudian mulai X, memulainya pada VT 7, terminal virtual yang Anda dapatkan jika Anda menekan Alt+ Ctrl+ F7. Ketika X mulai sinyal lightdm untuk program layar splash Plymouth berhenti. Sangat penting bahwa ini terjadi setelah semua tty (1-6) telah dimulai.
Sejak Juli 2013 item dukungan Mir telah ditambahkan ke lightdm, tetapi item tersebut tidak digunakan secara default untuk sistem desktop pada 14,04.
X mencoba menggunakan driver yang paling canggih. Itu sendiri driver dari mana /usr/lib/xorg/modules/
. Perhatikan bahwa ada driver kernel dan driver xorg untuk banyak perangkat, dengan driver xorg hampir pasti menggunakan yang kernel. dri dan glx adalah fitur penting, khususnya, untuk grafis berkinerja tinggi yang canggih. Log disimpan untuk X in /var/log/Xorg.0.log
.
Ada komunikasi melalui sistem dbus tentang "kursi" ini dan kemungkinan nama pengguna diperoleh. lightdm menggunakan X untuk menggambar layar. unity-greeter digunakan untuk membantu dalam proses.
Ketika Anda memilih berbagai kemungkinan userid yang digunakan gambar backgound userid.
lightdm get adalah nama-nama manajer / sistem jendela potensial /usr/share/xsessions/*.desktop
.
Informasi akun diperoleh melalui akun-layanan akun-daemon melalui dbus.
lightdm dan penyambut menggunakan PAM untuk mengotentikasi pengguna. Setelah diautentikasi, PAM akan memulai daemon gnome-keyring-daemon dengan opsi --login dan memasukkannya dengan kata sandi pengguna sehingga dapat membuka kunci kata sandi login pengguna, jika ada. Lihat https://live.gnome.org/GnomeKeyring/Pam dan man 8 pam_unix untuk informasi lebih lanjut. PAM menyimpan informasi log di /var/log/auth.log
dan dikendalikan oleh /etc/pam.conf
(hampir kosong) dan /etc/pam.d/*
. Khususnya, lihat /etc/pam.d/lightdm
dan /etc/pam.d/lightdm-autologin
.
Setelah pengguna diautentikasi, hak istimewa akan dihapus dan sebuah file ditulis untuk ~user/.dmrc
menjelaskan sesi. Sebagai contoh:
[Desktop]
Session=ubuntu
atau
[Desktop]
Session=awesome
.desktop
File - file dari /usr/share/xsessions/*.desktop
sekarang menentukan sisa urutan startup.
Misalnya di sini adalah satu untuk 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
The /usr/sbin/lightdm-session
shell script dijalankan dengan argumen g nome-session --session=ubuntu
(sic .-- 'ubuntu', bukan 'kesatuan')
Log:?
Log Kesalahan: Log ~/.xsession-errors
Proses yang Dimulai: ~/.cache/upstart/*
Sumber:/usr/sbin/lightdm-session
/usr/sbin/lightdm-session
kemudian ambil langkah-langkah ini:
Berjalan:
/etc/profile, $HOME/.profile
/etc/xprofile $HOME/.xprofile
; /etc/X11/Xresources
dan $HOME/.Xresources
, jika ada, memuat peta keyboard dengan setxbmap menggunakan konten dari
/etc/X11/Xkbmap
dan $HOME/.Xkbmap
; /etc/X11/Xmodmap
dan$HOME/.Xmodmap
/etc/X11/xinit/xinitrc.d
; menjalankan skrip Xsession di /etc/X11/Xsession.d/*
, menggunakan opsi di /etc/X11/Xsession.options
.
Salah satunya dimulai ssh-agent (redundan), yang lain dijalankan $HOME/.xsessionrc
. Mulai sesi-dbus lainnya (baik ssh-agent dan session-dbus sebagaimana diizinkan dalam Xsession.options
file di atas ). Sesi dbus ini berguna untuk komunikasi antar proses terkait sesi pengguna tunggal ini.
ssh-agent dapat menahan kunci ssh untuk sesi jika mereka ssh-add 'ed beberapa waktu selama sesi, tetapi gnome-keyring-daemon melakukan hal yang sama.
/etc/X11/Xsession.d/50_check_unity_support
berjalan /usr/lib/nux/unity_support_test
dan jika gagal ekspor LIBGL_ALWAYS_SOFTWARE=1
ke lingkungan sehingga llvmpipe
akan digunakan untuk membuat perangkat lunak desktop.
Dimulai dengan Ubunu 13.10:
/etc/X11/Xsession.d/00upstart
mengatur variabel UPSTART
menjadi 1
.
/etc/X11/Xsession.d/99upstart
memeriksa variabel itu dan jika mengatur penggantian init --user
ke item lain diatur ke $STARTUP
. Dengan demikian mode pengguna pemula memulai pekerjaan baru tersebut di /usr/share/upstart/sessions
. Salah satunya adalah gnome-session.conf
yang memulai sesi gnome.
Kecuali jika sudah selesai, akhirnya sesi lightdm memulai manajer jendela, atau untuk kesatuan, yang di atas memulai manajer sesi sesi gnome.
Tampaknya lightdm-session mengambil peran tradisional xsession. Halaman manualnya ada di http://manpages.ubuntu.com/manpages/precise/man5/Xsession.5.html . lightdm menganggapnya sebagai pembungkus sesi.
Manpage: http://manpages.ubuntu.com/manpages/precise/en/man1/gnome-session.1.html
Log :?
Sumber: halaman manual
gnome-session digunakan untuk Unity, tetapi tidak untuk mengagumkan secara default, misalnya. Lihat file .desktop di atas.
gnome-session memulai program yang ditentukan dari / usr / share / gnome-session / sesi / dan memulai aplikasi dari ~ / .config / autostart / dan / etc / xdg / autostart.
Inilah satu contoh dari / etc / xdg / autostart:
$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
Lain, /etc/xdg/autostart/gnome-keyring-ssh.desktop, memulai gnome-keyring-daemon dengan opsi --start, menyelesaikan dimulainya proses daemon dan menyimpan informasi penting tentang hal itu di lingkungan untuk potensi penggunaan oleh ssh.
Dari daftar aux ps, tampaknya sesi gnome memulai manajer jendela dengan dbus-launch.
Halaman manual : http://manpages.ubuntu.com/manpages/precise/en/man1/awesome.1.html
Log:?
Sumber: halaman manual, pemeriksaan file konfigurasi
Inilah file awesome.desktop di / usr / share / xsessions / digunakan oleh lightdm-session:
[Desktop Entry]
Encoding=UTF-8
Name=awesome
Comment=Highly configurable framework window manager
TryExec=awesome
Exec=awesome
Seperti yang Anda lihat, entri tersebut hanya menyebabkan window manager yang luar biasa dieksekusi. Bunyinya file konfigurasinya sendiri, termasuk /etc/xdg/awesome/rc.lua dari paket yang mengagumkan. Ini dapat dikonfigurasi dengan $ HOME / .config / awesome / rc.lua.
Sumber: pemeriksaan file config
Inilah file ubuntu.desktop di / usr / share / xsessions /:
[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
Ini memulai sesi gnome yang dijelaskan dalam /usr/share/gnome-session/sessions/ubuntu.session
Ini file itu:
[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
Program IsRunnableHelper dijalankan oleh gnome-session di 12.04 menentukan apakah kesatuan dapat dijalankan atau apakah ubuntu-2d akan berjalan. Jika itu membuat kesalahan dan mengatakan persatuan bisa berjalan dan tidak bisa, ada masalah. Pilih ubuntu-2d secara manual di lightdm jika itu terjadi pada Anda. Sementara itu mengembalikan kode kembali, kita bisa melihat apa yang dilakukannya dengan menjalankannya dengan opsi -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
Untuk 12.10 dan yang lebih baru, perangkat keras yang tidak didukung menggunakan perangkat lunak llvmpipe untuk menyajikan apa yang tidak bisa dilakukan perangkat keras tersebut. File konfigurasinya lebih sederhana daripada yang di atas. Lihat di atas untuk bagaimana ini diaktifkan.
Kita dapat melihat dari file-file di atas bahwa gnome-session harus memulai daemon pengaturan, dan mulai compiz untuk keperluan menjalankan window manager dan panel apa saja.
Halaman manual : http://manpages.ubuntu.com/manpages/precise/en/man1/compiz.1.html
Log:?
Sumber: http://en.wikipedia.org/wiki/Compiz , pemeriksaan sistem file
Setelah compiz dimulai, ia menjalankan berbagai plugin. Sebelum 12.10 gnome-setting digunakan untuk mendefinisikan ini. Mereka dapat diubah dengan ccsm (compiz config settings manager) atau dengan gconf-editor. Pengaturan plugin disimpan di apps / compiz-1 / general / screen0 / options di bawah active_plugins. Duplikat telah menyebabkan saya mengalami segfault dengan compiz. Ini disimpan di direktori home pengguna di direktori ~ / .gconf / yang diatur seperti di atas. Nilai aktual disimpan dalam file% gconf.xml di sana.
Sejak 12.10 plugin ini disimpan dalam biner di file ~ / .config / dconf / user Anda. Metode dconf, atau gsettings untuk menyimpan pengaturan lebih baru. Anda dapat melihat semua pengaturan ini dengan dconf dump /org/gnome/
.
Unityshell adalah salah satu dari plugin ini. Ia menggunakan proyek nux sebagai toolkit yang diembed. Gambar digambar pada tekstur dalam ruang 3 dimensi dengan nilai transparansi yang ditentukan. Ini diproses oleh compiz dan dikirim ke baik llvm atau ke driver grafis canggih untuk memiliki mesin grafis pada komputer komposit perangkat keras sistem grafis dan membuat mereka. Secara umum, ini bertentangan dengan rendering gambar langsung ke framebuffer seperti yang dilakukan secara lebih tradisional. Rantai peristiwa yang rumit inilah yang membutuhkan driver yang lebih canggih, dan kadang-kadang mendorong penggunaan driver grafis berpemilik di Ubuntu.
ps aux
. Anda juga dapat memeriksa file ~ / .dmrc untuk parameter Session cat ~/.dmrc
. Lihat di atas. Session = ubuntu berarti Anda menggunakan compiz dan unity secara bersamaan (dan itulah defaultnya.
xsessions/ubuntu.desktop
di file lain dan berharap untuk berakhir dengan perilaku yang sama, tetapi tidak berhasil (rincian lebih lanjut dalam pertanyaan ini ). Apakah ada sesuatu yang istimewa tentang ubuntu.desktop
xsession default ?