Belgeler: Linux Oturumu Mimarisi


20

Modern bir Linux oturumunda yer alan cinleri ve hizmetleri yığınını açıklayan iyi bir genel bakış belgesi arıyorum. Her ne kadar hakkında çeşitli belgeleri okumuş olsa da dbus, ve systemdhala büyük resmi göremiyorum.

Özellikle, bu soruların cevaplarını arıyorum (sorulara cevap vermeyin, sadece ne tür belgeler aradığımı açıklığa kavuşturmalılar):

  • Giriş yaptıktan sonra, kullanıcının oturumunun kökü hangi işlemdir?

  • Hangi süreçler başlatılmalı ve neden? Gnome, KDE, FVWM veya basit bir kabuk başlatılmış olsun, Masaüstü agnostik bir cevap arıyorum.

  • Tüm bu cinler nasıl bir rol oynuyor? Hangileri yalnız koşar, hangileri diğerlerine bağlıdır? Hangisi kim tarafından, neden ve ne kadar süreyle başlatılmalıdır? Ve bu hayvanat bahçesini kim korumalı?

Sanırım doğru önyükleme sonra çalışan cinleri bütün bir hayvanat bahçesi olduğunu tespit çünkü soruyorum: systemd-journald, systemd-udevd, dbus-daemon, systemd-logind. Ama yeterli değil: Bunların dışında ultra hafif bir PDF-görüntüleyici Koşu zathura ayrıca benim oturumu doldurur dbus-launch, dbus-daemon, at-spi2-registryd, ve at-spi-bus-launcher, ikincisi başlatılması henüz başka dbus-daemon. Hiçbiri daha önce orada bulunmadı, hiçbiri davet edilmedi, ama ben evden çıkıp ben ürpertici bir his vererek, ben çıkış yapana kadar. Eminim burada bir şey eksik ...

Başka bir örnek: Giriş yaptıktan sonra, systemdkullanıcı UID ile çalışıyorum, ancak ne yapması gerektiği hakkında hiçbir fikrim yok (206 sürümünden beri oturum yöneticisi olarak kullanmam gerektiğini düşünüyorum , değil mi?) Hakkında bir (sd-pam)belge bulamadığım bir alt süreç var.

Onlar ne yapar? Bu düzenin arkasındaki fikir nedir?

Perspektifimi açıklığa kavuşturmak için: “Eski günlerde” logingiriş kabuğumu ( bashyürütmeyi ~/.profile) başlatacağını bilmek yeterliydi ve bu noktadan sonra koşullara bağlı olarak belki de başlatarak screenya da oturuma devam edebilirdim startx.


4
Bu soru cevaplanamaz çünkü her dağıtım kendi işini yapar. Daha da kötüsü, X Pencereleme Sistemi başlatıldıktan sonra olanlarla ilgili olan KDE ve GNOME masaüstü ortamları büyük ölçüde farklıdır. Daha da kötüsü, dağıtımlar bunu yapma şeklini değiştirir - nispeten yeni olan systemd'den bahsedersiniz. Şimdi dağıtım-agnostik bir cevap istiyorsanız "Linux çekirdeği başlatılmaya başlar ve diğer her şey init'in nasıl yapılandırıldığına bağlıdır". Bu cevap geniş olduğu kadar sığdır, her derin cevap için sorunuzun en azından dağıtım versiyonlarına daraltılması gerekecektir.
Thorsten Staerk

1
lütfen sorunuzu bölün. Örneğin, daha fazla açıklamaya ihtiyaç duyan "kök oturum" işlemi olarak gnome-session ve startkde'yi aramanızı söyleyebilirim.
Thorsten Staerk

1
@ thorsten-staerk: “her dağıtımın kendi işini yaptığı için cevaplanamaz” Yani hangi deamonların çalıştığına dair herhangi bir varsayımda bulunamayacağımı mı söylüyorsun? Buna gerçekten inanamıyorum. Üzgünüm, ama soruyu bölmek aradığım cevabı vermeyecekti. Ama “Masaüstü agnostik” i yeniden ifade etmeye çalışacağım: Bir oturumda beklenen en düşük ortak paydayı veya minimum koşu deamonlarını (ve her biri için gerekçe) arıyorum. Nasıl etkileşime giriyorlar ve bu set farklı oturum türleriyle nasıl değişiyor (terminal oturumunda bir dbusd var mı? SSH üzerinden?)
stefan

1
Linux, LCD ekrandan başka bir şey olmayan cihazlarda çalışıyor. Ayrıca bir AppStore'a ve bir kameraya sahip olmayan cep telefonlarında da çalışıyor. Ayrıca bir Samsung Galaxy ve ana karelerde çalışıyor. Mantıklı bir şekilde birkaç Terabayt RAM kullanabilir ve bazı kilobaytlara sığabilir. Bir Linux oturumunun en düşük ortak paydasının Linux olduğundan korkuyorum ve bazen ihtiyacınız olanı seçmek için çirkin olan "seçim özgürlüğüne" sahipsiniz. Bir masaüstü için en düşük ortak paydaları listelemeye çalışacağım, ancak "her şey" yerine dbus hakkında soru sormanız daha iyi olacaktır.
Thorsten Staerk

Yanıtlar:


8

Sorunuz o kadar büyülenmiş ki , linuxintro'da cevapladım . Sorunuz için uyarlanmış cevap:

Fedora, SUSE veya Ubuntu gibi Linux'lu tipik bir bilgisayar açıldığında adımlar aşağıdaki gibi olacaktır:

  1. BIOS kendi kendini kontrol eder
  2. BIOS önyükleme kesimini yükler ve yürütür
  3. Grub veya lilo gibi bootloader yürütülür
  4. Bootmenu gösterilir (isteğe bağlı)
  5. Çekirdek yüklü
  6. İlk RAM diski yüklü
  7. Çekirdek yürütülür
  8. Çekirdek init yürütür
  9. init, dağıtımınıza, sürümünüze ve yapılandırmanıza bağlı olarak yürütülür

    • SysV başlangıç ​​komut dosyaları veya
    • systemd veya
    • sonradan görme

Tüm bu programların anlamı,

  • dbus , bir uygulamanın çalışan başka bir uygulamanın işlevlerini çağırabilmesi için uygulamalar arasında iletişime izin verir. Bu genellikle kullanıcılar tarafından görülemeyen bir şeydir, örn. Kendi penceresini odaklamak için pencere yöneticisini çağıran bir uygulama
  • Oturum kullanıcıları CTRL_ALT_F * terminalleri giriş yapmayı sağlar. Sistemin sistemd-logind olması durumunda ps -A tarafından görüldüğü gibi giriş işlemi (yine dağıtımdan farklı olabilir)
  • Birçok isim var udev , örneğin benim için ps -A ile systemd-udevd olarak buluyorum. Örneğin, bağladığınız aygıtlara / dev / içindeki aygıt tutamaçlarını, örneğin bir USB diski atar
  • / etc / crontab içindeki bir zaman çizelgesine dayalı olarak komutları yürütecek olan cron ve aynı zamanda önyüklemede komutları başlatmak için "@reboot" özelliğine sahiptir.

10) systemd tarafından işlenen oturum açma işlemi sanal bir terminalde oturum açmayı bekleyecek, CTRL_ALT_F1 tuşuna basılarak bir tanesine genellikle erişilebilecektir.

11) tipik olarak ve varsayılan olarak, başlatma işlemi şimdi ekran yöneticisini başlatır, örneğin kdm (KDE ekran yöneticisi) veya xdm

12) görüntü yöneticisi şimdi grafik sistemini başlatacaktır. Neredeyse hiç grafik sistemi yok ama Xorg (hildon gömülü cihazlar için)

13) Görüntü Yöneticisi Xorg sunucusuna bir giriş ekranı görüntülemesini önerecektir


Şimdi başlatma tamamlandı ve bilgisayar kullanıcının oturum açmasını bekliyor.


14) kullanıcı oturum açma ekran yöneticisi KDE, GNOME veya XFCE4 gibi bir masaüstü ortamı başlatacaktır. Bir kullanıcının KDE oturumu için kök işlemi startkde, GNOME için kök işlemi gnome-session, XFCE4 için root işlemi xfce4-session olarak adlandırılacaktır.

15) KDE genellikle çalıştırılabilir tüm dosyaları ~ / .kde / Autostart ile ve .desktop dosyalarını / etc / xdg / autostart ile başlatır ( çizelgeleme görevlerine bakınız ).

16) Kullanıcı grafik olarak oturum açtığında ve bir konsol açmak için bir simgeye tıkladığında, genellikle bash yürütülür. Bash önce .bashrc'yi çalıştırır

17) Kullanıcı bir oturum açma kabuğunu açtığında, parola veya yetkili bir anahtarla oturum açması gerektiği anlamına gelir. Bunu CTRL_ALT_F1 konsolunda veya bir bilgisayara, örneğin localhost'a ssh ile yapabilir. Ardından /etc/profile.d ve .bashrc dosyalarından .sh betikleri yürütülür.


1
Bu, linux sistemini başlatma adımlarına iyi ve genel bir bakış niteliğindedir. Belirli yazılım (örn. Grub, lilo, u-boot) değişir, ancak işlev aynıdır. Başlangıç ​​süreciyle en çok ilgilendiğinizden şüpheleniyorum, bu nedenle # 8 ve # 9 adımlarına odaklanın. sysvinit (/ etc / inittab) sistemd VEYA uptart lehine eskimiş. Bunların her ikisi de sistem hizmetlerini çalıştırabilir / izleyebilir.
dturvene

Bu pencereyi odaklamak için d-bus üzerinden hiçbir uygulama çağrısı yok. -
Robert Siemer

0

Cevap 42'dir. Thorsten Staerk, yorumlarda ana sorunu zaten açıkladı.

Büyük resmi elde etmenize yardımcı olmak için, Linux ve Açık Kaynak yazılımının milyonlarca gönüllü ve şirket tarafından yazıldığını ve korunduğunu bilmeniz gerekir. Dolayısıyla büyümeye ayak uydurmak kolay değil.

Öte yandan, çok fazla belge var: her yazılım parçası için man-sayfaları, D- Bus'ın ne olduğu, iyi bir açıklama , geliştirici posta listeleri, Google vb. Bu yüzden birkaç yıl ayırın ve ilgilendiğiniz tüm dokümanları okuyun. Daha hızlı ihtiyacınız varsa, Unix & Linux'ta bazı güzel sorular sorun .

İyi şanslar.


Elektrikli bir çırpma teli nasıl çalıştırılacağı hakkında her şeyi bilmek bana pastanın nasıl yapıldığı hakkında hiçbir şey söylemiyor. “İlgilendiğiniz tüm dokümanları okuyun” - bu oldukça işe yaramaz bir cevap. Bahsettiğiniz belgeler bana bu şeylerin ne yaptığını anlattı. Ama ne için kullanıldıklarını bilmek istiyorum. “Sadece iyi sorular sorun” - sorum basit ve düz: Dokümantasyon nerede?
stefan

1
Belki de beklediğiniz cevabı nasıl alacağınızı öğrenmeniz gerekecektir. Bu durumda, size çok yararlı bir SSS'yi işaret etmek istiyorum . Akıllı Yolda Sorular Nasıl

0

Cevabımın versiyonunu vermeden önce, birkaç tanımla başlayayım

Linux == 'Bir İşletim Sistemi Çekirdeği "Linux Sistemi ==" Linux Çekirdeği etrafında kurulan bir çeşit sistem "Linux Sisteminde Oturum ==" Bir linux sisteminde çalışan ilgili kullanıcı programları kümesi "

Çekirdekten ne kadar uzaklaşırsanız, iki "sistem" in aslında ortak bir şeyleri olma olasılığı o kadar az olur. Yani "Modern Linux Oturumu" nun gerçekten mantıklı bir tanımı yok

Açıkçası, tüm bileşenleri size veren bir tür kapsayıcı sistem dokümantasyonu olması beklentisi, açık kaynak dünyasının çoğu yerinde karşılanmayacak bir beklentidir. Açık Kaynak geliştiricileri, önem verdikleri belirli sorunları çözmek (veya yeniden çözmek!) İçin programlar yazıyorlar - bu yüzden bunun bir kısmını belgeleyecekler - eğer! :-)

Ticari linux dağıtımlarında bulunan el kitaplarında daha iyi şansınız olabilir, ancak bunların çoğunun muhafazakâr yapısı göz önüne alındığında, sürümlerinin "modern" olmadığını iddia edebilirsiniz!

Vereceğim temel tavsiye, un çok genel anlamda unix / linux sistemlerinin heiraşik olmasıdır. İnsanlara nix sistemlerini sevdiğimi söylerdim çünkü init ile başlayabilirim ve oradan bir sistemde olan her şeyi anlayabilirim. Systemd ve arkadaşları bunu biraz değiştirdi, ancak temel prensip aynı - tepeden başlayıp aşağı doğru - "bir oturum oluşturan programlar" genellikle heiraşiye girdiğiniz noktadan başlayanlardır. Yani, eğer ssh, muhtemelen sadece varsayılan kabuk ne olursa olsun alacaksınız, ssh böyle çalışır. Bir grafik arayüz üzerinden giriş yaparsanız, giriş yöneticiniz tarafından başlatılan her şeyi alırsınız, çünkü giriş yöneticiniz bu şekilde çalışır

Masaüstü çerçevelerinin birçoğu, çeşitli kullanıcı veya sistem düzeyinde hizmet cinlerini çalıştırarak bunu biraz daha zorlaştırıyor - ve bazen, bunlar, onlara ihtiyaç duyan ilk program başladığında bir istek üzerine başlatılacak - çalıştırırsanız, bu davranışı durdurma ve uygulamayı "çıplak" modda çalıştırma olasılığı yüksektir.

Ne yazık ki, bu "tek tek program belgelerini okumak" her şeyi anlamanın tek yolu olduğu ve bir oturum için "asgari cinler kümesi" olmadığı anlamına gelir - belirli bir dağıtımın belirli bir şekilde çalışmasının yolu giriş / erişim yöntemi ve bu dağıtım, masaüstü ve giriş yöntemine özel.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.