Saya mencari dokumentasi tinjauan umum yang baik yang menggambarkan tumpukan daemon dan layanan yang terlibat dalam sesi Linux modern. Walaupun telah membaca berbagai dokumentasi tentang dbus
, dan systemd
, saya masih belum mendapatkan gambaran besarnya.
Secara khusus, saya mencari jawaban untuk pertanyaan-pertanyaan ini (jangan menjawab pertanyaan, mereka hanya harus menjelaskan jenis dokumentasi apa yang saya cari):
Setelah masuk, proses manakah yang menjadi root dari sesi pengguna?
Proses mana yang harus dimulai, dan mengapa? Saya mencari jawaban Desktop-agnostik, tidak peduli apakah Gnome, KDE, FVWM, atau shell sederhana dimulai.
Apa peran yang dimainkan semua daemon ini? Siapa di antara mereka yang akan lari sendiri, yang bergantung pada orang lain? Yang mana harus dimulai oleh siapa, mengapa, dan untuk berapa lama? Dan siapa yang harus memelihara kebun binatang itu?
Aku bertanya, karena saya menemukan bahwa saya memiliki seluruh kebun binatang daemon berjalan setelah booting: systemd-journald
, systemd-udevd
, dbus-daemon
,
systemd-logind
. Tapi tidak cukup: Selain ini, Running ultra-ringan PDF-viewer zathura
lanjut Mempopulai sesi saya dengan dbus-launch
,
dbus-daemon
, at-spi2-registryd
, dan at-spi-bus-launcher
, peluncuran kedua lagi dbus-daemon
. Tak satu pun dari mereka ada di sana sebelumnya, tidak ada yang diundang, tetapi mereka akan tinggal di sekitar rumah, memberi saya perasaan menyeramkan, sampai saya log out. Saya yakin saya kehilangan sesuatu di sini ...
Contoh lain: Setelah masuk, saya systemd
menjalankan dengan pengguna saya UID, tetapi saya tidak tahu apa yang harus dilakukan (karena versi 206 saya pikir saya tidak seharusnya menggunakannya sebagai manajer sesi, kan?). Ini memiliki proses anak (sd-pam)
, yang saya gagal menemukan dokumentasi tentang.
Apa yang mereka lakukan? Apa ide di balik pengaturan ini?
Untuk memperjelas perspektif saya: Di "masa lalu" sudah cukup untuk mengetahui bahwa
login
akan meluncurkan shell login saya ( bash
, mengeksekusi ~/.profile
), dan dari titik itu saya dapat terus membangun sesi, tergantung pada keadaan, mungkin meluncurkan screen
, atau startx
.
sumber
Jawaban:
Saya sangat tertarik dengan pertanyaan Anda sehingga saya menjawabnya di linuxintro . Inilah jawaban yang disesuaikan untuk pertanyaan Anda:
Saat PC tipikal dengan Linux seperti Fedora, SUSE atau Ubuntu melakukan booting langkah-langkahnya adalah sebagai berikut:
init dijalankan, tergantung pada distro Anda, versi dan konfigurasi Anda
Arti dari semua program ini adalah untuk memulai layanan seperti
10) proses login, ditangani oleh systemd akan menunggu login di terminal virtual, satu biasanya dapat dicapai dengan menekan CTRL_ALT_F1
11) biasanya dan secara default, proses init sekarang akan memulai manajer tampilan, misalnya kdm (manajer tampilan KDE) atau xdm
12) manajer tampilan sekarang akan memulai sistem grafis. Praktis tidak ada sistem grafis kecuali Xorg (hildon untuk perangkat yang disematkan).
13) manajer tampilan akan menyarankan server Xorg untuk menampilkan layar login
Sekarang startup selesai dan komputer menunggu pengguna untuk masuk.
14) pada login pengguna, manajer tampilan akan memulai lingkungan desktop seperti KDE, GNOME atau XFCE4. Proses root untuk sesi KDE pengguna akan disebut startkde, proses root untuk GNOME akan disebut sesi gnome, proses root untuk XFCE4 akan disebut sesi xfce4
15) KDE biasanya memulai semua file yang dapat dieksekusi dari ~ / .kde / Autostart dan file .desktop dari / etc / xdg / autostart (lihat tugas penjadwalan ).
16) Ketika pengguna telah login secara grafis dan mengklik ikon untuk membuka konsol, biasanya bash akan dieksekusi. Bash akan menjalankan .bashrc terlebih dahulu
17) Ketika pengguna membuka shell login ini berarti ia harus login melalui kata sandi atau kunci yang diotorisasi. Dia dapat melakukan ini di konsol CTRL_ALT_F1 atau dengan ssh'ing ke komputer, misalnya localhost. Kemudian skrip .sh dari /etc/profile.d dan .bashrc akan dieksekusi.
sumber
Jawabannya adalah 42. Thorsten Staerk menjelaskan sudah masalah utama dalam komentar.
Untuk membantu Anda mendapatkan gambaran besar, Anda perlu tahu bahwa perangkat lunak Linux dan Open Source ditulis dan dikelola oleh jutaan relawan dan perusahaan. Jadi, tidak mudah untuk mengikuti pertumbuhan.
Di sisi lain, ada banyak dokumentasi: halaman manual untuk setiap bagian dari perangkat lunak, penjelasan yang baik tentang D-Bus , milis pengembang, Google dan sebagainya. Jadi perlu waktu beberapa tahun dan baca semua dokumen paket yang Anda minati. Jika Anda membutuhkannya lebih cepat, tanyakan saja beberapa pertanyaan bagus di Unix & Linux .
Semoga berhasil.
sumber
Sebelum saya memberikan versi jawaban saya, izinkan saya mulai dengan beberapa definisi
Linux == 'Kernel Sistem Operasi "Sistem Linux ==" Beberapa jenis sistem yang dibangun di sekitar Kernel Linux "Sesi pada Sistem Linux ==" Beberapa set program pengguna terkait yang berjalan pada sistem linux "
Semakin jauh Anda menjauh dari kernel, semakin kecil kemungkinan dua "sistem" akan memiliki kesamaan. Yang berarti bahwa sebenarnya tidak ada definisi yang masuk akal dari "Sesi Linux Modern"
Terus terang, harapan bahwa harus ada semacam dokumentasi sistem menyeluruh yang memberi Anda semua komponen adalah harapan yang tidak akan terpenuhi di sebagian besar dunia sumber terbuka. Pengembang Open Source sedang menulis program untuk memecahkan (atau memecahkan kembali!) Masalah khusus yang mereka pedulikan - jadi mereka hanya akan mendokumentasikan bagian itu - jika itu! :-)
Anda mungkin lebih beruntung dengan manual yang tersedia dengan distribusi linux komersial, namun mengingat sifat konservatif sebagian besar dari mereka, Anda dapat berpendapat bahwa rilis mereka tidak "modern"!
Saran utama yang saya berikan adalah bahwa sistem unix / linux yang sangat umum bersifat heirachical. Saya dulu memberi tahu orang-orang bahwa saya suka sistem nix karena saya bisa mulai dengan init, dan dari sana, mengerti semua yang terjadi pada suatu sistem. Systemd dan teman-teman telah mengubah itu sedikit, tetapi prinsip dasarnya sama - mulai dari atas dan turun - "program yang menyusun sesi" umumnya adalah program yang dimulai dari titik Anda memasuki pusaka. Jadi, jika Anda ssh, Anda mungkin hanya akan mendapatkan apa pun shell default Anda, karena itulah cara kerja ssh. Jika Anda masuk melalui antarmuka grafis, Anda akan mendapatkan apa pun yang dimulai oleh manajer login Anda, karena itulah cara kerja manajer login Anda
Banyak kerangka kerja desktop membuat ini sedikit lebih sulit, dengan menjalankan berbagai daemon layanan tingkat pengguna atau sistem - dan kadang-kadang, ini akan dimulai berdasarkan permintaan ketika program pertama yang membutuhkannya dimulai - lihat opsi baris perintah dari program yang Anda jalankan, ada beberapa opsi untuk menghentikan perilaku ini, dan jalankan aplikasi dalam mode "telanjang".
Sayangnya, ini berarti bahwa "membaca dokumentasi masing-masing program" adalah satu-satunya cara untuk memahami semuanya, dan bahwa tidak ada "set minimum daemon" untuk sebuah sesi - hanya ada cara distribusi yang diberikan bekerja untuk diberikan metode login / akses, dan distribusi thats, desktop, dan metode login khusus.
sumber