การติดตั้งบน GUI ทำงานอย่างไร "ภายใต้ประทุน"


12

UPDATE

กรุณาแก้ไขให้ฉันถ้าฉันผิด : สำหรับการทำงานกับคอมพิวเตอร์ของฉันด้วยการกระจาย GNU / Linux ชื่อ Debian ฉันรู้สองวิธีในการป้อนคำสั่งเริ่มแอปพลิเคชันเปิดไฟล์ ฯลฯ :

  • บรรทัดคำสั่งอินเตอร์เฟซที่ฉันป้อนข้อความ
  • Graphical User Interface [aka GUI ]: อินเตอร์เฟซที่ให้บริการ "หน้าต่าง" สัญลักษณ์ ฯลฯ

มีบางอย่างเกิดขึ้นในชื่อ "Window Manager" เมื่อฉันใช้ GNU / Linux ฉันทำงานบนระบบX-Window [เท่าที่ฉันรู้]

ป้อนคำอธิบายรูปภาพที่นี่


โพสต์ต้นฉบับ


สถานการณ์ : ฉันปิดใช้งานการเมานท์อัตโนมัติ/etc/fstabสำหรับ USB Sticks [เช่น/dev/sdb1] การติดตั้งจะต้องเป็นrootหรืออย่างน้อยsudoรายการในบรรทัดคำสั่ง แต่ไม่ได้อยู่ในผู้จัดการหน้าต่าง (!) ฉันไม่ได้หมายความว่าautomountฉันหมายถึง "การคลิกที่สัญลักษณ์" ในเครื่องมือจัดการหน้าต่างเปิดอุปกรณ์บน GUI โดยไม่มีคำถามใด ๆ ซึ่งใน CLI หนึ่งต้องเป็นรูท

คำถาม : การติดตั้งใน GUI ทำงานอย่างไร "ภายใต้ประทุน" มีconfigไฟล์สำหรับตัวจัดการหน้าต่างโดยทั่วไปหรือต้องตั้งค่าแยกกันหรือไม่?

ฉันเข้าใจและใช้mountคำสั่งฉันคิดว่าจะเข้าใจวิธีการอ่านและกำหนดค่า/etc/fstabและรู้ว่าจะดูสิ่งที่รายการมีและใน/etc/mtabค่าเฉลี่ย


1
นอกจากนี้ผู้จัดการหน้าต่าง AFAIK จะไม่รับผิดชอบในเรื่องนี้ สิ่งสำคัญคือสภาพแวดล้อมเดสก์ท็อป (บางส่วน) กำลังทำงานภายใต้ เช่นฉันใช้ Awesome GNOME - GNOME โดยใช้ Awesome แทน GNOME Shell - และดิสก์อัตโนมัติ แต่พวกเขาจะไม่ถ้าฉันใช้ธรรมดาที่น่ากลัว ฉันไม่เข้าใจความโปรดปรานของคุณจริงๆ - คำตอบของ @ slm นั้นค่อนข้างชัดเจน
strugee

2
ในวันแรก ๆ นั้นผู้จัดทำออโตเมติกกำลังทำเทคนิคเหล่านี้ในพื้นหลัง ขณะนี้มีกระบวนการย่อยของตัวเองที่ทำงานร่วมกับ GUI ที่ทำงานได้ ดูคำตอบจาก slm
นิลส์

5
"ฉันพบว่ามันยากที่จะเชื่อว่าแต่ละคนใน [ผู้จัดการหน้าต่างต่าง ๆ ] จะต้องมองหาวิธีของพวกเขาในการแก้ไขปัญหานี้" -> มันไม่เคยเป็น window manager (WM) ที่ทำเช่นนี้ มันเป็นสภาพแวดล้อมเดสก์ทอป (DE) สำหรับพวกเขาทุกคนต้องทำมันด้วยตัวเองพวกเขาทั้งหมดทำสิ่งต่าง ๆ มากมายสำหรับพวกเขาเช่นกัน โดยสมัครใจ แต่พวกเขาไม่จำเป็นต้อง ตัวอย่างเช่น GNOME มีใบอนุญาต GPL ดังนั้น GPL อื่น ๆ DE ก็สามารถใช้ส่วน GNOME ได้หากต้องการ
goldilocks

2
@ goldilocks ซึ่งเช่นอบเชยและ MATE ได้
strugee

2
@strugee: GNOME มีความสัมพันธ์ทางประวัติศาสตร์ใกล้เคียงกับ GTK (ซึ่งเดิมเป็น GIMP) และ libs สนับสนุนระดับล่าง ( glib ) ที่ GNU รักษาไว้และฉันเชื่อว่ามีการแพร่กระจายออกจาก GNOME และ GTK ฉันเดาว่าเกือบทุกคนทำจาก glib มันมีหลายสิ่งพื้นฐานสำหรับการทำงานแบบมัลติทาสกิ้ง GUI ที่ขับเคลื่อนด้วยเหตุการณ์ "ภายใต้ประทุน" (แค่: ไม่ใช่ส่วนกราฟิกที่แท้จริง) ฉันคิดว่า GNOME เป็นพื้นฐานของ glib + gtk + ผู้จัดการ windom + บางแอปพลิเคชัน
goldilocks

คำตอบ:


5

นี่คือความเข้าใจของฉันเกี่ยวกับสถานการณ์ แต่ฉันไม่ใช่ผู้เชี่ยวชาญดังนั้นจึงเป็นเรื่องทางเทคนิคน้อยกว่าคำตอบอื่น ๆ นี่คือสิ่งที่ฉันเข้าใจหลังจากใช้ระบบเหล่านี้เป็นเวลาหลายปีฉันยังไม่ได้ศึกษาในรายละเอียดใด ๆ

มีผู้เล่นหลักสามคนที่นี่และระหว่างพวกเขาจัดการการติดตั้ง:

  • FUSE: นี่คือศูนย์กลางของทุกสิ่งตามที่อธิบายไว้ในหน้าวิกิพีเดีย :

    ระบบไฟล์ใน Userspace (FUSE) เป็นกลไกของระบบปฏิบัติการสำหรับระบบปฏิบัติการคอมพิวเตอร์แบบ Unix ที่ให้ผู้ใช้ที่ไม่มีสิทธิพิเศษสร้างระบบไฟล์ของตัวเองโดยไม่ต้องแก้ไขรหัสเคอร์เนล สิ่งนี้สามารถทำได้โดยการเรียกใช้รหัสระบบไฟล์ในพื้นที่ของผู้ใช้ในขณะที่โมดูล FUSE ให้ "บริดจ์" กับอินเตอร์เฟสเคอร์เนลจริง

    ดังนั้นโดยทั่วไปนี่คือสิ่งที่ช่วยให้ผู้ใช้ที่ไม่มีสิทธิ์ติดตั้งระบบไฟล์

  • gvfs: ในตระกูล Gnome ของสภาพแวดล้อมเดสก์ท็อป (ซึ่งรวมถึง Gnome, Mate, Cinnamon) นี่คือ daemon (เหนือสิ่งอื่นใด) ที่จะติดตั้งไดรฟ์ที่เชื่อมต่อใหม่โดยอัตโนมัติ มันทำได้ผ่านทาง FUSE ฉันเชื่อว่า (แต่อาจผิดก็ได้) ความเทียบเท่าสำหรับตระกูล KDE นั้นเรียกว่าKIO

    กระบวนการหลักของgvfsคือ (นำมาจากman gvfs):

    • gvfsd - gvfs หลัก
    • gvfs-fuse-daemon - เมานต์ gvfs เป็นระบบไฟล์ฟิวส์
    • gvfsd-metadata - เขียนข้อมูลเมตา gvfs
  • udev: นี่คือระบบที่ตรวจจับอุปกรณ์ใหม่และช่วยให้คุณสามารถเรียกใช้สคริปต์ / คำสั่งเมื่อพวกเขาเชื่อมต่อ ตัวอย่างเช่นมันudevตรวจจับหน้าจอใหม่และสามารถทำมิเรอร์เดสก์ท็อปของคุณ:

    udev เป็นตัวจัดการอุปกรณ์สำหรับเคอร์เนล Linux ในขั้นต้นมันจัดการโหนดอุปกรณ์ใน / dev เป็นตัวตายตัวแทนของ devfs และ hotplug ซึ่งหมายความว่าจะจัดการกับไดเร็กทอรี / dev และการดำเนินการพื้นที่ผู้ใช้ทั้งหมดเมื่อเพิ่ม / ลบอุปกรณ์รวมถึงโหลดเฟิร์มแวร์

    โดยเฉพาะอย่างgvfsดูเหมือนว่าจะทำงานที่ผ่านgvfs-udisks2-volume-monitorซึ่งเป็นจอแสดงผลปริมาณ udisks ตาม udisksอย่างไรก็ตามตัวมันเองอาศัยudev(ดูman 7 udisks)

ดังนั้นโดยทั่วไป (อ่าน "การทำให้เข้าใจง่ายอย่างน่ากลัว") สิ่งที่เกิดขึ้นคือเมื่อคุณเชื่อมต่อไดรฟ์ของคุณudevตรวจพบและแจ้งเตือนgvfsภูตซึ่งจะติดตั้งมันเป็นอุปกรณ์ FUSE

FUSE และudevจะเหมือนกันสำหรับสภาพแวดล้อมเดสก์ท็อปทั้งหมดสิ่งที่เปลี่ยนแปลงคือ DE daemon ที่ตรวจสอบudevและเมาท์ไดรฟ์เป็นระบบไฟล์ FUSE


1
ใส่ D-bus เพื่อเติมช่องว่างระหว่าง udev, gvfs และทุกอย่างอื่น
Braiam

คุณอาจต้องการอัปเดตข้อมูลเกี่ยวกับ gvfs พวกเขากำลังจะย้ายไปที่ GIO
Braiam

8

ขึ้นอยู่กับสภาพแวดล้อมในหน้าต่างของคุณ (GNOME / KDE / ฯลฯ ) แต่ใน GNOME คุณจะเห็น daemons ที่เรียกใช้gvfs-*-volume-monitorอยู่ daemons เหล่านี้มีหน้าที่ในการติดตั้งอุปกรณ์เมื่อใช้สภาพแวดล้อมเดสก์ท็อปพวกเขาไม่มีส่วนเกี่ยวข้อง/etc/fstabและดำเนินการอย่างอิสระอย่างสมบูรณ์

เท่าที่ไฟล์ config มีบางไฟล์ที่เกี่ยวข้องกับการนี้ที่อาศัยอยู่ในไดเรกทอรีบ้านของผู้ใช้ที่กำลังเรียกใช้ $HOME/.local/share/gvfs-metadataDE,

คำถาม & คำตอบ U & L นี้: gvfs คืออะไรและเพราะเหตุใดฉันจึงต้องการมันในระบบของฉัน พยายามอธิบายว่า GVFS คืออะไร มันทำงานได้ดีในการอธิบาย แต่ผมคิดว่าสิ่งที่คุณกำลังจริงๆขอเกี่ยวกับการแก้ไขเพิ่มเติมตามนี้ U & L Q & A หัวข้อ: การติดตั้งดิสก์ USB โดยอัตโนมัติ (วิธีการทำงาน)


ดูเหมือนว่าคำตอบจะอยู่ในHAL... ฉันพบวิธีแก้ปัญหาสำหรับthunar[ที่ฉันใช้] ฯลฯ บทความที่ชี้ไปในทิศทาง - ขอบคุณสำหรับสิ่งนั้น! - แต่ฉันยังคงมองหาตัวหารร่วม ...
erch

IIRC DE ไม่ต้องการรูทเนื่องจากใช้ FUSE (ระบบไฟล์ในพื้นที่ผู้ใช้)
strugee

@strugee คาดเดาว่า DE หมายถึงสภาพแวดล้อมเดสก์ท็อปฉันควรมองหาใน FUSE คุณมีคำใบ้ที่ไหน?
erch

@chirp ค้นหา FUSE บนวิกิพีเดีย: en.wikipedia.org/wiki/FUSE มัน IIRC และ slm ได้ตอบไปแล้ว คำตอบคือสภาพแวดล้อมเดสก์ท็อปไม่ใช่ตัวจัดการหน้าต่าง
strugee

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การถอดแบบ น่าเสียดายที่ไม่มีตัวเลือกการกำหนดค่ามาตรฐานสำหรับสิ่งนี้และเนื่องจากการเคลื่อนไหวเดสก์ท็อปเชื่อในการซ่อนความซับซ้อนพวกเขาไม่ได้จัดทำเอกสารนี้ไว้ในเอกสารประกอบสำหรับผู้ใช้เฉพาะในเอกสารประกอบสำหรับนักพัฒนาและพวกเขาถือว่าระบบผู้ใช้เพียงระบบเดียว ผู้ใช้รายแรกที่ลงชื่อเข้าใช้เซิร์ฟเวอร์ X


ใช่! นี่คือสิ่งที่ฉันกำลังมองหา ในฐานะ newb ฉันอยากจะถามว่าจะเริ่มมองหาที่ใดเอ่อ: "ฉันจะเริ่มต้นที่ไหน" เพื่อติดตามพฤติกรรมนี้ จุดเริ่มต้นหรือดังนั้นจะช่วยอย่างมหาศาล]
erch

2
@chirp เพื่อเริ่มสำรวจดูที่ udev (7) และ /etc/udev/rules.d/*
hildred

5

PolicyKit (หรือ Polkit) เป็นเครื่องมือระดับโปรแกรมประยุกต์สำหรับการกำหนดและการจัดการนโยบายที่จะช่วยให้กระบวนการด้อยโอกาสที่จะพูดกับกระบวนการได้รับการยกเว้น

เป็นกรอบสำหรับการรวมศูนย์กระบวนการตัดสินใจด้วยการให้สิทธิ์การเข้าถึงการดำเนินงานที่มีสิทธิพิเศษ (เช่นการเรียกใช้เมธอด Mount ()) สำหรับแอปพลิเคชันที่ไม่มีสิทธิพิเศษ (เดสก์ท็อป)

เอเจนต์การพิสูจน์ตัวตนถูกใช้เพื่อทำให้ผู้ใช้ของเซสชันพิสูจน์ว่าผู้ใช้ของเซสชันเป็นผู้ใช้จริง ๆ (โดยการพิสูจน์ตัวตนในฐานะผู้ใช้) หรือผู้ใช้ที่เป็นผู้ดูแลระบบ (โดยการพิสูจน์ตัวตนในฐานะผู้ดูแลระบบ)

GVFSเป็นระบบไฟล์เสมือนที่อนุญาตให้ติดตั้งระบบไฟล์ในระบบและระยะไกลเป็นผู้ใช้พร้อมกับการสนับสนุนถังขยะ นอกจากนี้ยังมีการสนับสนุน FUSE ที่อนุญาตให้แอปพลิเคชันที่ไม่ได้ใช้ GIO เข้าถึงระบบไฟล์ GVFS ได้ แต่ DEs ส่วนใหญ่ทำการตรวจสอบสิทธิ์ผ่าน Policykit สำหรับสิ่งอื่น ๆ เช่นการจำศีลและปิดคอมพิวเตอร์และ NetworkManager ดังนั้นพวกเขาจึงไม่จำเป็นต้อง ใช้ FUSE

ประกอบด้วยสองส่วน:

  1. ไลบรารีที่แบ่งใช้ซึ่งโหลดโดยแอปพลิเคชันที่รองรับ GIO;
  2. GVFS นั้นมีคอลเลกชันของ daemons ซึ่งสื่อสารระหว่างกันและโมดูล GIO ผ่าน D-Bus

ต้องติดตั้งแพ็คเกจ gvfs พร้อมกับ polkit-gnome สำหรับกฎ polkit ตรวจสอบให้แน่ใจว่าตัวแทนการรับรองความถูกต้องกราฟิกที่ติดตั้งและเริ่มอัตโนมัติ

ไฟล์การกำหนดค่าสำหรับการจัดการสิทธิ์ต้องแตกต่างกันสำหรับการแจกจ่ายแต่ละรายการ /usr/share/polkit-1/rules.d/โค้งวิกิพีเดียบอกให้คุณสร้างไฟล์ที่อยู่ภายใต้ ใน Debian /etc/polkit-1/พวกเขาจะอยู่ใน

แหล่งที่มา: Policykit บนเดเบียน || Polkit บน Arch Wiki || GVFS บน Arch Wiki || GVFS บน GNOME Wiki!


คุณแน่ใจหรือว่า GIO ย่อมาจาก GObject Introspection? ฉันจะคิดว่ามันจะเรียกว่า GOI ถ้าเป็นเช่นนั้น คน Gnome ดูเหมือนจะเรียกมันว่าGI ฉันไม่พบคำอธิบายชื่อ GIO อีก แต่ดูเหมือนจะไม่เหมือนกับชื่อ GI
terdon

@terdon ที่จริงแล้วเป็นการแก้ไขโดย strugee (แก้ไข 10 บนunix.stackexchange.com/posts/101951/revisions ) กำลังลบ ...
Teresa e Junior

4

องค์ประกอบหนึ่งที่ทั่วไปที่คุณกำลังมองหาFUSE , gvfs ของ GNOME เช่นใช้ว่าภายใต้ฝากระโปรง 1 นี้เป็นอินเตอร์เฟซที่มีเมล็ดและผมเชื่อว่ามันเป็นเรื่องธรรมดาที่ทุกคนด้อยโอกาส (อัตโนมัติ) ระบบการติดตั้งบน linux [ แต่เห็นความคิดเห็น] ส่วนบุคคลของ DE จะไม่สร้างเวอร์ชันนี้ขึ้นมาเองเนื่องจากจะต้องใช้การแก้ไขเคอร์เนล

หน้าแรกของการเชื่อมโยงที่อยู่ในความเป็นจริงล้าสมัยเพราะตามที่ระบุไว้ที่นี่ , FUSE กลายเป็นส่วนหนึ่งของเคอร์เนลอย่างเป็นทางการไม่กี่ปีที่ผ่านมา แต่ก็ไม่อธิบายถึงที่มาและวัตถุประสงค์ของโครงการ (มันไม่ได้เป็นเพียงการติดตั้งด้อยโอกาส)

เหตุผลที่ระบบต่าง ๆ อาจเบี่ยงเบนอย่างมีสไตล์นอกเหนือจากนี้เป็นเหตุผลเดียวกับที่คุณมีสภาพแวดล้อมเดสก์ท็อปที่หลากหลาย: พวกเขาแสดงวิสัยทัศน์ที่แตกต่างของวิธีการ / GUI ควรเป็นอย่างไร พวกเขากำลังดูแลรูปแบบและฟังก์ชั่นของส่วนต่อประสานกับผู้ใช้ แต่ FUSE ทำการติดตั้งจริงและระดับเคอร์เนล โปรดทราบว่าฟิวส์ไม่ได้ทำจริงๆ "อัตโนมัติ" ส่วนหนึ่งก็จะมากขึ้นเกี่ยวกับการมีส่วนร่วม "ด้อยโอกาส" แต่ชิ้นส่วนยานยนต์จะสวยง่าย: /devสิ่งที่คุณต้องทำคือการสำรวจความคิดเห็นเช่น ฉันได้เขียนแอพพลิเคชั่นติดตั้งที่ใช้วิธีนี้; มันแค่เฝ้าดูการปรากฏตัวของโหนดใหม่ 2 ส่วนนั้นอาจจะเป็นร้อยเส้นหรือประมาณ C ++ Easy-Peasy - ไม่จำเป็นต้องมี API ทั่วไปในระดับนั้น

1หรือสามารถทำได้ถ้ามันกำลังทำการเมานท์ที่ไม่มีสิทธิพิเศษอย่างแท้จริง คำตอบของ Teresa อาจครอบคลุมวิธีการที่ใหม่กว่าในการอนุญาตการเข้าถึงการเมาต์ปกติ

2 ดังที่ hildred สังเกตการณ์การโทรกลับด้วย udev น่าจะเป็นวิธีแฮ็คที่ดีกว่าและน้อยกว่า


ฉันเดาว่าคุณหมายถึง "หน้าแรก" และฉันจะลบความคิดเห็นนี้หลังจากที่พิมพ์ผิดหายไป;) คำตอบที่ดีเช่นเคยโดยวิธี!
erch

1
เนื่องจากคำตอบของเราดูเหมือนจะขัดแย้งกันฉันจึงทำการทดสอบ อย่างน้อยใน Debian หากไม่มีตัวแทน Polkit ที่ใช้งานอยู่ผู้ใช้จะไม่สามารถเมานต์ได้ นอกจากนี้โมดูลฟิวส์ไม่ได้โหลดแม้หลังจากติดตั้งแล้ว (ฉันใช้ Thunar กับ Wheezy)
Teresa e Junior

3
@TeresaeJunior: จุด (ฉันได้เพิ่มการอ้างอิงถึงที่นี่) แม้ว่าฉันไม่คิดว่าจะมีความขัดแย้งเนื่องจากเส้นทาง polkit เป็นบิตของพื้นที่ผู้ใช้ - การติดตั้งยังคงเป็นสิทธิพิเศษ หน้าวิกิพีเดีย GVFS ตั้งข้อสังเกตว่า "GVFS อาจใช้ FUSE"ดังนั้นฉันจะทำอย่างนั้น "อาจ" แทนที่จะเป็น "ทำ"
goldilocks

1
จาก GNOME Wiki: "นอกจากนี้ยังมีการสนับสนุนฟิวส์ที่อนุญาตให้แอปพลิเคชันที่ไม่ได้ใช้ gio เพื่อเข้าถึงระบบไฟล์ gvfs"
Teresa e Junior

1
@TesesaeJunior: ใช่ดังนั้นพวกเขาจะเรียงลำดับพร้อมกัน FUSE เป็นทางเลือก แน่นอน GNOME ไม่ใช่ DE เพียงคนเดียว แต่ฉันแน่ใจว่าคนอื่น ๆ ส่วนใหญ่ใช้ glib (ซึ่งรวมถึง gio) ด้วยวิธีต่างๆ TBH ฉันไม่เคยชอบการติดตั้งอัตโนมัติดังนั้นฉันจึงไม่มีข้อมูลใด ๆ เกี่ยวกับมัน อย่างไรก็ตาม FUSE นั้นเป็นไปได้
goldilocks
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.