कैसे GUI पर काम करता है "हूड के तहत"


12

अपडेट करें

कृपया मुझे सही करें अगर मैं गलत हूं : मेरे कंप्यूटर पर काम करने के लिए, डेबियन नामक जीएनयू / लिनक्स वितरण के साथ, मुझे कमांड दर्ज करने, एप्लिकेशन शुरू करने, फ़ाइल खोलने आदि के दो तरीके पता हैं:

  • एक कमांड लाइन इंटरफ़ेस जहां मैं पाठ दर्ज करता हूं
  • एक ग्राफिकल यूजर इंटरफेस [उर्फ जीयूआई ]: एक इंटरफ़ेस जो "विंडोज़", प्रतीक आदि प्रदान करता है।

"विंडो मैनेजर" नाम से कुछ चल रहा है। जैसा कि मैं ग्नू / लिनक्स का उपयोग करता हूं, मैं एक्स-विंडो सिस्टम [जहां तक ​​मैं जानता हूं] पर काम करता हूं।

यहाँ छवि विवरण दर्ज करें


मूल पोस्टिंग


स्थिति : मैंने /etc/fstabUSB स्टिक्स [उदा /dev/sdb1] के लिए ऑटोमाउंट को अक्षम कर दिया है । माउंटिंग के लिए rootया कम से कम कमांड लाइन परsudo प्रवेश की आवश्यकता होती है , लेकिन विंडो मैनेजर (!) में नहीं । मेरा मतलब यह नहीं है automount, मेरा मतलब है कि खिड़की के प्रबंधक में "प्रतीक पर क्लिक" बिना किसी सवाल के जीयूआई पर डिवाइस को खोलता है, जहां सीएलआई पर रूट होना चाहिए।

प्रश्न : जीयूआई "हुड के तहत" कैसे काम करता है? क्या configसामान्य रूप से विंडो प्रबंधकों के लिए एक फ़ाइल है या किसी को इसे व्यक्तिगत रूप से सेट करना है?

मैं समझता हूं और mountकमांड का उपयोग करता हूं, मैं यह समझने के लिए समझता हूं कि कैसे पढ़ना है और कॉन्फ़िगर करना है /etc/fstabऔर यह जानना है कि वहां और प्रविष्टियों को क्या देखना /etc/mtabहै।


1
इसके अलावा, AFAIK विंडो मैनेजर इसके लिए जिम्मेदार नहीं हैं ; महत्वपूर्ण बात यह है कि (डेस्कटॉप के वातावरण के कुछ हिस्सों) नीचे चल रहा है। उदाहरण के लिए, मैं गनोम शैल के बजाय विस्मयकारी गनोम - गनोम का उपयोग करता हूं - और डिस्क आटोमाउंट। लेकिन वे नहीं होगा अगर मैं सिर्फ सादा भयानक इस्तेमाल किया। ईमानदारी से, मैं वास्तव में आपके इनाम को नहीं समझता - @ एसएलएम का जवाब बहुत स्पष्ट लगता है।
स्ट्रॉन्ग

2
बहुत शुरुआती दिनों में यह ऑटोमैटिक एनकाउंटर इन ट्रिक्स को बैकग्राउंड में कर रहा था (बहुत ही माउंट-कमांड जो आप रूट-क्ली पर इस्तेमाल करेंगे)। अब स्वयं की उप-प्रक्रियाएं हैं जो जीयूआई के साथ एकीकृत होती हैं जो काम करती हैं। स्लम से जवाब देखें।
निल्स

5
"मुझे यह विश्वास करना कठिन है कि प्रत्येक [विभिन्न विंडो प्रबंधकों] को इसे हल करने के लिए अपने तरीके की तलाश करनी होगी।" -> ऐसा करने वाला विंडो मैनेजर (WM) कभी नहीं होता है। यह डेस्कटॉप वातावरण (DE) है। के रूप में उन सभी को यह करने के लिए खुद के लिए, ठीक है, वे सभी अपने लिए भी बहुत सारी अन्य चीजें करते हैं। पसंद से । लेकिन वे करने के लिए नहीं है। उदाहरण के लिए GNOME, के पास GPL लाइसेंस है, इसलिए कोई भी GPL'd DE सिर्फ GNOME भागों का उपयोग कर सकता है, यदि वे चाहते हैं।
गोल्डिलॉक्स

2
@goldilocks जो कि Cinnamon और MATE ने किया।
आवारागर्दी

2
@strugee: GNOME का GTK (जो मूल रूप से GIMP के लिए था) के साथ एक घनिष्ठ ऐतिहासिक संबंध है, और निचले स्तर का सपोर्ट लिब ( glib ) है जो GNU भी बनाए रखता है और मेरा मानना ​​है कि GNOME और GTK से बाहर हो गया है। मुझे लगता है कि लगभग हर कोई ग्लिब बनाता है, यह एक मल्टी-टास्किंग के लिए बहुत सारे सामान को मौलिक रूप से प्रदान करता है, घटना से प्रेरित जीयूआई "हुड के नीचे" (बस: वास्तविक ग्राफिकल भागों नहीं)। मुझे लगता है कि GNOME मौलिक रूप से glib + gtk + एक विंडोम मैनेजर + कुछ एप्लिकेशन हैं।
गोल्डीलॉक्स

जवाबों:


5

यह स्थिति की मेरी समझ है, लेकिन मैं एक विशेषज्ञ नहीं हूं इसलिए यह अन्य उत्तरों की तुलना में कम तकनीकी है। कई वर्षों तक इन प्रणालियों का उपयोग करने के बाद मुझे यही समझ में आया, मैंने किसी भी विस्तार से उनका अध्ययन नहीं किया है।

यहाँ तीन मुख्य खिलाड़ी हैं और उनके बीच में वे आरोह का प्रबंधन करते हैं:

  • FUSE: यह सब कुछ के केंद्र में है, जैसा कि इसके विकिपीडिया पृष्ठ में वर्णित है :

    Userspace (FUSE) में फाइलसिस्टम यूनिक्स जैसे कंप्यूटर ऑपरेटिंग सिस्टम के लिए एक ऑपरेटिंग सिस्टम तंत्र है जो गैर-विशेषाधिकार प्राप्त उपयोगकर्ताओं को कर्नेल कोड को संपादित किए बिना अपने स्वयं के फाइल सिस्टम बनाने देता है। यह उपयोगकर्ता स्थान में फ़ाइल सिस्टम कोड चलाकर प्राप्त किया जाता है जबकि FUSE मॉड्यूल वास्तविक कर्नेल इंटरफेस के लिए केवल "पुल" प्रदान करता है।

    तो, मूल रूप से, यह वही है जो अनपेक्षित उपयोगकर्ताओं को फाइलसिस्टम माउंट करने की अनुमति देता है।

  • gvfs: डेस्कटॉप वातावरण के सूक्ति परिवार में (जिसमें गनोम, मेट, दालचीनी शामिल हैं), यह (अन्य चीजों के अलावा) एक डेमॉन है जो स्वचालित रूप से नए जुड़े ड्राइव को माउंट करेगा। यह FUSE के माध्यम से ऐसा करता है । मुझे विश्वास है (लेकिन अच्छी तरह से गलत हो सकता है) केडीई परिवार के लिए समकक्ष को केओ कहा जाता है

    की मुख्य प्रक्रियाएँ gvfs(से ली गई हैं man gvfs):

    • gvfsd - मुख्य gvfs डेमॉन
    • gvfs-fuse-daemon - एक फ़्यूज़ फाइलसिस्टम के रूप में gvfs की गणना करता है
    • gvfsd-metadata - gvfs मेटाडेटा लिखता है
  • udev: यह एक प्रणाली है जो नए उपकरणों का पता लगाती है और आपको कनेक्ट होने पर स्क्रिप्ट / कमांड चलाने की अनुमति देती है। उदाहरण के लिए, यह वह है udevजो एक नई स्क्रीन का पता लगाता है और उस पर आपके डेस्कटॉप को मिरर कर सकता है:

    udv लिनक्स कर्नेल के लिए एक उपकरण प्रबंधक है। मुख्य रूप से, यह डिवाइस नोड्स को / dev में प्रबंधित करता है। यह devfs और हॉटप्लग का उत्तराधिकारी है, जिसका अर्थ है कि यह फर्मवेयर लोड सहित उपकरणों को जोड़ने / हटाने के दौरान / देव निर्देशिका और सभी उपयोगकर्ता अंतरिक्ष क्रियाओं को संभालता है।

    विशेष रूप से, एक udisks- आधारित वॉल्यूम मॉनिटर के gvfsमाध्यम से काम करने लगता है gvfs-udisks2-volume-monitorudisksहालांकि, खुद पर निर्भर करता है udev(देखें man 7 udisks)।

तो, मूल रूप से ("भयानक सरलीकरण" पढ़ें) क्या होता है कि जब आप अपनी ड्राइव को कनेक्ट करते हैं, तो udevइसका पता लगाता है और gvfsडेमॉन को अलर्ट करता है जो तब इसे FUSE डिवाइस के रूप में माउंट करेगा।

FUSE और udevसभी डेस्कटॉप वातावरणों के लिए समान होगा, डीए डेमन क्या बदलाव है udevजो ड्राइव को FUSE फाइल सिस्टम के रूप में मॉनिटर और माउंट करता है।


1
Udv, gvfs और अन्य सभी चीज़ों के बीच अंतराल भरने वाली D- बस लगाएं।
ब्रिअम

आप gvfs के बारे में जानकारी अपडेट करना चाह सकते हैं। वे GIO के लिए आगे बढ़ रहे हैं।
Braiam

8

यह आपके विंडोिंग वातावरण (GNOME / KDE / etc) पर निर्भर करता है, लेकिन GNOME में, उदाहरण के लिए, आप डेमन को इस पर चलते हुए देखेंगे gvfs-*-volume-monitor। ये डेमॉन बढ़ते हुए उपकरणों के लिए जिम्मेदार हैं, जब डेस्कटॉप वातावरण को चला रहे हैं, तो उनका कोई लेना-देना नहीं है /etc/fstab, और पूरी तरह से स्वतंत्र रूप से काम करते हैं।

जहाँ तक एक विन्यास फाइल के रूप में, कुछ फाइलें हैं जो इस से संबंधित हैं जो उपयोगकर्ता के होम डायरेक्टरी में रहते हैं जो डीई चल रहा है $HOME/.local/share/gvfs-metadata

इस U & L Q & A शीर्षक: क्या gvfs है और मुझे इसे अपने सिस्टम पर क्यों चाहिए? , GVFS क्या है, यह समझाने का प्रयास करता है। यह उसे समझाने का एक अच्छा काम करता है। लेकिन मुझे लगता है कि जो आप वास्तव में पूछ रहे हैं वह इस U & L Q & A शीर्षक से अधिक संबोधित है: स्वचालित रूप से USB डिस्क माउंट करना (कैसे काम करता है)


जवाब में लगता है HAL... मुझे thunar[जो मैं उपयोग करता हूं] आदि के लिए कुछ समाधान मिला । लेख ने एक दिशा में बताया - इसके लिए धन्यवाद! - लेकिन मैं अभी भी एक आम भाजक की तलाश कर रहा हूँ ...
23:14

IIRC DE को रूट की आवश्यकता नहीं है क्योंकि यह FUSE (यूजर स्पेस में फाइलसिस्टम) का उपयोग करता है।
स्ट्रैजी

@strugee का अनुमान है कि DE का मतलब डेस्कटॉप वातावरण है, मुझे FUSE में देखना चाहिए। क्या आपके पास कोई संकेत है, कहाँ है?
एरच

@chirp FUSE को विकिपीडिया पर देखें: en.wikipedia.org/wiki/FUSE यह, IIRC है। और स्लम पहले ही जवाब दे चुका है। इसका जवाब यह है कि डेस्कटॉप वातावरण, विंडो मैनेजर नहीं, ऑटोमोटिविंग करता है।
आवारागर्दी

2
@chirp - यहाँ देखें: bbs.archlinux.org/viewtopic.php?id=95509 । HAL को पदावनत कर दिया गया है, en.wikipedia.org/wiki/HAL_(software) । : Udev प्रतिस्थापन आगे जा रहा है en.wikipedia.org/wiki/Udev
SLM

8

सरल जवाब है कि वे धोखा दे रहे हैं। वे उपयोग नहीं करते fstab। वे आम तौर पर udevप्रविष्टि घटनाओं को पकड़ने के लिए एक हुक का उपयोग करते हैं, डिस्क को मैन्युअल रूप से माउंट करते हैं root, जो dbusआपके फ़ाइल प्रबंधक को सूचित करने के लिए पारित किया जा सकता है कि आपके पास एक नई डिस्क है या वे अनमाउंट suidकरने के बजाय उपयोगिताओं का उपयोग कर सकते हैं dbus। दुर्भाग्य से इसके लिए कोई मानक विन्यास विकल्प नहीं हैं, और चूंकि डेस्कटॉप आंदोलन जटिलता को छिपाने में विश्वास करता है, इसलिए वे इसे उपयोगकर्ता दस्तावेज में नहीं दिखाते हैं, केवल डेवलपर दस्तावेज में, और वे एक ही उपयोगकर्ता प्रणाली को मानते हैं इसलिए USB ड्राइव केवल काम के लिए काम करते हैं एक्स सर्वर पर लॉगइन करने वाला पहला उपयोगकर्ता।


हाँ! यह वह चीज है जिसकी मुझे तलाश है। Newb के रूप में, मैं पूछना चाहता हूं कि कहां से देखना शुरू करना है, erm: "मैं कहां से शुरू करूं" इस व्यवहार का पता लगाने के लिए [कोई संकेत मुझे चौंका देने में मदद करेगा; एक बिंदु शुरू करने या तो बेहद] में मदद मिलेगी
erch

2
@chirp udev (7) और /etc/udev/rules.d/* पर खोज शुरू करना
hildred

5

पॉलिसीकीट (या पोलकिट) नीति को परिभाषित करने और संभालने के लिए एक एप्लिकेशन-स्तरीय टूलकिट है जो विशेषाधिकार प्राप्त प्रक्रियाओं को विशेषाधिकार प्राप्त प्रक्रियाओं से बात करने की अनुमति देता है

यह अप्रयुक्त (डेस्कटॉप) अनुप्रयोगों के लिए विशेषाधिकार प्राप्त संचालन (जैसे माउंट () विधि को कॉल करने के लिए) का उपयोग करने के संबंध में निर्णय लेने की प्रक्रिया को केंद्रीयकृत करने के लिए एक रूपरेखा है।

एक प्रमाणीकरण एजेंट का उपयोग सत्र के उपयोगकर्ता को यह साबित करने के लिए किया जाता है कि सत्र का उपयोगकर्ता वास्तव में उपयोगकर्ता है (उपयोगकर्ता के रूप में प्रमाणित करके) या एक प्रशासनिक उपयोगकर्ता (व्यवस्थापक के रूप में प्रमाणित करके)।

जीवीएफएस एक आभासी फाइलसिस्टम है जो उपयोगकर्ता के रूप में बढ़ते स्थानीय और दूरस्थ फाइल सिस्टम को कचरा समर्थन के साथ अनुमति देता है । FUSE का समर्थन भी है जो अनुप्रयोगों को GVFS फाइल सिस्टम तक पहुँचने के लिए GIO का उपयोग नहीं करने की अनुमति देता है, लेकिन अधिकांश DE अन्य चीजों के लिए पॉलिसीकीट के माध्यम से प्रमाणीकरण करते हैं, जैसे कि कंप्यूटर को हाइबरनेट करना और बंद करना, और NetworkManager के लिए, इसलिए उन्हें इसकी आवश्यकता नहीं है FUSE का उपयोग करें।

यह दो हिस्सों से मिलकर बना है:

  1. एक साझा पुस्तकालय जो GIO का समर्थन करने वाले अनुप्रयोगों द्वारा लोड किया गया है;
  2. जीवीएफएस ही, जिसमें डेमों का संग्रह होता है जो एक दूसरे के साथ संवाद करते हैं और डी-बस पर जीआईओ मॉड्यूल।

पोलकिट नियमों के लिए पोलकिट-ग्नोम के साथ, gvfs पैकेज स्थापित करने की आवश्यकता है। सुनिश्चित करें कि एक ग्राफिकल प्रमाणीकरण एजेंट स्थापित और ऑटोस्टार्ट किया गया है।

विशेषाधिकारों के लिए विन्यास फाइल प्रत्येक वितरण के लिए अलग होनी चाहिए। आर्क विकी आपको एक फ़ाइल बनाने के लिए कहता है /usr/share/polkit-1/rules.d/। डेबियन में, वे अंदर स्थित हैं /etc/polkit-1/

सूत्र: डेबियन पर पॉलिसीकिट || आर्च विकी पर पोलकिट || आर्क विकी पर GVFS || GNOME विकी पर GVFS!


क्या आप सुनिश्चित हैं कि GIO का लक्ष्य Gobject Introspection है? मुझे लगा कि अगर ऐसा है तो इसे भारत सरकार कहा जाएगा। सूक्ति लोग इसे जीआई कहते हैं । मुझे GIO के नाम का एक और स्पष्टीकरण नहीं मिला है, लेकिन यह जीआई के समान नहीं लगता है।
terdon

@terdon जो वास्तव में strugee ( unix.stackexchange.com/posts/101951/revisions पर 10 संशोधन ) द्वारा संपादित किया गया था । इसे हटाने ...
टेरेसा ई जूनियर

4

एक सामान्य तत्व जिसे आप देख रहे हैं, वह है FUSE , GNOME के ​​gvfs, उदाहरण के लिए, हुड के नीचे इसका उपयोग करता है। 1 यह कर्नेल के साथ इंटरफेस है, और मेरा मानना ​​है कि यह लिनक्स पर सभी अप्रकाशित (ऑटो) बढ़ते सिस्टम के लिए आम है [लेकिन टिप्पणियां देखें]। इंडिविजुअल डीई इसका अपना संस्करण नहीं बनाएगा क्योंकि इसके लिए कर्नेल पैचिंग की आवश्यकता होगी।

वह होमपेज लिंक वास्तव में पुराना है, क्योंकि जैसा कि यहां उल्लेख किया गया है , FUSE कुछ साल पहले आधिकारिक कर्नेल का हिस्सा बन गया था, लेकिन यह परियोजना की उत्पत्ति और उद्देश्यों का वर्णन करता है (यह सिर्फ अनपेक्षित बढ़ते के लिए नहीं है)।

विभिन्न प्रणालियाँ शैली में विचलन कर सकती हैं इससे परे यही कारण है कि आपके पास विभिन्न डेस्कटॉप वातावरण हैं: वे GUI कैसे / क्या होना चाहिए, के अलग-अलग विज़न का प्रतिनिधित्व करते हैं। वे उपयोगकर्ता इंटरफ़ेस के फ़ॉर्म और फ़ंक्शन का ध्यान रख रहे हैं, लेकिन FUSE वास्तविक बढ़ते और कर्नेल स्तर का सामान करता है। ध्यान दें कि FUSE वास्तव में "ऑटो" भाग नहीं करता है, यह "अनप्रिविलेक्टेड" भाग के बारे में अधिक है, लेकिन ऑटो भाग बहुत सरल है: आपको बस इतना करना है कि पोल, जैसे /dev,। मैंने एक बढ़ते अनुप्रयोग लिखा है जो इस तरह से काम करता है; यह सिर्फ नए नोड्स की उपस्थिति के लिए देखता है। 2 वह हिस्सा शायद एक सौ लाइन या C ++ का है। आसान-पेसी - उस स्तर पर एक आम एपीआई के लिए कोई वास्तविक आवश्यकता नहीं है।

1 या कर सकते हैं, अगर यह एक सही मायने में unprivileged माउंट कर रहा है। टेरेसा का जवाब सामान्य दृष्टिकोणों तक पहुंच की अनुमति देने के लिए नए दृष्टिकोणों को कवर कर सकता है।

2 जैसा कि हिलेड्रेस्ड अवलोकन, udv कॉलबैक एक बेहतर, कम हैक विधि होगी।


मुझे लगता है कि आपका मतलब "मुखपृष्ठ" था और टाइपो के गायब होने के बाद मैं इस टिप्पणी को हटा दूंगा;) हमेशा की तरह शानदार जवाब!
एर

1
चूँकि हमारे उत्तर एक-दूसरे के विपरीत प्रतीत होते हैं, इसलिए मैंने कुछ परीक्षण किए। कम से कम डेबियन में, एक सक्रिय पोलकिट एजेंट के बिना, उपयोगकर्ता माउंट नहीं कर सकता है। इसके अलावा, मॉड्यूल fuse.ko माउंट होने के बाद भी लोड नहीं होता है। (मैं थूनर ऑन व्हीजी का उपयोग कर रहा हूं)
टेरेसा ई जूनियर

3
@TeresaeJunior: प्वाइंट (मैंने यहां एक संदर्भ जोड़ा है), हालांकि मुझे नहीं लगता कि पोलकिट मार्ग उपयोगकर्ता की थोड़ी सी चाल के कारण विरोधाभास है - माउंट अभी भी एक निजीकृत माउंट है। GVFS विकिपीडिया पृष्ठ नोट "GVFS FUSE का उपयोग कर सकता है" इसलिए मैं "करता" के बजाय "मई" बनाऊंगा
गोल्डीलॉक्स

1
गनोम विकी से: "फ्यूज सपोर्ट भी है जो एप्लिकेशन को gvfs फाइल सिस्टम तक पहुंचने के लिए जियो का उपयोग नहीं करने देता है।"
टेरेसा ई जूनियर

1
@TeresaeJunior: हाँ, इसलिए वे समवर्ती हैं, FUSE का पतन हो रहा है। बेशक, गनोम केवल डे के आसपास ही नहीं है, लेकिन मुझे यकीन है कि अधिकांश अन्य विभिन्न तरीकों से ग्लिब (जिसमें जियो शामिल हैं) का उपयोग करते हैं। टीबीएच मुझे कभी भी ऑटोमाउंटिंग पसंद नहीं आया, इसलिए मेरे पास इसके बारे में कोई किस्सा नहीं है। वैसे भी, FUSE एक व्यवसायिकता है।
गोल्डीलॉक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.