Bagaimana cara pemasangan pada GUI bekerja "di bawah kap"


12

MEMPERBARUI

Tolong perbaiki saya jika saya salah : Untuk mengerjakan komputer saya, dengan Distribusi GNU / Linux bernama Debian, saya tahu dua cara untuk memasukkan perintah, memulai aplikasi, membuka file, dll .:

  • sebuah Command Line Interface di mana saya memasukkan teks
  • a Graphical User Interface [alias GUI ]: antarmuka yang menyediakan "windows", simbol dll.

Ada sesuatu yang terjadi dengan nama "Window Manager". Ketika saya menggunakan GNU / Linux, saya bekerja pada Sistem X-Window [sejauh yang saya tahu].

masukkan deskripsi gambar di sini


Posting Asli


Situasi : Saya menonaktifkan automount /etc/fstabuntuk USB Stick [misalnya /dev/sdb1]. Pemasangan harus root, atau setidaknya sudoentri pada baris perintah tetapi tidak di manajer jendela (!) . saya tidak bermaksudautomount , saya "mengklik simbol" di window manager membuka perangkat pada GUI tanpa pertanyaan, di mana pada CLI yang harus di-root.

Pertanyaan : Bagaimana cara pemasangan di GUI berfungsi "di bawah tenda"? Apakah ada configfile untuk window manager secara umum atau apakah seseorang harus mengatur ini secara individual?

Saya mengerti dan menggunakan mountperintah, saya pikir untuk memahami cara membaca dan mengkonfigurasi /etc/fstabdan tahu di mana harus mencari apa entri di sana dan dalam /etc/mtabarti.


1
juga, manajer jendela AFAIK tidak bertanggung jawab untuk ini; yang penting adalah lingkungan desktop yang berjalan di bawahnya. misalnya saya menggunakan Awesome GNOME - GNOME menggunakan Awesome alih-alih GNOME Shell - dan automount disk. tetapi mereka tidak akan melakukannya jika saya hanya menggunakan Awesome biasa. sejujurnya, saya tidak begitu mengerti karunia Anda - jawaban @ slm sepertinya cukup jelas.
strugee

2
Pada hari-hari awal itu adalah automounter yang melakukan trik-trik ini di latar belakang (dengan hampir semua mount-command yang akan Anda gunakan pada root-cli). Sekarang ada sub-proses sendiri yang terintegrasi dengan GUI yang melakukan pekerjaan. Lihat jawabannya dari slm.
Nils

5
"Saya merasa sulit untuk percaya bahwa masing-masing dan setiap [berbagai manajer jendela] harus mencari cara mereka sendiri untuk menyelesaikan ini." -> Tidak pernah window manager (WM) yang melakukan ini. Ini lingkungan desktop (DE). Adapun mereka semua harus melakukannya sendiri, well, mereka semua melakukan banyak hal untuk diri mereka sendiri juga. Karena pilihan . Tetapi mereka tidak harus melakukannya. GNOME, misalnya, memiliki lisensi GPL, sehingga DE GPL lain hanya dapat menggunakan bagian GNOME, jika mereka mau.
goldilocks

2
@goldilocks yang dilakukan oleh Cinnamon dan MATE.
strugee

2
@ strugee: GNOME memiliki hubungan historis yang dekat dengan GTK (yang semula untuk GIMP), dan libs dukungan level bawah ( glib ) yang lebih rendah yang dipertahankan oleh GNU dan saya percaya diperbanyak dari GNOME dan GTK. Saya kira hampir semua orang membuat glib, ia menyediakan banyak hal mendasar untuk multi-tasking, GUI yang dikendalikan oleh peristiwa "di bawah tenda" (hanya: bukan bagian grafis yang sebenarnya). Saya pikir GNOME pada dasarnya glib + gtk + manajer windom + beberapa aplikasi.
goldilocks

Jawaban:


5

Ini adalah pemahaman saya tentang situasinya, tetapi saya bukan ahli sehingga kurang teknis daripada jawaban lainnya. Inilah yang saya mengerti setelah menggunakan sistem ini selama bertahun-tahun, saya belum mempelajarinya secara detail.

Ada tiga pemain utama di sini dan di antara mereka mereka mengelola tunggangan:

  • FUSE: Ini adalah pusat dari segalanya, seperti yang dijelaskan di halaman wikipedia -nya :

    Filesystem di Userspace (FUSE) adalah mekanisme sistem operasi untuk sistem operasi komputer mirip Unix yang memungkinkan pengguna yang tidak memiliki hak istimewa membuat sistem file mereka sendiri tanpa mengedit kode kernel. Ini dicapai dengan menjalankan kode sistem file di ruang pengguna sementara modul FUSE hanya menyediakan "jembatan" ke antarmuka kernel yang sebenarnya.

    Jadi, pada dasarnya, inilah yang memungkinkan pengguna yang tidak memiliki hak untuk me-mount sistem file.

  • gvfs: Dalam keluarga Gnome lingkungan desktop (yang mencakup Gnome, Mate, Cinnamon), ini adalah (antara lain) daemon yang secara otomatis akan memasang drive yang baru terhubung. Ia melakukannya melalui FUSE. Saya percaya (tapi mungkin juga salah) yang setara untuk keluarga KDE disebut KIO

    Proses utama gvfsadalah (diambil dari man gvfs):

    • gvfsd - daemon gvfs utama
    • gvfs-fuse-daemon - mount gvfs sebagai sistem file sekering
    • gvfsd-metadata - menulis gvfs metadata
  • udev: Ini adalah sistem yang mendeteksi perangkat baru dan memungkinkan Anda untuk menjalankan skrip / perintah ketika mereka terhubung. Misalnya, udevyang mendeteksi layar baru dan dapat mencerminkan desktop Anda di atasnya:

    udev adalah manajer perangkat untuk kernel Linux. Terutama, ia mengelola node perangkat di / dev. Ini adalah penerus dari devfs dan hotplug, yang berarti ia menangani direktori / dev dan semua aksi ruang pengguna saat menambah / menghapus perangkat, termasuk memuat firmware.

    Secara khusus, gvfstampaknya bekerja melalui gvfs-udisks2-volume-monitoryang merupakan monitor volume berbasis udisks. udisksitu sendiri bagaimanapun, bergantung pada udev(lihat man 7 udisks).

Jadi, pada dasarnya (baca "penyederhanaan mengerikan") yang terjadi adalah ketika Anda menghubungkan drive Anda, udevmendeteksi dan mengingatkan gvfsdaemon yang kemudian akan memasangnya sebagai perangkat FUSE.

FUSE dan udevakan sama untuk semua lingkungan desktop, perubahan apa adalah daemon DE yang memonitor udevdan memasang drive sebagai sistem file FUSE.


1
Masukkan D-bus untuk mengisi celah antara udev, gvfs dan yang lainnya.
Braiam

Anda mungkin ingin memperbarui informasi tentang gvfs. Mereka pindah ke GIO.
Braiam

8

Itu tergantung pada lingkungan windowing Anda (GNOME / KDE / dll.) Tetapi dalam GNOME, misalnya, Anda akan melihat daemon yang menjalankan dipanggil gvfs-*-volume-monitor,. Daemon ini bertanggung jawab untuk memasang perangkat saat menjalankan lingkungan desktop, mereka tidak ada hubungannya /etc/fstab, dan beroperasi sepenuhnya secara independen.

Sejauh file konfigurasi, ada beberapa file yang terkait dengan ini yang tinggal di direktori home pengguna yang menjalankan DE $HOME/.local/share/gvfs-metadata,.

U&L T&J ini berjudul: Apa itu gvfs dan mengapa saya harus menginginkannya di sistem saya? , mencoba menjelaskan apa itu GVFS. Itu pekerjaan yang OK untuk menjelaskannya. Tapi saya pikir apa yang sebenarnya Anda tanyakan lebih ditanggulangi oleh U&L T&J berjudul: Memasang disk USB secara otomatis (Cara kerjanya) .


Jawabannya sepertinya ada di HAL... Saya menemukan beberapa solusi untuk thunar[yang saya gunakan] dll. Artikel menunjuk ke arah - terima kasih untuk itu! - tapi saya masih mencari penyebut bersama ...
erch

IIRC DE tidak perlu root karena menggunakan FUSE (Filesystem in User Space).
strugee

@ strugee menebak bahwa DE berarti lingkungan Desktop, saya harus mencari di FUSE. Apakah Anda punya petunjuk, di mana?
erch

@chirp mencari FUSE di Wikipedia: en.wikipedia.org/wiki/FUSE, IIRC. dan slm sudah menjawab. jawabannya adalah lingkungan desktop, bukan window manager, yang melakukan penghitungan otomatis.
strugee

2
@chirp - Lihat di sini: bbs.archlinux.org/viewtopic.php?id=95509 . HAL telah ditinggalkan, en.wikipedia.org/wiki/HAL_(software) . UDEV adalah penggantinya: en.wikipedia.org/wiki/Udev
slm

8

Jawaban sederhana adalah mereka curang. Mereka tidak menggunakan fstab. Mereka biasanya menggunakan udevpengait untuk menangkap peristiwa penyisipan, memasang disk secara manual root, yang dapat diteruskan ke dbusuntuk memberi tahu manajer file Anda bahwa Anda memiliki disk baru atau mereka mungkin menggunakan suidutilitas alih-alih dbusuntuk melepas pemasangan. Sayangnya tidak ada opsi konfigurasi standar untuk ini, dan karena gerakan desktop percaya pada penyembunyian kompleksitas mereka tidak mendokumentasikan ini dalam dokumentasi pengguna, hanya dalam dokumentasi pengembang, dan mereka menganggap sistem pengguna tunggal sehingga drive USB hanya berfungsi untuk pengguna pertama yang masuk ke server X.


IYA! Ini lebih dari apa yang saya cari. Sebagai pemula, saya ingin bertanya di mana harus mulai mencari, erm: "Di mana saya mulai" untuk melacak perilaku ini [setiap petunjuk akan membantu saya dari tersesat; titik awal atau lebih akan sangat membantu]
erch

2
@chirp untuk mulai menjelajahi lihat udev (7) dan /etc/udev/rules.d/*
hildred

5

PolicyKit (atau Polkit) adalah toolkit tingkat aplikasi untuk mendefinisikan dan menangani kebijakan yang memungkinkan proses yang tidak terjangkau berbicara dengan proses yang diistimewakan .

Ini adalah kerangka kerja untuk memusatkan proses pengambilan keputusan sehubungan dengan pemberian akses ke operasi istimewa (seperti memanggil metode Mount ()) untuk aplikasi (desktop) yang tidak memiliki hak pribadi.

Agen otentikasi digunakan untuk membuat pengguna sesi membuktikan bahwa pengguna sesi benar-benar pengguna (dengan mengotentikasi sebagai pengguna) atau pengguna administratif (dengan mengotentikasi sebagai administrator).

GVFS adalah sistem file virtual yang memungkinkan pemasangan sistem file lokal dan jarak jauh sebagai pengguna bersama dengan dukungan tempat sampah. Ada juga dukungan FUSE yang memungkinkan aplikasi tidak menggunakan GIO untuk mengakses sistem file GVFS, tetapi sebagian besar DE melakukan otentikasi melalui Policykit untuk hal-hal lain juga, seperti hibernasi dan mematikan komputer, dan untuk NetworkManager, sehingga mereka tidak perlu gunakan FUSE.

Ini terdiri dari dua bagian:

  1. Pustaka bersama yang dimuat oleh aplikasi yang mendukung GIO;
  2. GVFS sendiri, yang berisi koleksi daemon yang berkomunikasi satu sama lain dan modul GIO melalui D-Bus.

Paket gvfs perlu diinstal, bersama dengan polkit-gnome untuk aturan polkit. Pastikan agen autentikasi grafis diinstal dan autostarted.

File konfigurasi untuk mengelola hak istimewa harus berbeda untuk setiap distribusi. Arch Wiki memberitahu Anda untuk membuat file di bawah /usr/share/polkit-1/rules.d/. Di Debian, mereka berlokasi di /etc/polkit-1/.

Sumber: Policykit tentang Debian || Polkit di Arch Wiki || GVFS di Arch Wiki || GVFS di Wiki GNOME!


Apakah Anda yakin GIO singkatan dari GObject Introspection? Saya akan berpikir itu akan disebut GOI jika demikian. Orang-orang Gnome tampaknya menyebutnya GI . Saya belum menemukan penjelasan lain tentang nama GIO tetapi sepertinya tidak sama dengan GI.
terdon

@terdon Itu sebenarnya edit oleh strugee (revisi 10 di unix.stackexchange.com/posts/101951/revisi ). Menghapusnya ...
Teresa e Junior

4

Satu elemen umum yang Anda cari adalah FUSE , gvfs GNOME, misalnya, menggunakannya di bawah tenda. 1 ini adalah antarmuka dengan kernel, dan saya percaya itu adalah umum untuk semua unprivileged (auto) sistem pada linux pemasangan [tapi lihat komentar]. Masing-masing DE tidak akan membuat versi mereka sendiri karena hal ini membutuhkan patching kernel.

Tautan beranda itu sebenarnya sudah ketinggalan zaman, karena seperti yang disebutkan di sini , FUSE menjadi bagian dari kernel resmi beberapa tahun yang lalu, tetapi itu menggambarkan asal-usul dan tujuan proyek (itu bukan hanya untuk pemasangan yang tidak terbatas).

Alasan berbagai sistem mungkin menyimpang dengan gaya di luar ini adalah alasan yang sama Anda memiliki berbagai lingkungan desktop: mereka mewakili visi yang berbeda tentang bagaimana / apa GUI seharusnya. Mereka menangani bentuk dan fungsi antarmuka pengguna, tetapi FUSE melakukan hal-hal tingkat pemasangan dan kernel yang sebenarnya. Perhatikan bahwa FUSE tidak benar-benar melakukan bagian "auto", ini lebih tentang bagian "unprivileged", tetapi bagian auto cukup sederhana: yang harus Anda lakukan adalah polling, misalnya /dev,. Saya telah menulis aplikasi pemasangan yang berfungsi seperti ini; itu hanya mengamati munculnya node baru. 2 Bagian itu mungkin seratus baris atau lebih dari C ++. Peasy mudah - tidak perlu API umum pada tingkat itu.

1 Atau bisa, jika melakukan mount yang benar-benar tidak terjangkau. Jawaban Teresa mungkin mencakup pendekatan yang lebih baru untuk memungkinkan akses ke tunggangan normal.

2 Seperti yang diamati oleh hildred, panggilan balik udev akan menjadi metode hack yang lebih baik dan lebih sedikit.


Saya kira Anda maksud "beranda" dan saya akan menghapus komentar ini setelah kesalahan ketik hilang;) Omong-omong, seperti biasa, omong-omong!
erch

1
Karena jawaban kami tampaknya saling bertentangan, saya melakukan beberapa tes. Setidaknya di Debian, tanpa agen Polkit aktif, pengguna tidak dapat memasang. Juga, modul fuse.ko tidak dimuat bahkan setelah saya mount. (Saya menggunakan Thunar on Wheezy)
Teresa e Junior

3
@TeresaeJunior: Point (saya telah menambahkan referensi ke sini), meskipun saya tidak berpikir ada kontradiksi karena rute polkit adalah sedikit dari trik userspace - mount masih merupakan mount yang diprioritaskan. Halaman wikipedia GVFS mencatat "GVFS dapat menggunakan FUSE" jadi saya akan membuatnya "mungkin" alih-alih "tidak".
goldilocks

1
Dari Wiki GNOME: "Ada juga dukungan sekering yang memungkinkan aplikasi tidak menggunakan gio untuk mengakses sistem file gvfs."
Teresa e Junior

1
@TeresaeJunior: Ya, jadi mereka bersamaan, FUSE menjadi fallback. Tentu saja, GNOME bukan satu-satunya DE di sekitar, tetapi saya yakin sebagian besar yang lain menggunakan glib (yang mencakup gio) dengan berbagai cara. TBH Saya tidak pernah menyukai automounting, jadi saya tidak punya anekdot tentang itu. Bagaimanapun, FUSE adalah suatu kemungkinan.
goldilocks
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.