मुझे लॉग इन करने और एकता या किसी अन्य ग्राफिकल यूजर इंटरफेस को शुरू करने के लिए कवर के तहत क्या होता है?


55

जब कोई परेशानी होती है, तो यह समझने में अच्छा हो सकता है कि किसी उपयोगकर्ता को GUI सत्र में साइन इन करने और डेस्कटॉप लाने के लिए यूनिटी (या अन्य विंडो मैनेजर) प्राप्त करने के लिए कवर के तहत क्या होता है।

जवाबों:


86

कैसे एक डेस्कटॉप उपयोगकर्ता GUI सत्र उबंटू 12.04-14.04 से शुरू होता है

यहाँ घटनाओं की श्रृंखला है:

उबंटू लिनक्स कर्नेल और अपस्टार्ट

कर्नेल प्रक्रिया संख्या 1 के रूप में init प्रक्रिया शुरू करता है। यह Ubuntu 12.04 के लिए ऊपर की ओर है।

अपस्टार्ट की नौकरियां हैं /etc/init/


मैन पेज: man init

लॉग्स: कर्नेल लॉग ( dmesgकॉपी किया हुआ /var/log/syslog) /var/log/upstart/jobname.log,, अन्य लॉग जो शुरू किए गए नौकरियों द्वारा निर्धारित किए जाते हैं।

स्रोत: /etc/init/lightdm.conf


अपस्टार्ट नौकरी निष्पादित करता है /usr/sbin/lightdm। हम शायद systemdसमय के साथ इसे एक सेवा इकाई में बदलने की उम्मीद कर सकते हैं ।

Lightdm


मैन पेज:, man 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

स्रोत: आदमी lightdm और/var/log/lightdm/lightdm.log


लाइटमैड इनिट प्रक्रिया में काफी देर से शुरू होता है; उदाहरण के लिए, सिस्टम डब को पहले से ही शुरू किया जाना चाहिए, फाइल सिस्टम तैयार होना है, और ग्राफिक्स डिस्प्ले सिस्टम तैयार होना चाहिए।

lightdm एक xauthority फ़ाइल बनाता है और फिर X शुरू करता है, इसे VT 7 पर शुरू करता है, जो वर्चुअल टर्मिनल आपको मिलता है अगर आप Alt+ Ctrl+ दबाते हैं F7। जब X को शुरू करने के लिए प्लायमाउथ स्प्लैश स्क्रीन प्रोग्राम के लिए lightdm सिग्नल शुरू किए जाते हैं। यह आवश्यक है कि यह सब टैटी के (1-6) शुरू होने के बाद होता है।

जुलाई 2013 के बाद से मीर सपोर्ट आइटम को लाइटमैड में जोड़ा गया है, लेकिन इन्हें डेस्कटॉप सिस्टम के लिए डिफ़ॉल्ट रूप से 14.04 तक उपयोग नहीं किया जाता है।

एक्स संभव उन्नत ड्राइवरों का उपयोग करने का प्रयास करता है। यह अपने ड्राइवरों से भरी हुई हैं /usr/lib/xorg/modules/। ध्यान दें कि कर्नेल ड्राइवर और xorg ड्राइवर दोनों में कई उपकरणों के लिए मौजूद है, xorg ड्राइवरों के साथ लगभग निश्चित रूप से कर्नेल वाले का उपयोग करते हैं। विशेष रूप से उन्नत उच्च प्रदर्शन ग्राफिक्स के लिए ड्रिप और ग्लक्स महत्वपूर्ण विशेषताएं हैं। X के लिए लॉग जमा किए जाते हैं /var/log/Xorg.0.log

इस "सीट" के बारे में सिस्टम डब पर संचार है और संभावित उपयोगकर्ता नाम प्राप्त किए गए हैं। स्क्रीन को खींचने के लिए lightdm X का उपयोग करता है। एकता-अभिवादन का उपयोग प्रक्रिया में सहायता के लिए किया जाता है।

जैसे ही आप विभिन्न संभावित उपयोगकर्ता का चयन करते हैं, उपयोगकर्ता की बैकगाउंड छवि का उपयोग किया जाता है।

lightdm को संभावित विंडो-मैनेजर / सिस्टम के नाम मिलते हैं /usr/share/xsessions/*.desktop

खाता जानकारी को dbus पर अकाउंट्स सर्विस अकाउंट-डेमन के माध्यम से प्राप्त किया जाता है।

उपयोगकर्ता को प्रमाणित करने के लिए lightdm और अभिवादक PAM का उपयोग करते हैं। एक बार प्रमाणित हो जाने पर, PAM - the -gin विकल्प के साथ एक सूक्ति-कीरिंग-डेमन डेमॉन शुरू करेगा और उपयोगकर्ता के पासवर्ड को फीड करेगा ताकि यह मौजूद होने पर उपयोगकर्ता के लॉगिन कीरिंग को अनलॉक कर सके। देखें https://live.gnome.org/GnomeKeyring/Pam अधिक जानकारी के लिए और आदमी 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अब स्टार्टअप अनुक्रम के बाकी निर्धारण करते हैं।

उदाहरण के लिए यहाँ एक है एकता के लिए:

[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 (sic .-- 'ubuntu', नहीं 'एकता')

lightdm सत्र


लॉग:?
त्रुटि लॉग: ~/.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;
  • यदि XKB का उपयोग नहीं कर रहा है तो किसी भी मौजूदा /etc/X11/Xmodmapऔर के खिलाफ xmodmap का उपयोग करता है$HOME/.Xmodmap
  • में स्क्रिप्ट चलाता है /etc/X11/xinit/xinitrc.d;
  • /etc/X11/Xsession.d/*में विकल्पों का उपयोग करके Xsession स्क्रिप्ट चलाता है /etc/X11/Xsession.options

    इनमें से एक ssh- एजेंट (निरर्थक) शुरू होता है, दूसरा निष्पादित करता है $HOME/.xsessionrc। एक अन्य सत्र-डब शुरू होता है (उपरोक्त Xsession.optionsफ़ाइल में अनुमति के अनुसार ssh-agent और सेशन-dbus दोनों )। यह सत्र dbus इस एकल उपयोगकर्ता सत्र के बारे में प्रक्रियाओं के बीच संचार के लिए उपयोगी है।

ssh- एजेंट सत्र के लिए ssh कीज़ पर पकड़ सकता है यदि वे सत्र के दौरान कुछ समय के लिए ssh-add 'एड करते हैं, लेकिन सूक्ति-कीरिंग-डेमन यही काम करते हैं।

/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। इस प्रकार उपयोगकर्ता-मोड अपस्टार्ट उन अपस्टार्ट नौकरियों को शुरू करता है /usr/share/upstart/sessions। उनमें से एक है gnome-session.confजो सूक्ति सत्र शुरू करता है।

जब तक पहले से ही नहीं किया जाता है, अंत में lightdm-session एक विंडो मैनेजर शुरू करता है, या एकता के लिए, ऊपर gnome-session सेशन मैनेजर शुरू होता है।

ऐसा प्रतीत होता है कि lightdm-session xsession की पारंपरिक भूमिका पर आधारित है। इसका मैन पेज http://manpages.ubuntu.com/manpages/precise/man5/Xsession.5.html पर है । lightdm इसे सत्र-आवरण मानता है।

सूक्ति-सत्र सत्र प्रबंधक (एकता और सूक्ति गोले)


Manpage: http://manpages.ubuntu.com/manpages/precise/en/man1/gnome-session.1.html
लॉग:?

स्रोत: मैन पेज


सूक्ति के लिए सूक्ति-सत्र का उपयोग किया जाता है, लेकिन डिफ़ॉल्ट रूप से भयानक के लिए नहीं, उदाहरण के लिए। ऊपर .desktop फ़ाइलें देखें।

सूक्ति-सत्र / usr / share / gnome-session / session / से निर्दिष्ट कार्यक्रम शुरू करता है और ~ / .config / autostart / और / etc / xdg / autostart से आवेदन शुरू करता है।

यहाँ / 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

एक अन्य, /etc/xdg/autostart/gnome-keyring-ssh.desktop, --start विकल्प के साथ सूक्ति-कीरिंग-डेमन शुरू करता है, उस डेमन प्रक्रिया की शुरुआत को पूरा करता है और संभावित उपयोग के लिए पर्यावरण में इसके बारे में महत्वपूर्ण जानकारी संग्रहीत करता है। ssh।

एक ps aux सूची से यह प्रतीत होता है कि gnome-session डब-लॉन्च के साथ विंडो मैनेजर शुरू करता है।

विंडो प्रबंधक

बहुत बढ़िया विंडो मैनेजर


मैन पेज: http://manpages.ubuntu.com/manpages/precise/en/man1/awesome.1.html
लॉग्स:

स्रोत: मैन पेज, कॉन्फ़िग फ़ाइल परीक्षा


यहाँ भयानक /desktop फ़ाइल / usr / शेयर / xsession / lightdm- सत्र द्वारा उपयोग किया जाता है:

[Desktop Entry] 
Encoding=UTF-8
Name=awesome
Comment=Highly configurable framework window manager
TryExec=awesome
Exec=awesome

जैसा कि आप देख सकते हैं, प्रविष्टि बस भयानक विंडो प्रबंधक को निष्पादित करने का कारण बनती है। यह अपनी स्वयं की कॉन्फ़िगरेशन फ़ाइलों को पढ़ता है, जिसमें भयानक पैकेज से /etc/xdg/awesome/rc.lua शामिल है। इसे $ HOME / .config / awesome / rc.lua के साथ कॉन्फ़िगर किया जा सकता है।

एकता


स्रोत: कॉन्फ़िगर फ़ाइल परीक्षा


यहाँ ubuntu.desktop फ़ाइल / usr / शेयर / xsession / में है:

[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 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 में सूक्ति-सत्र द्वारा चलाया जाने वाला IsRunnableHelper प्रोग्राम यह निर्धारित करता है कि क्या एकता को चलाया जा सकता है या ubuntu-2d चलेगा या नहीं। यदि यह कोई गलती करता है और कहता है कि एकता चल सकती है और यह नहीं हो सकता है, तो परेशानी होती है। यदि आपके साथ ऐसा हो तो ubuntu-2d मैन्युअल रूप से lightdm में चुनें। जबकि यह रिटर्न कोड देता है, हम इसे -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 सॉफ्टवेयर का उपयोग करता है। इसकी कॉन्फ़िगरेशन फ़ाइल ऊपर की तुलना में सरल है। सक्षम होने के लिए ऊपर देखें।

हम उपरोक्त फाइलों से देख सकते हैं कि सूक्ति-सत्र को सेटिंग्स डेमॉन शुरू करना चाहिए, और एक विंडो प्रबंधक और किसी भी पैनल को चलाने के प्रयोजनों के लिए कंपिज़ शुरू करना चाहिए।

Compiz


मैन पेज: http://manpages.ubuntu.com/manpages/precise/en/man1/compiz.1.html
लॉग:?
स्रोत: http://en.wikipedia.org/wiki/Compiz , फाइल सिस्टम परीक्षा


एक बार कंपीज़ शुरू होने के बाद, यह विभिन्न प्लगइन्स चलाता है। 12.10 से पहले gnome-settings का उपयोग इन्हें परिभाषित करने के लिए किया जाता है। उन्हें ccsm (compiz config settings manager) या gconf-editor के साथ बदला जा सकता है। प्लगइन सेटिंग्स apps / compiz-1 / general / screen0 / options में active_plugins के तहत संग्रहित हैं। डुप्लिकेट ने मुझे कंपीज के साथ सेगफॉल्ट होने का कारण बना दिया है। ये उपर्युक्त के रूप में आयोजित ~ / .gconf / निर्देशिका में उपयोगकर्ता के घर निर्देशिका में संग्रहीत किए जाते हैं। वास्तविक मानों को वहां% gconf.xml फ़ाइलों में संग्रहीत किया जाता है।

12.10 के बाद से ये प्लगइन्स आपके ~ / .config / dconf / उपयोगकर्ता फ़ाइल में बाइनरी में संग्रहीत हैं। सेटिंग्स को संग्रहीत करने की dconf, या gsettings विधि नई है। आप इन सभी सेटिंग्स को देख सकते हैं dconf dump /org/gnome/

यूनिटीशेल इन प्लगइन्स में से एक है। यह एक अनुमानित टूलकिट के रूप में nux प्रोजेक्ट का उपयोग करता है। निर्दिष्ट पारदर्शिता मूल्यों के साथ 3 आयामी अंतरिक्ष में बनावट पर चित्र बनाए गए हैं। इन्हें कंपिज़ द्वारा संसाधित किया जाता है और सिस्टम के कंप्यूटर ग्राफिक हार्डवेयर कम्पोज़िट पर ग्राफिक्स इंजन रखने और उन्हें प्रस्तुत करने के लिए या तो llvm या उन्नत ग्राफिक्स ड्राइवरों को भेजा जाता है। आम तौर पर, यह सीधे फ्रेमबोर्डर में छवियों को प्रस्तुत करने के रूप में होता है, जैसा कि अधिक परंपरागत रूप से किया गया था। घटनाओं की यह जटिल श्रृंखला है जिसमें अधिक उन्नत ड्राइवरों की आवश्यकता होती है, और कभी-कभी उबंटू में मालिकाना ग्राफिक्स ड्राइवरों के उपयोग का संकेत देता है।


मैं कैसे बता सकता हूं कि मेरा सिस्टम बहुत बढ़िया चल रहा है, यूनिटी या कॉम्पिज़?
जेम्स

@ नाम आप संभवतः सूची में संकलित या कमाल की जाँच कर सकते हैं। आपको वह मिलता है जैसे कि एक कमांड के साथ ps aux। आप सत्र पैरामीटर के लिए फ़ाइल ~ / .dmrc भी देख सकते हैं cat ~/.dmrc। ऊपर देखो। सत्र = ubuntu का मतलब है कि आप एक साथ compiz और एकता का उपयोग कर रहे हैं (और वह डिफ़ॉल्ट है।
John S Gruber

असाधारण ज्ञान के बिना प्रक्रिया पर एक अच्छा काबू पाने की अनुमति देने के अलावा असाधारण जवाब! आपके वर्णन के बाद, मैंने xsessions/ubuntu.desktopदूसरी फाइल को दोहराने की कोशिश की और उसी व्यवहार के साथ समाप्त होने की उम्मीद कर रहा था, लेकिन बिना किसी सफलता के ( इस प्रश्न में अधिक विवरण )। क्या डिफ़ॉल्ट ubuntu.desktopxsession के बारे में कुछ खास है ?
विज्ञापन एन

अगर मैं कर सकता था, तो वास्तव में, +10 होगा। डॉक्टर से बेहतर ...
रिंग Ø

इसे लिखने के लिए धन्यवाद। क्या आप अपडेट कर सकते हैं कि नए उबंटू संस्करणों के लिए चीजें कैसे बदलीं?
4
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.