Jessie Lite üzerinde çeşitli USB stick dosya sistemlerini otomatikleştirin


18

Ben USB ahududu Pi 2 yeniden başlatmadan sıcak takma gibi, anında biçimlendirilmiş fat32 ve ntfs USB stickler otomatikleştirmek istiyorum . Jessie-lite yüklü ntfs-3g var .

fstabHer cihazın UUID'sini bulmam gerektiğinden UUID'yi koymak bir seçenek değildir. Farklı dosya biçimlerine sahip farklı USB aygıtlarını takıp otomatik olarak bağlayabilmek istiyorum. Mümkün mü?

Ayrıca bir zamanlar neredeyse usbmountprogramla çalışıyordum . Hatayı almadan önce bir saniye sürücüme erişebildim transport endpoint is not connected. Programı yeniden yükledim ama sonra bir daha o noktaya gelemedim, hatayla bile.

Yanıtlar:


15

Bir sürü araştırmadan sonra usbmount ile Sorunumu düzeltebilirim:

Usbmount'a ntfs ekleme

  1. Usbmount ile yükleyin sudo apt-get install usbmount.
  2. NTFS sürücü paketini ntfs-3g ile yükleyin sudo apt-get install ntfs-3g.

  3. Usbmount dosyasını usbmount dosyasını açarak belirtilen dosya sistemlerini bağlayacak şekilde yapılandırın sudo nano /etc/usbmount/usbmount.conf.

Burada bir çizgi var FILESYSTEMS="". Yalnızca bu satırda belirtilen dosya sistemleri usbmount ile bağlanır, bu yüzden bunu şu şekilde değiştiririz:FILESYSTEMS="vfat ntfs fuseblk ext2 ext3 ext4 hfsplus"

Usbmount'un NTFS Dosya Sistemlerini monte etmesini istiyorsanız , satıra ntfs ve fuseblk eklediğinizden emin olun . NTFS cihazları bazen ntfs-3g paketi tarafından fusblk olarak listelenir , böylece bu ikisi aynıdır. Neden olsa gerçekten bilmiyorum.

Ayrıca, eklemek yoksa fuseblk takılı NTFS Cihazları olacak, konfigürasyonda değil otomatik devreden çıkarılırken. Sda1'in başka bir değişken olabileceği yerdeunmount /dev/sda1 -> ile manuel olarak bağlantısı kesilene kadar bağlı kalırlar ve bağlı oldukları klasörü saklarlar .

Bir sonraki önemli çizgi FS_MOUNTOPTIONS="". Burada hangi dosya sistemlerinin ve nasıl monte edilmesi gerektiğini belirtirsiniz.

Bunu şu şekilde değiştiriyoruz: FS_MOUNTOPTIONS="-fstype=ntfs-3g,nls=utf8,umask=007,gid=46 -fstype=fuseblk,nls=utf8,umask=007,gid=46 -fstype=vfat,gid=1000,uid=1000,umask=007"

Bununla vfat (fat32) ntfs-3g (NTFS) ve fuseblk (tekrar NTFS) dosya sistemleri monte edilir. Bence çoğu parametre aynı kalabilir. Yine burada tüm NTFS Dosyalarını bağlayabilmek için ntfs-3g ( ntfs değil 3t ntfs değil ) ve fuseblk ekleyin . Daha fazla dosya sistemi için ile daha fazla satır ekleyin -fstype=.

Aygıt çıkarılıncaya kadar NTFS'yi bağlı tutun

Takılı NTFS sürücüsüne yalnızca birkaç saniye erişilebildiğinde, sorun için bir çözüm buradadır. Bu düzeltme Christian Weinberger'den geliyor .

  1. Dosya oluşturma usbmount.rules içinde /etc/udev/rules.d/ ile sudo nano /etc/udev/rules.d/usbmount.rules.

Bu içerik:

KERNEL=="sd*", DRIVERS=="sbp2",         ACTION=="add",  PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*", SUBSYSTEMS=="usb",       ACTION=="add",  PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="ub*", SUBSYSTEMS=="usb",       ACTION=="add",  PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*",                          ACTION=="remove",       RUN+="/usr/share/usbmount/usbmount remove"
KERNEL=="ub*",                          ACTION=="remove",       RUN+="/usr/share/usbmount/usbmount remove"
  1. Dosyası oluşturun usbmount @ .service içinde / / etc / systemd / sistem ile sudo nano /etc/systemd/system/usbmount@.service.

Bu içerik:

[Unit]
BindTo=%i.device
After=%i.device

[Service]
Type=oneshot
TimeoutStartSec=0
Environment=DEVNAME=%I
ExecStart=/usr/share/usbmount/usbmount add
RemainAfterExit=yes

Şimdi yeniden başlatın ve cat /etc/mtabusb cihazların hangi klasöre monte edildiğini kontrol edin . Varsayılan olarak / media / usbstick0 dizinine bağlanırlar .

Kaynak:

Hıristiyanlar Fix

Neden fusblk?


Bu çözümün birkaç adıma ihtiyacı var, cevabımı görün.
AbiusX

2

Untermoser'ın cevabı doğrudur, ancak bazı usbmount işlevlerini kıracaktır.

Bağlanmak üzere işlemleri (NTFS'yi etkinleştirmek için) oluşturmak için Systemd birimleri kullandığından, ortam değişkeni $DEVPATHartık usbmount addkomuta gönderilmez ve sembolik bağlantı oluşturma hatasına neden olur.

Bunu düzeltmek için aşağıdakileri çalıştırın:

sed -i '/# Determine vendor/,/if/ s/\(.*vendor=\)/if [ -z "$DEVPATH" ]; then DEVPATH="$(udevadm info --query=path --name=\/$DEVNAME)"; fi\n\1/g' /usr/share/usbmount/usbmount

Yukarıdaki komut, $DEVPATHkullanılamıyorsa yeniden oluşturur .

Usbmount'ta da başka bir hata var usbmount remove. Bağlama noktalarının üzerinden geçer ve usmount config'te tanımlanan bağlantı noktası bağlantısı kesilir. Ancak, bir eşleşme bulunur ancak bu listede yoksa, araları kaldırın ve hiçbir şey yapmayın. Bu, bir USB için birden fazla bağlantı noktası oluşturursanız özellikle önemlidir, çünkü usbmount ilkini görür ve hiçbir şey yapmaz.

Düzeltmek için aşağıdaki değişiklik gereklidir:

sed -i '/umount.d ||/,/break/ s/break.*//; /umount.d ||/,/done/ s/:/:\n\t\tbreak 2/' /usr/share/usbmount/usbmount

Bu, kopmayı iç döngü içinde hareket ettirir (başarının garanti edildiği yerde ve 2 adım dışarı çıkar).


1

Daha yeni Stretch (Lite) üzerinde çalışmak için aynı şeyi yapmaya çalışanlar ve Untermoser ve AlbiusX tarafından verilen cevapların vfat sürücülerinin bağlantısını kesmediğini tespit edenler için, sağlanan cevaplara ek olarak bu ekstra adımları izlemeniz gerekecek :

Terminalde aşağıdaki komutu çalıştırın:

sudo mkdir -p /etc/systemd/system/systemd-udevd.service.d/

Bu, gerekli klasörleri oluşturacaktır. Ardından, burada bir conf dosyası oluşturun, örneğin:

sudo nano /etc/systemd/system/systemd-udevd.service.d/shared-mount-ns.conf

Bu dosyanın içine aşağıdaki satırları ekleyin:

[Service] MountFlags=shared

Bu, systemd-udevd'in özel dosya sistemi ad alanlarının varsayılan davranışını, jessie'deki udev davranışına eşdeğer olan paylaşılanları kullanacak şekilde değiştirir.

( Https://unix.stackexchange.com/questions/330094/udev-rule-to-mount-disk-does-not-work/330156#330156 kaynağından alınmıştır )


Başından beri sorun buydu - eski dokümanlara bakıyordum. Çalışan muyum Linux raspberrypi 4.14.79-v7+referans için, Pi üzerinde
ctietze
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.