USB diskleri otomatik olarak takma (Nasıl çalışır)


12

Arka plan: Bir usb diski salt okunur olarak monte etmeye çalışıyorum ama ubuntu kurulumum diski taktığımda rw monte ediyor.

Diski manuel olarak çıkarabilir ve umount ve mount komutlarıyla salt okunur olarak manuel olarak yeniden monte edebilirim ama eğlenceli değil. Birisi bana tipik bir linux sistemi (udev? Tarihsel arka plan da çok güzel) usb bağlarının tam olarak otomatik olarak nasıl yapıldığına dair hızlı bir açıklama verebilir ve belki de bu işlemi bana disk ro okumak izin izin nasıl tweak olabilir?

Teşekkürler.

Düzenleme: Hiç yardımcı olursa, gnome kullanıyorum.
Edit2: Acelemde biraz daha fazla bilgi vermeyi unuttum. Disk, 'mount' çıktısından böyle görünür.

/dev/sdb1 on /media/LaCie type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)

Edit3: Bu aynı zamanda kendi yolunda da olabilir. Montaj çıkışında aşağıdakiler de var:

gvfs-fuse-daemon on /home/fletcher/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=fletcher)  

Bunun yukarıdaki fuseblk montajıyla ilgili olabileceğini düşündüm, ama bulduğum şey buydu.

Gvfs, Gnome sanal dosya sistemidir. Zaten mevcut olan çekirdek vfs üzerine kurulmuş sanal bir dosya sistemidir. gvfs, dosyalara, cihazlara, uzak ağ konumlarına vb. erişmek için GIO kitaplığını (VFS API'sı) kullanır. Bu durumda, yukarıdaki ('gvfs-fuse-daemon') gvfs dosyaları / konumları / cihazları bağlamak için FUSE ürününü kullanır. Bu, Nautilus'ta bir uzak ağ bağlantısı kurduğunuzda olan şeydir. .Gvfs dizinini (içeride?) Yerleştirmek için FUSE kullanacak ve daha sonra yeni bağla iletişim kurmak için gnome sanal dosya sistemi katmanıyla iletişim kuracaktır.

Temel olarak bu yapı, kullanıcının dinamik olarak yeni konumlar monte etmesini ve nautilus aracılığıyla onlarla etkileşime girmesini sağlar.

Sadece referans için: FUSE bir kullanıcı alanı dosya sistemidir, yani kullanıcının root olmasa bile montajı çalıştırmasına izin verir)

Peki bu beni nereye bırakıyor? LaCie diski fuseblk tipi ile monte ediliyor. Bu sadece sigorta ile monte edilmiş bir blok cihazıdır. Bu yüzden bazı arka plan programı, takıldığında sürücüyü otomatik olarak algıladı ve ilerledi ve blok cihazımı monte etmek için sigortayı çalıştırdı. Peki bu daemon nedir ve nasıl yapılandırılır (tahminim içsel bir cüce şeydir) en önemli sorudur. İkincil bir soru, sistemin otomatik olarak yeni takılan bir usb diski nasıl algıladığıdır, ancak bence bu biraz bir kenara ve çok daha düşük bir seviyedir (read: udev?).

Bağlantılar:


/ media / LaCie dosya sistemi ve / veya / dev / sdb1 cihazı için fstab girişi var mı? / Dev / sdb1 yine de etiketlenmiş mi (e2label / dev / sdb1)?
Tok

Hayır, fstab girişi yok. / Media / LaCie 'ye monte edildiği için etiketlendiğine inanıyorum. Ntfslabel'i kurmam gerektiğinden emin olmalıyım ama işten ayrılmak üzereyim. Ayrıca masaüstümde LaCie olarak geliyor.
fthinker

Yanıtlar:


3

Bunu bilgisayarımda yapmaya çalıştım ve işe yarıyor :)

İlk önce cihazım için bir isim alıyorum:

ls -l /proc/disk/by-id/

Benim durumumda / proc / disk / by-id / usb-09a6_8001

Bu satırı / etc / fstab içine ekledim:

/dev/disk/by-id/usb-09a6_8001   /media/macle ext2 ro,users 0 2

Ve çalışıyor, usb anahtarımı taktığımda, ro monte edildi ve kullanıcıma ait.


Teşekkürler profy :) Ama sorumun ana itkisi, automount ve usb cihazlarının nasıl çalıştığını anlamak zorunda kaldığım her seferinde hissettiğim aşırı hayal kırıklığını hafifletmek. Bu karmaşık sistemlerin ardındaki büyüyü deşifre etmek için buradayım. Ayrıca, fstab ve usb cihazlarını kullanmak biraz zordur çünkü başlangıçta takılmaları her zaman garanti edilmez!
fthinker

1
Nasıl çalıştığını bilmiyorum, ancak yeni cihazların bir udev kuralları tarafından tespit edildiğinden eminim, /etc/udev/rules.d/ ve /lib/udev/rules.d/ adreslerine bir göz atın.
profy


2

Ulrich Dangel'in dediği gibi udisks bugünlerde referans olmalı. Henüz nasıl bildirildiğini görmedim (udev-> dbus-> udisks?), Ancak manuel olarak ihtiyacınız olan seçeneklerle bir cihazı monte etmek için kullanılabilir.

Udisks, bir kullanıcının birimlerle ne yapmasına izin verildiğini görmek için polkit ile konuşur. Burada tahmin ediyorum, ancak adlandırılmış bir disk / aygıt için özellikleri ayarlamak için bir yer bulabilirse çalışması gerekir.

Udisksctl kullanarak, kullanıcınız cihazı aşağıdaki gibi ihtiyacınız olan seçeneklerle bağlayabilmelidir:

udisksctl mount -b / dev / sdxy -o ro / bağlama noktası

Yine de seçenekleri nereye koyacağımı bilmiyorum.

GÜNCELLEME: Ulrich önerilerini takiben Gnome disk yardımcı programına gittim ve ihtiyacınız olanı elde ettim ama en zarif çözüm olup olmadığından emin değilim. Ben Tarçın + Gnome3 ile Kororaa 17 (Fedora 17 tabanlı) kullanıyorum, "Diskler" yardımcı programına gittim ve usb sürücüm için montaj seçeneklerini değiştirdi, "ro" ekledi ve kaydetti.

Fstab'a bir giriş ekler (burası zarif bir çözüm olarak görmüyorum, sistem çapında değil bir kullanıcı yapılandırması olarak kalması gerektiğini düşünüyorum), sürücüyü takıyorum ve otomatik olarak seçeneklerle seçilen bağlama noktasına monte edildi Gnome diskler programına kaydettim.


Bununla nasıl bildirildiğini görmek zorundasın ne demek istiyorsun? Hangi adım eksik?
Ulrich Dangel

Ve bu değil udev→dbus→udiskamaudev/uevent→udisk→dbus
Ulrich Dangel

Gerçekten emin değildim ve doğrulamak istedim ama şimdi% 100 yanlış olmadığımı görüyorum.
tripledes

[strike] Lütfen fstab'a eklenen satırı göster. Ne olduğunu düşündüğümü doğrulamak istiyorum. [/ Strike] Yani fstab satırı @ profy'nin cevabına uyuyor mu? yani roseçeneği ile.
ters çevir

-1

Çekirdeğin donanımı nasıl algıladığı konusunda, burada olan çok güzel bir makale .

Özetle:

  • çekirdek sürekli olarak PC veri yollarınızı tarar ve aygıtları genellikle altında bulunan sanal dosya sistemine eşler /sys/.
  • çekirdek, udev'in kullanabileceği yeni bir donanım olduğunu belirten bir mesaj gönderir:
    • cihazda udev kurallarını işlemek
    • cihazı şuna bağlayın: /dev/
    • aygıt sürücüleri yükle
    • cihazın kullanıcı alanını dbus ile bilgilendir

Bu noktada cihaz kullanıcı alanı tarafından kullanılmaya hazırdır. Gvfs ve FUSE'nin her ikisi de kullanıcı alanı dosya sistemleridir.


Hayır, udevgenellikle dbusüçüncü taraf uygulamalar tarafından yapılan uygulamalarla bildirim yapılmaz. Eğer kullanırsanız qdbus --systemherhangi Udev isimlerini görmez. Tipik olarak, uygulayıcılar kendilerini sadece ueventskendi kurallarına abone olurlar veya kendi kurallarını
gönderirler

@Ulrich'i işaret ettiğiniz için teşekkürler. Özetim, aradaki birçok adımı hariç tutarak çok temel bir taslak sunuyor. Cesur ayrıntılar için bağlantılı makaleye bakın.
ters çevirin

2
normalde otobüsleri izlemek için herhangi bir yoklama olmadığı için makale de yanlıştır
Ulrich Dangel
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.