Apa yang terjadi di bawah sampul untuk login saya dan memulai Unity atau Graphical User Interface lainnya?


55

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:


86

Bagaimana sesi GUI pengguna desktop dimulai dengan Ubuntu 12.04-14.04

Inilah rangkaian acara:

Kernel Linux Ubuntu dan pemula

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.loglog lain ditentukan oleh pekerjaan yang dimulai.

Sumber: /etc/init/lightdm.conf


Pekerjaan pemula dijalankan /usr/sbin/lightdm. Kami mungkin dapat mengharapkan ini dikonversi ke systemdunit layanan dari waktu ke waktu.

Lightdm


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.logdan dikendalikan oleh /etc/pam.conf(hampir kosong) dan /etc/pam.d/*. Khususnya, lihat /etc/pam.d/lightdmdan /etc/pam.d/lightdm-autologin.

Setelah pengguna diautentikasi, hak istimewa akan dihapus dan sebuah file ditulis untuk ~user/.dmrcmenjelaskan sesi. Sebagai contoh:

[Desktop]
Session=ubuntu

atau

[Desktop]
Session=awesome

.desktopFile - file dari /usr/share/xsessions/*.desktopsekarang 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-sessionshell script dijalankan dengan argumen g nome-session --session=ubuntu (sic .-- 'ubuntu', bukan 'kesatuan')

sesi lightdm


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;
  • memuat sumber daya dari /etc/X11/Xresourcesdan $HOME/.Xresources, jika ada, memuat peta keyboard dengan setxbmap menggunakan konten dari /etc/X11/Xkbmapdan $HOME/.Xkbmap;
  • jika tidak menggunakan XKB menggunakan xmodmap terhadap yang ada /etc/X11/Xmodmapdan$HOME/.Xmodmap
  • menjalankan skrip di /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.optionsfile 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_supportberjalan /usr/lib/nux/unity_support_testdan jika gagal ekspor LIBGL_ALWAYS_SOFTWARE=1ke lingkungan sehingga llvmpipeakan digunakan untuk membuat perangkat lunak desktop.

Dimulai dengan Ubunu 13.10: /etc/X11/Xsession.d/00upstartmengatur variabel UPSTARTmenjadi 1. /etc/X11/Xsession.d/99upstartmemeriksa 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.confyang 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.

manajer sesi sesi gnome (Persatuan dan Kerang Gnome)


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.

Manajer Jendela

Manajer Jendela Luar Biasa


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.

Kesatuan


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.

compiz


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.


Bagaimana saya bisa tahu jika sistem saya menjalankan Awesome, Unity atau compiz?
James

@james Anda mungkin dapat memeriksa compiz atau hebat dalam daftar proses. Anda mendapatkannya dengan perintah seperti 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.
John S Gruber

Jawaban luar biasa, memungkinkan untuk memahami proses tanpa pengetahuan prasyarat! Mengikuti uraian Anda, saya mencoba meniru xsessions/ubuntu.desktopdi 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.desktopxsession default ?
Iklan N

Memang, akan +10 jika saya bisa. Lebih baik daripada dokter ...
Dering Ø

Terima kasih telah menuliskan ini. Bisakah Anda memperbarui bagaimana hal-hal berubah untuk versi Ubuntu yang lebih baru?
exic
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.