USB flash sürücüyü güvenli olmayan bir şekilde çıkarırken kullanıcıyı uyar


13

Kullanıcılar, bağlantılarını kesmeden USB flash sürücülerdeki kayıp verilerden tekrar tekrar şikayet ederler. Ubuntu 14.04 LTS'yi makinelerimizde çalıştırıyoruz. Otomatik montaj etkin.

Fişi çıkarmadan önce güvenli bir şekilde çıkarmalarını hatırlamaktan sıkıldığım için, takılı bir USB sürücüsü takılı olmadığında Ubuntu ekranını uyarmak istiyorum.

Sürücünün hala takılı olması durumunda kaldırma işleminde udevçalışan bir kural eklemeyi düşündüm notify-send. Çıkardıktan sonra USB sürücüsünün takılı olup olmadığını nasıl belirleyebilirim?


Otomatik montajın etkinleştirildiğini söylediniz, ancak sonra "udev kuralını başlatan usb'nin takılı olup olmadığını nasıl belirleyebilirim?" . Şimdi, sökülüp takıldığında veya takılmadan USB durumunu belirlemeniz gerektiğini düşünüyorum. Ben şahsen sadece df -a | grep 'sd[b-z]' komut ile usb montaj / sökme süresini izleyen bir başlangıç ​​komut dosyası ile yaklaşır . Bir udev kuralı kaldırma tarihini bir tür günlüğe gönderebilir. Komut dosyası tarafından verilen kaldırma süresi udev kuralıyla eşleşiyorsa (en az dakika olarak, saniye ile gecikme olabilir), usb takılı değildir.
Sergiy Kolodyazhnyy

2
İşte aynı zamanda günlük kaydı amacıyla yazdığım bir komut dosyası. paste.ubuntu.com/11748191 Bu fikri beğendiyseniz , bunu bir cevap olarak gönderebilirim, ancak şahsen bu iki yorumu çalışan bir çözüm yerine bir öneri olarak görüyorum
Sergiy Kolodyazhnyy

Yanıtlar:


4

Fabby'nin yaklaşımını seviyorum, ancak insanlara bu kötü alışkanlığı öğretmek güzel (Her zaman kontrollü makinelerde çalışmıyorlar). Bu, burada açıklandığı gibi bir OSX özelliğine benzer .

Güvenli bir kaldırma olup olmadığını bilmek için kullanabileceğiniz küçük bir fark vardır:

  • udev değişkeni ID_PART_TABLE_TYPE=dos, güvenli olmayan kaldırma işleminde sdxdisk düğümü ( NOT bölümü düğümüsdxY ) için ayarlanmıştır .

  • Güvenli kaldırmada ayarlanmadığında

Udev olaylarını izleyerek fark edilir:

udevadm monitor -u --environment
  • Güvenli kaldırma

    UDEV  [8292.380554] change   /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/host16/target16:0:0/16:0:0:0/block/sdb (block)
    ACTION=change
    DEVLINKS=/dev/disk/by-id/usb-ADATA_USB_Flash_Drive_8d90ec535e6663-0:0 /dev/disk/by-path/pci-0000:00:14.0-usb-0:2:1.0-scsi-0:0:0:0
    DEVNAME=/dev/sdb
    DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/host16/target16:0:0/16:0:0:0/block/sdb
    DEVTYPE=disk
    DISK_MEDIA_CHANGE=1
    ID_BUS=usb
    ID_INSTANCE=0:0
    ID_MODEL=USB_Flash_Drive
    ID_MODEL_ENC=USB\x20Flash\x20Drive\x20
    ID_MODEL_ID=c96a
    ID_PATH=pci-0000:00:14.0-usb-0:2:1.0-scsi-0:0:0:0
    ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_1_0-scsi-0_0_0_0
    ID_REVISION=0.00
    ID_SERIAL=ADATA_USB_Flash_Drive_8d90ec535e6663-0:0
    ID_SERIAL_SHORT=8d90ec535e6663
    ID_TYPE=disk
    ID_USB_DRIVER=usb-storage
    ID_USB_INTERFACES=:080650:
    ID_USB_INTERFACE_NUM=00
    ID_VENDOR=ADATA
    ID_VENDOR_ENC=ADATA\x20\x20\x20
    ID_VENDOR_ID=125f
    MAJOR=8
    MINOR=16
    SEQNUM=2989
    SUBSYSTEM=block                                                              
    TAGS=:systemd:                                                               
    USEC_INITIALIZED=554873
    
  • Güvenli olmayan kaldırma

    UDEV  [8391.320280] remove   /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/host17/target17:0:0/17:0:0:0/block/sdb (block)
    ACTION=remove
    DEVLINKS=/dev/disk/by-id/usb-ADATA_USB_Flash_Drive_8d90ec535e6663-0:0 /dev/disk/by-path/pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:0
    DEVNAME=/dev/sdb
    DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/host17/target17:0:0/17:0:0:0/block/sdb
    DEVTYPE=disk
    ID_BUS=usb
    ID_INSTANCE=0:0
    ID_MODEL=USB_Flash_Drive
    ID_MODEL_ENC=USB\x20Flash\x20Drive\x20
    ID_MODEL_ID=c96a
    ID_PART_TABLE_TYPE=dos
    ID_PATH=pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:0
    ID_PATH_TAG=pci-0000_00_14_0-usb-0_3_1_0-scsi-0_0_0_0
    ID_REVISION=0.00
    ID_SERIAL=ADATA_USB_Flash_Drive_8d90ec535e6663-0:0
    ID_SERIAL_SHORT=8d90ec535e6663
    ID_TYPE=disk
    ID_USB_DRIVER=usb-storage
    ID_USB_INTERFACES=:080650:
    ID_USB_INTERFACE_NUM=00
    ID_VENDOR=ADATA
    ID_VENDOR_ENC=ADATA\x20\x20\x20
    ID_VENDOR_ID=125f
    MAJOR=8
    MINOR=16
    SEQNUM=3022
    SUBSYSTEM=block
    TAGS=:systemd:
    USEC_INITIALIZED=436355
    

  1. Bir udev kuralı oluşturma (değiştirme useranme)

    $ sudo nano /etc/udev/rules.d/90-unsafe-remove-notify.rules
    
    ACTION=="remove", KERNEL=="sd?", ENV{ID_PART_TABLE_TYPE}!="", RUN+="/usr/bin/sudo -u username DISPLAY=:0 notify-send 'Unsafe Remove' '<b><i>Your long message</b></i>' -i /usr/share/icons/gnome/48x48/emotes/face-worried.png -t 10000"
    
  2. Kuralları yeniden yükle

    sudo udevadm control --reload-rules
    

Başka bir yol, udisksDBUS'a bağlanan bir komut dosyası (python) kullanabilirsiniz . Bölme montaj / sökme, diskler tak / çıkar ... hakkında ihtiyacınız olan tüm bilgilere sahiptir ...

Referans / Kaynak: Gentoo Wiki: Udisks - USB_Thumb_Drive_Example


1
Fabby'nin yaklaşımından hoşlanırken, aradığım şey bu! Şimdi udisks
DBUS'taki

8

Ne yazık ki, bu Micro $ oft'ın aslında oldukça doğru olduğu bir şey: USB kaldırma ... Ve siz bu sorunu devam ettirene kadar devam edeceksiniz:

  1. Otomatik montajı devre dışı bırak

    Kullanıcıların manuel olarak bağlanması gerekiyorsa, onları sökmek için eğitmek daha kolay olacaktır.

  2. USB disklerdeki tüm önbelleği kapatan bir udev kuralı oluşturun ...


2
+1 - önbelleğin devre dışı bırakılması sorunun azaltılmasına yardımcı olur. Yazma sırasında cihazın fişini çekmedikleri sürece (genellikle aygıttaki bir LED'in yanmasına / yanıp sönmesine neden olurlar) sorun olmaz.
Nathan Osman

Tamam, bu bilgisayar tarafında iyi çalışır. Ancak önbelleğin devre dışı bırakılması veya montajdaki senkronizasyon bayrağının ayarlanması flaş çipini hızlı bir şekilde yakmaz mı? Bu USB sürücülerin hepsi VFAT ve Linux'un FAT tablolarını güncellemede oldukça agresif olduğunu duydum - tabloyu içeren sektörleri yıprattı.
RenWal

Sadece SLC çubukları alıyorum ve dosya sisteminden bağımsız olarak henüz üzerimde
ölmedim

@RenWal: Bu sitede bir yanıtı hiç kabul etmediğin için: bu metnin solundaki gri renkli ☑ işaretini tıklamayı unutma, yani Evet, bu cevap geçerli!
Fabby

1
FWIW, Windows varsayılan olarak FAT biçimli USB sürücülerde yazma önbelleğini devre dışı bırakır, aynı nedenlerle, bu yüzden sürücüde fazladan aşınma daha az kötülük olarak görüldü.
thomasrutter
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.