GUI üzerine montaj “kaputun altında” nasıl çalışır


12

GÜNCELLEME

Lütfen yanılıyorsam beni düzeltin : Bilgisayarımda çalışmak için, Debian adında bir GNU / Linux Dağıtımı ile, bir komut girmenin, bir uygulamayı başlatmanın, bir dosyayı açmanın vb.

  • metin girdiğim bir Komut Satırı Arayüzü
  • Bir Grafiksel Kullanıcı Arayüzü [aka GUI ]: "pencereler" sağlayan bir arayüz, semboller vb

"Pencere Yöneticisi" adında bir şey var. GNU / Linux kullanırken [ X bildiğim kadarıyla] X-Window Sistemi üzerinde çalışıyorum .

resim açıklamasını buraya girin


Orijinal İlan


Durum : /etc/fstabUSB Bellekler için otomatik girişi devre dışı bıraktım [örneğin /dev/sdb1]. Montaj olmasını gerektiren rootbir ya da en azından sudogiriş komut satırında ancak bir pencere yöneticisinde (!) . Demek istediğim automount, bir pencere yöneticisinde "sembolü tıklatmak" herhangi bir soru sormadan GUI'de cihazı açar, CLI bir kök olmalıdır.

Soru : Bir GUI'ye montaj "kaputun altında" nasıl çalışır? configGenel olarak pencere yöneticileri için bir dosya var mı veya bunun bireysel olarak ayarlanması gerekiyor mu?

mountKomutu anlıyorum ve kullanıyorum , nasıl okunacağını ve yapılandırılacağını anladım ve /etc/fstaborada ve ne anlama geldiğini nerelere bakacağını biliyorum /etc/mtab.


1
ayrıca, AFAIK pencere yöneticileri bundan sorumlu değildir ; önemli olan altında çalışan masaüstü ortamının (parçaları). örneğin Awesome GNOME - GNOME, GNOME Shell yerine Awesome kullanarak - ve diskler automount kullanıyorum. ama sadece düz müthiş kullanırsam yapmazlardı. Dürüst olmak gerekirse, ödülünüzü gerçekten anlamıyorum - @ slm'nin cevabı oldukça açık görünüyor.
strugee

2
İlk günlerde arka planda bu hileleri yapan otomatik sayaçtı (kök uçta kullanacağınız hemen hemen aynı mount komutuyla). Şimdi işi yapan GUI ile bütünleşen kendi alt süreçleri var. Slm'nin cevabına bakınız.
Nils

5
Diyerek şöyle devam etti: "[Çeşitli pencere yöneticilerinin] her birinin bunu çözmek için kendi yollarını araması gerektiğine inanmakta zorlanıyorum." -> Bunu asla pencere yöneticisi (WM) yapmaz. Bu var masaüstü ortamı (DE). Hepsinin kendileri yapması gerektiğinde, hepsi de kendileri için bir sürü başka şey yaparlar. Seçim tarafından . Ama mecbur değiller. Örneğin GNOME'un bir GPL lisansı vardır, bu nedenle diğer GPL'd DE isterse GNOME parçalarını kullanabilir.
goldilocks

2
@ tarçın ve MATE gibi goldilocks yaptı.
strugee

2
@strugee: GNOME olduğunu (aslında GIMP içindi) GTK yakın bir tarihsel ilişki ve alt düzey destek kütüphanelerini (vardır geveze GNU de korur ve ben GNOME ve GTK dışına çoğalmıştır olduğuna inanıyoruz). Sanırım neredeyse herkes glib yapar, çok başlıklı, olay güdümlü GUI "kaputun altında" için temel bir çok şey sağlar (sadece: gerçek grafik parçaları değil). GNOME'un temelde glib + gtk + bir windom yöneticisi + bazı uygulamalar olduğunu düşünüyorum.
goldilocks

Yanıtlar:


5

Bu benim durumumu anlamam ama uzman değilim, bu yüzden diğer cevaplardan daha az teknik. Bu sistemleri yıllardır kullandıktan sonra anladığım bu, onları ayrıntılı olarak incelemedim.

Burada üç ana oyuncu var ve aralarında binekleri yönetiyorlar:

  • SİGORTA: Bu, wikipedia sayfasında açıklandığı gibi, her şeyin merkezinde :

    Kullanıcı Alanındaki Dosya Sistemi (FUSE), Unix benzeri bilgisayar işletim sistemleri için, ayrıcalıklı olmayan kullanıcıların çekirdek kodunu düzenlemeden kendi dosya sistemlerini oluşturmalarına olanak tanıyan bir işletim sistemi mekanizmasıdır. Bu, FUSE modülü gerçek çekirdek arabirimlerine yalnızca bir "köprü" sağlarken, kullanıcı alanında dosya sistemi kodu çalıştırılarak gerçekleştirilir.

    Yani, temelde, ayrıcalıklı olmayan kullanıcıların dosya sistemlerini kurmasına izin veren şey budur.

  • gvfs: Gnome masaüstü ortamları ailesinde (Gnome, Mate, Cinnamon içeren), bu (diğer şeylerin yanı sıra) yeni bağlanan sürücüleri otomatik olarak monte edecek bir daemon. Bunu FUSE üzerinden yapar . İnanıyorum (ama yanlış olabilir) KDE ailesinin eşdeğeri KIO olarak adlandırılıyor

    Ana süreçler gvfs(alınan man gvfs):

    • gvfsd - ana gvfs arka plan programı
    • gvfs-fuse-daemon - gvfs'yi bir sigorta dosya sistemi olarak bağlar
    • gvfsd-meta veri - gvfs meta verilerini yazar
  • udev: Bu, yeni aygıtları algılayan ve bağlandıklarında komut dosyalarını / komutları çalıştırmanıza izin veren bir sistemdir. Örneğin, udevyeni bir ekran algılar ve masaüstünüzü ona yansıtabilir:

    udev Linux çekirdeği için bir aygıt yöneticisidir. Öncelikle, / dev içindeki aygıt düğümlerini yönetir. Devfs ve hotplug'un ardılıdır, yani / dev dizinini ve aygıt yazılımı yükü de dahil olmak üzere aygıt eklerken / kaldırırken tüm kullanıcı alanı eylemlerini işler.

    Özellikle, udisk tabanlı bir ses monitörü olan gvfsişe yarıyor gibi görünüyor gvfs-udisks2-volume-monitor. udisksancak kendisi buna dayanır udev(bkz. man 7 udisks).

Yani, temelde ("korkunç sadeleştirme" yi okuyun) olan şey, sürücünüzü bağladığınızda, udevonu algılar ve gvfsdaha sonra bir SİGORTA cihazı olarak monte edecek olan daemon'u uyarır .

SİGORTA ve udevtüm masaüstü ortamları için aynı olacak, değişiklikleri izleyen udevve FUSE dosya sistemi olarak sürücüyü bağlayan DE arka plan programı .


1
Udev, gvfs ve diğer her şey arasındaki boşlukları doldurarak D-bus'ı yerleştirin.
13:29, Braiam

Gvfs ile ilgili bilgileri güncellemek isteyebilirsiniz. GIO'ya taşınıyorlar.
Braiam

8

Pencereleme ortamınıza (GNOME / KDE / vb.) Bağlıdır, ancak GNOME'da, örneğin, çalışan cinlerin çalıştığını göreceksiniz gvfs-*-volume-monitor. Bu artalanlar, masaüstü ortamını çalıştırırken cihazları monte etmekten sorumludur, hiçbir ilgileri yoktur /etc/fstabve tamamen bağımsız çalışırlar.

Bir yapılandırma dosyası olarak, bununla ilgili, DE'yi çalıştıran kullanıcının ana dizininde yaşayan bazı dosyalar vardır $HOME/.local/share/gvfs-metadata.

Bu U&L Soru & Cevap başlıklı: gvfs nedir ve neden sistemimde olmasını istiyorum? , GVFS'nin ne olduğunu açıklamaya çalışır. Bunu açıklamak iyi bir iş çıkarıyor. Ama bence gerçekten sorduğunuz şey şu U&L Soru-Cevap başlığı altında ele alındı: USB diskleri otomatik olarak takma (Nasıl çalışır) .


Cevap şu şekilde HAL… Görünüşe göre thunar[kullandığım] vb. İçin bazı çözümler buldum . Makale bir yönü gösterdi - bunun için teşekkürler! - ama hala ortak bir payda arıyorum ...
erch

IIRC DE'nin FUSE (Kullanıcı Alanı'ndaki Dosya Sistemi) kullandığından root'a ihtiyacı yoktur.
Strugee

@strugee DE'nin Masaüstü ortamı anlamına geldiğini tahmin ederek, SİGORTA'ya bakmalıyım. Bir ipucun var mı, nerede?
erch

@chirp FUSE Wikipedia'da arama: en.wikipedia.org/wiki/FUSE bu, IIRC. ve slm zaten cevap verdi. cevap, pencere yöneticisi değil masaüstü ortamının otomatik sayma işlemidir.
strugee

2
@chirp - Buraya bakın: bbs.archlinux.org/viewtopic.php?id=95509 . HAL kullanımdan kaldırıldı, en.wikipedia.org/wiki/HAL_(software) . UDEV, ileride yerini alacaktır: en.wikipedia.org/wiki/Udev
slm

8

Basit cevap hile yapmak. Onlar kullanmazlar fstab. udevEkleme olaylarını yakalamak, diski manuel olarak monte etmek için bir kanca kullanırlar root; bu, dbusdosya yöneticinize yeni bir diskiniz olduğunu bildirmek için geçebilir veya bağlantıyı kesmek suidyerine yardımcı programları kullanabilir dbus. Ne yazık ki bunun için standart yapılandırma seçenekleri yoktur ve masaüstü hareketi karmaşıklığı gizlediğine inandığından, bunu kullanıcı belgelerinde, yalnızca geliştirici belgelerinde belgelemezler ve USB sürücülerinin yalnızca X sunucusuna giriş yapan ilk kullanıcı.


EVET! Aradığım şey bu. Yeni başlayan olarak, nereden bakmaya başlayacağımı sormak istiyorum, erm: Bu davranışı izlemek için "nereden başlayacağım" [herhangi bir ipucu bana yardımcı olmaktan yardım eder; bir başlangıç ​​noktası ya da çok yardımcı olur]
erch

2
@chirp udev (7) ve /etc/udev/rules.d/* bakmak keşfetmeye başlamak için
Hildred

5

PolicyKit (veya Polkit), ayrıcalıksız işlemlerin ayrıcalıklı işlemlerle konuşmasına izin veren ilkeyi tanımlamak ve işlemek için uygulama düzeyinde bir araç setidir .

Ayrıcalıklı olmayan (masaüstü) uygulamalar için ayrıcalıklı işlemlere (Mount () yöntemini çağırmak gibi) erişim izni verme konusunda karar verme sürecinin merkezileştirilmesi için bir çerçevedir.

Bir oturum kullanıcısının, oturum kullanıcısının gerçekten kullanıcı (kullanıcı olarak kimlik doğrulaması yaparak) veya bir yönetici kullanıcı (yönetici olarak kimlik doğrulaması yaparak) olduğunu kanıtlamasını sağlamak için bir kimlik doğrulama aracısı kullanılır.

GVFS , çöp desteği ile birlikte yerel ve uzak dosya sistemlerini kullanıcı olarak monte etmeyi sağlayan sanal bir dosya sistemidir . Ayrıca GIO kullanmayan uygulamaların GVFS dosya sistemlerine erişmesine izin veren FUSE desteği de vardır, ancak çoğu DE, bilgisayarı hazırda bekletme ve kapatma ve NetworkManager için başka şeyler için Policykit aracılığıyla kimlik doğrulaması yapar, bu nedenle FUSE kullanın.

İki bölümden oluşur:

  1. GIO'yu destekleyen uygulamalar tarafından yüklenen paylaşılan bir kütüphane;
  2. GVFS'nin kendisi, D-Bus üzerinden birbirleriyle ve GIO modülüyle iletişim kuran cinlerden oluşan bir koleksiyon içerir.

Polkit kuralları için polkit-gnome ile birlikte gvfs paketinin kurulması gerekir. Bir grafik kimlik doğrulama aracının kurulu ve otomatik olarak başlatılmış olduğundan emin olun.

Ayrıcalıkları yönetmek için yapılandırma dosyaları her dağıtım için farklı olmalıdır. Arch Wiki, altında bir dosya oluşturmanızı söyler /usr/share/polkit-1/rules.d/. Debian'da bulunurlar /etc/polkit-1/.

Kaynaklar: Debian Üzerine Politika Kiti || Arch Wiki'de Polkit || Wiki'de GVFS || GNOME Wiki'de GVFS!


GIO'nun GObject Introspection'ı temsil ettiğinden emin misiniz? Öyleyse GOI olarak adlandırılacağını düşünürdüm. Gnome halkı buna GI diyor . GIO'nun ismiyle ilgili başka bir açıklama bulamadım, ancak GI ile aynı görünmüyor .
terdon

@terdon O strugee (üzerinde revizyon 10 tarafından bir düzenleme aslında unix.stackexchange.com/posts/101951/revisions ). Çıkarılıyor ...
Teresa e Junior

4

Aradığınız yaygın bir elementtir FUSE , örneğin GNOME'un gvfs, kaputun altında bunu kullanır. 1 Bu çekirdek ile arayüz ve ben linux tüm ayrıcalıklı (otomatik) montaj sistemleri için ortak olduğuna inanıyorum [ama bkz. Yorumlar]. Bireysel DE'ler kendi çekirdek sürümlerini oluşturmazlar, çünkü çekirdek düzeltme ekleri gerektirir.

Bu ana sayfa bağlantısı aslında modası geçmiş, çünkü burada belirtildiği gibi , FUSE birkaç yıl önce resmi çekirdeğin bir parçası oldu, ancak projenin kökenlerini ve amaçlarını açıklıyor (sadece ayrıcalıklı montaj için değil).

Çeşitli sistemlerin bunun ötesinde tarzda sapmalarının nedeni, çeşitli masaüstü ortamlarına sahip olmanızın nedenidir: GUI'nin nasıl / ne olması gerektiğine dair farklı vizyonları temsil eder. Kullanıcı arayüzünün biçim ve işleviyle ilgileniyorlar, ancak FUSE gerçek montaj ve çekirdek seviyesi işlerini yapıyor. FUSE ürününün "otomatik" bölümü gerçekten yapmadığını, daha çok "ayrıcalıklı" bölümle ilgili olduğunu, ancak otomatik bölümün oldukça basit olduğunu unutmayın: tek yapmanız gereken anket, örn /dev. Bu şekilde çalışan bir montaj uygulaması yazdım; sadece yeni düğümlerin görünümünü izler. 2 Bu kısım belki de C ++ 'dan yüz satır kadar. Kolay-bezelye - bu düzeyde ortak bir API'ye gerçek bir ihtiyaç yoktur.

1 Veya gerçekten ayrıcalıklı olmayan bir montaj yapıyorsa yapabilirsiniz. Teresa'nın cevabı, normal bineklere erişime izin vermek için daha yeni yaklaşımları kapsayabilir.

2 Yüce gözlemler olarak, udev geri çağrıları daha iyi, daha az hackleme yöntemi olacaktır.


Sanırım "ana sayfa" demek istedim ve yazım hatası kaybolduktan sonra bu yorumu sileceğim;) Bu arada, her zaman olduğu gibi harika bir cevap!
erch

1
Cevaplarımız birbiriyle çelişiyor gibi göründüğü için bazı testler yaptım. En azından Debian'da, aktif bir Polkit aracısı olmadan, kullanıcı bağlanamaz. Ayrıca, monte edildikten sonra bile fuse.ko modülü yüklenmiyor. (Wheezy'de Thunar kullanıyorum)
Teresa e Junior

3
@TeresaeJunior: Nokta (buraya bir referans ekledim), ancak polkit yolu bir kullanıcı alanı hilesi olduğu için bir çelişki olduğunu düşünmüyorum - mount hala ayrıcalıklı bir mount. GVFS wikipedia sayfası notları "GVFS FUSE kullanabilir" bu yüzden "yapar" yerine "olabilir" yapacağım.
goldilocks

1
GNOME Wiki'den: "Ayrıca gio kullanmayan uygulamaların gvfs dosya sistemlerine erişmesine izin veren sigorta desteği de var."
Teresa e Junior

1
@TeresaeJunior: Evet, yani eşzamanlılar, FUSE bir yedek. Tabii ki, GNOME etraftaki tek DE değil, ama diğerlerinin çoğunun çeşitli yollarla glib (gio içeren) kullandığından eminim. TBH Otomatik saymayı hiç sevmedim, bu yüzden bu konuda herhangi bir fıkra yok. Her neyse, FUSE bir olasılıktır.
goldilocks
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.