Tự động kết nối các thanh USB trên Debian


10

Tôi đang chạy Debian Squeeze trên máy tính cắm (chỉ có SSH, không có GUI) và những gì tôi đang cố gắng làm là lấy nó để khi cắm USB, nó sẽ tự động được gắn.

Những gì tôi đã làm là cài đặt autofsmà từ những gì tôi thu thập được sẽ xử lý việc tự động cung cấp cho nó biết thiết bị đang ở đâu /dev.

Vấn đề là thanh USB không phải lúc nào cũng có cùng tên thiết bị. Đôi khi /dev/sdc1, đôi khi /dev/sdd1, v.v.

Tôi tập hợp nó để khắc phục điều này, tôi cần sử dụng udevđể đảm bảo rằng thanh USB luôn được đặt cùng tên.

Tôi đã nhận được thông tin sau đây udevadm:

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/block/sdd/sdd1':
    KERNEL=="sdd1"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{partition}=="1"
    ATTR{start}=="63"
    ATTR{size}=="129339"
    ATTR{ro}=="0"
    ATTR{alignment_offset}=="0"
    ATTR{discard_alignment}=="0"
    ATTR{stat}=="      31      244      275      190        0        0        0        0        0      190      190"
    ATTR{inflight}=="       0        0"

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0/host8/target8:0:0/8:0:0:0/block/sdd':
    KERNELS=="sdd"
    SUBSYSTEMS=="block"
    DRIVERS==""
    ATTRS{range}=="16"
    ATTRS{ext_range}=="256"
    ATTRS{removable}=="1"
    ATTRS{ro}=="0"
    ATTRS{size}=="129439"
    ATTRS{alignment_offset}=="0"
    ATTRS{discard_alignment}=="0"
    ATTRS{capability}=="51"
    ATTRS{stat}=="      56      727      783      520        0        0        0        0        0      520      520"
    ATTRS{inflight}=="       0        0"
    ATTRS{events}=="media_change"
    ATTRS{events_async}==""
    ATTRS{events_poll_msecs}=="-1"

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0/host8/target8:0:0/8:0:0:0':
    KERNELS=="8:0:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS=="sd"
    ATTRS{device_blocked}=="0"
    ATTRS{type}=="0"
    ATTRS{scsi_level}=="3"
    ATTRS{vendor}=="        "
    ATTRS{model}=="Flash Disk      "
    ATTRS{rev}=="2.00"
    ATTRS{state}=="running"
    ATTRS{timeout}=="30"
    ATTRS{iocounterbits}=="32"
    ATTRS{iorequest_cnt}=="0x90"
    ATTRS{iodone_cnt}=="0x90"
    ATTRS{ioerr_cnt}=="0x0"
    ATTRS{modalias}=="scsi:t-0x00"
    ATTRS{evt_media_change}=="0"
    ATTRS{queue_depth}=="1"
    ATTRS{queue_type}=="none"
    ATTRS{max_sectors}=="240"

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0/host8/target8:0:0':
    KERNELS=="target8:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0/host8':
    KERNELS=="host8"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0':
    KERNELS=="1-1.2:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb-storage"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bNumEndpoints}=="02"
    ATTRS{bInterfaceClass}=="08"
    ATTRS{bInterfaceSubClass}=="06"
    ATTRS{bInterfaceProtocol}=="50"
    ATTRS{modalias}=="usb:v1976p6025d0100dc00dsc00dp00ic08isc06ip50"
    ATTRS{supports_autosuspend}=="1"

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2':
    KERNELS=="1-1.2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="80"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{urbnum}=="383"
    ATTRS{idVendor}=="1976"
    ATTRS{idProduct}=="6025"
    ATTRS{bcdDevice}=="0100"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="11"
    ATTRS{devpath}=="1.2"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1':
    KERNELS=="1-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{urbnum}=="197"
    ATTRS{idVendor}=="1a40"
    ATTRS{idProduct}=="0101"
    ATTRS{bcdDevice}=="0111"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="2"
    ATTRS{devpath}=="1"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="4"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{product}=="USB 2.0 Hub"

  looking at parent device '/devices/platform/orion-ehci.0/usb1':
    KERNELS=="usb1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="24"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0002"
    ATTRS{bcdDevice}=="0206"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="1"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 2.6.38.8 ehci_hcd"
    ATTRS{product}=="Marvell Orion EHCI"
    ATTRS{serial}=="orion-ehci.0"
    ATTRS{authorized_default}=="1"

  looking at parent device '/devices/platform/orion-ehci.0':
    KERNELS=="orion-ehci.0"
    SUBSYSTEMS=="platform"
    DRIVERS=="orion-ehci"
    ATTRS{modalias}=="platform:orion-ehci"

  looking at parent device '/devices/platform':
    KERNELS=="platform"
    SUBSYSTEMS==""
    DRIVERS==""

Tôi đã cố gắng viết udevcác quy tắc để buộc thanh USB lấy tên /dev/usbsticknhưng cho đến nay tôi vẫn chưa thành công.

Ai đó có thể giúp với quy tắc nào tôi cần chỉ định trong tệp quy tắc của mình để có được thanh USB này để luôn có cùng tên không?

- Hoặc, có cách nào dễ dàng hơn để tự động kết nối thanh USB mà tôi thiếu hoàn toàn không?

CẬP NHẬT

OK vì vậy tôi đã đạt được một số tiến bộ. Tôi đã thêm quy tắc sau:

SUBSYSTEMS=="scsi", ATTRS{model}=="Flash Disk ", DRIVERS=="sd", NAME="usbstick-%k" RUN+="mkdir /mnt/usbstick-%k; mount /dev/usbstick-%k /mnt/usbstick-%k"

Tôi biết điều này vẫn cần một số công việc về mặt xử lý thêm / xóa, nhưng bây giờ nó chỉ là một thử nghiệm cơ bản.

Hiệu quả của việc này là bây giờ tôi quản lý để có được ba nút thiết bị mới trong /dev, cụ thể là /dev/usbstick-sdc, /dev/usbstick-sdc1usbstick-sg2.

Tuy nhiên, những gì tôi đã tìm thấy là mã trong RUNphần chỉ thực thi một lần và chỉ tạo một thư mục mnt/usbstick-sdc. Tôi cũng thấy rằng thư mục luôn trống, vì vậy rõ ràng vẫn có lỗi. (mặc dù tôi đang tiến bộ).


Đó có phải là thứ hai /dev/sdc1được cho là sdd1? Và bạn có thể sử dụng blkidđể xác định duy nhất ổ đĩa (thực ra là phân vùng; nó sẽ thay đổi nếu bạn định dạng lại).
Kevin

Đúng, chỉ cần sửa mà. Tất cả những gì tôi muốn xảy ra là khi cắm USB, nó sẽ được gắn vào thư mục nào đó. Tôi khá chắc chắn rằng tôi nên sử dụng udevquy tắc để tạo các nút thiết bị cho mỗi phân vùng, nhưng tôi không chắc chắn mức độ udevadmđầu ra sẽ tạo ra quy tắc cho!
jon

Quy tắc của bạn trông quá phức tạp. Hãy thử làm một cái đơn giản, chỉ với một ACTION==, một KERNEL==và một ATTRS{something}==(nó hoàn toàn có thể thực hiện được - đây là những gì tôi sử dụng). Ngoài ra, hãy xem xét việc chạy một tập lệnh duy nhất theo chuỗi các lệnh trong RUN+=.
rozcietrzewiacz

Cảm ơn lời khuyên, nhưng câu hỏi vẫn còn: tôi nên nhắm mục tiêu ở cấp độ nào của cây thiết bị với quy tắc của mình? Tất cả điều này có vẻ khó hiểu khủng khiếp và thực sự không có nhiều thông tin trực tuyến để giải thích điều này. Tôi thực sự đánh giá cao thời gian bạn đã giải thích cho tôi cho đến nay, tôi cảm thấy mình gần như ở đó nhưng chỉ thiếu cấp độ để nhắm mục tiêu.
jon

Bây giờ tôi đã thử quy tắc rất cơ bản này: KERNEL=="sd??", NAME="%k", RUN+="mkdir /mnt/usbstick-%k; mount /dev/usbstick-%k /mnt/usbstick-%k"- nhưng không, tất nhiên điều này cũng không hoạt động. Bây giờ tôi đang ngày càng thất vọng sau khi dành gần cả ngày chỉ đơn giản là cố gắng tìm ra cách lấy một chiếc USB được cắm để tự gắn. Có nên mọi thứ thực sự khó khăn này? Tất nhiên, kết quả đầu ra udevadm test /sys/block/sddlà - thực tế không thể đọc được, vì vậy tôi không có cách nào để biết mình đang sai ở đâu. Bất cứ ai có thể chỉ cho tôi đi đúng hướng về điều này?
jon

Câu trả lời:


13

Hình nên có một cách dễ dàng hơn nhiều để giải quyết một vấn đề phổ biến như vậy, và có. Đây là những gì tôi đã thử trên máy chủ wheezy / sid của mình:

sudo apt-get install usbmount

Cắm USB, xong rồi! Cây gậy của tôi bây giờ có thể truy cập thông qua /media/usb.

Btw, usbmount không có trang nam, vui lòng đọc /usr/share/doc/usbmount/README.gzthay thế. Có vẻ như usbmount gắn kết thanh của bạn với tùy chọn đồng bộ theo mặc định. Nó có thể tốt hơn rất nhiều cho thanh của bạn để gắn nó không đồng bộ và chạy synchoặc umounttrước khi rút phích cắm. Đó là cấu hình.


xem thêmpumount
Alex

Hãy chú ý rằng usbmountkhông còn hỗ trợ NTFS kể từ debian jessie: bug.debian.org/774149
malat

Chạy nó trên Debian Jessie, usbmount dường như không bao giờ gắn kết nó. Trang gói nói rằng nó hiện không rõ ràng và tôi đang chạy systemd. Tôi tự hỏi nếu gói này không còn hoạt động với thay đổi systemd?
Travis Griggs

Thật vậy, đã không làm việc cho tôi trên Jessie, hãy xem câu trả lời của tôi (này: ddumont.wordpress.com/2015/09/27/ đã làm việc)
Paul

2

Lưu ý rằng bạn không thể chỉ có một nút thiết bị duy nhất để thể hiện bất kỳ ổ đĩa nào có thể được đính kèm. Điều gì nếu bạn cắm hai trong số họ? Hoặc khi Pendrive có nhiều hơn một phân vùng?

Nói chung, những gì bạn sử dụng để tạo một nút thiết bị có tên tùy chỉnh là SYMLINK+=. grep cho nó trong các quy tắc để xem nó được sử dụng như thế nào : grep SYMLINK /etc/udev/rules.d/*. Như trong tất cả các lệnh được kích hoạt udev, bạn có thể sử dụng một số biến có ý nghĩa được mô tả trong man udev. Bạn có thể nhận ra rằng bạn không thực sự cần đặt tên tùy chỉnh cho thiết bị, vì bạn có thể cung cấp tên của nó cho tập lệnh (thông qua %kbiến).

Đối với giải pháp tự động gắn kết, hãy xem UAM , mà tôi đã mô tả một chút trong câu trả lời cho câu hỏi này .


Tôi hiểu những hạn chế này. Khi điều đó xảy ra, tôi chỉ cần hỗ trợ một thanh USB duy nhất được kết nối bất kỳ lúc nào với hệ thống cụ thể này. Tuy nhiên, tôi sẽ cần hỗ trợ nhiều phân vùng trên thanh USB (sẽ rất tuyệt nếu chúng có thể được gắn vào các thư mục con từ điểm gắn kết). Đưa ra những yêu cầu này, bạn có lời khuyên nào cho một giải pháp tiềm năng không? Do tính chất của dự án, tôi cần tránh sử dụng phần mềm bên thứ ba bổ sung nếu có thể.
jon

Sau đó hãy xem bản chỉnh sửa tôi vừa thực hiện (phần giữa). Điều này sẽ là đủ?
rozcietrzewiacz

Cũng lưu ý rằng UAM không thực sự là một chương trình - đó là một loạt các udevquy tắc tốt đẹp với các tập lệnh đi kèm. Bạn có thể xem xét các quy tắc và dễ dàng điều chỉnh chúng theo nhu cầu của bạn.
rozcietrzewiacz

Cảm ơn vì lời khuyên. Một điều khác: bạn có nghĩ rằng bạn có thể nhìn vào đầu ra của tôi từ đó udevadmvà cho tôi biết thiết bị nào là thiết bị tôi thực sự nên nhắm mục tiêu theo quy tắc của mình không? Các ví dụ khác nhau mà tôi đã thấy trực tuyến dường như liên quan đến các cây ngắn hơn nhiều và mỗi ví dụ dường như nhắm mục tiêu đến một cấp độ thiết bị khác nhau, không có lời giải thích nào nên nhắm mục tiêu nào và tại sao.
jon

Chỉ cần thêm một bản cập nhật ở trên, bất kỳ ý tưởng? Cảm ơn!
jon

2

Đây là cách gần đây tôi đã làm nó, và tôi khá hài lòng với phương pháp này bây giờ. Cái này dành cho Ubuntu 12.04 + Gentoo, nhưng tôi đoán bất kỳ bản phân phối nào, cho phép cài đặt udev và autofs sẽ hoạt động.

Điều kiện tiên quyết: Bạn phải cài đặt udev + autofs.

Bước 1)

Tạo tệp "/etc/udev/rules.d/90-usbsd-auto.rules" sau đây (tất nhiên bạn có thể sử dụng bất kỳ tên nào miễn là nó kết thúc bằng ".rules"). :

# Add symlink /dev/usbdisks/<label> to /dev/sd[a-z][1-9] 
# for automounter support

ACTION=="add", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
    ENV{ID_BUS}=="usb", \
    SYMLINK+="usbdisks/%k", MODE:="0660", \
    RUN+="/bin/rm /media/usb/%k", \
    RUN+="/bin/ln -sf /media/autousb/%k /media/usb/%k"

# Some FileSystems emit a "change" event when they are unmounted.
# UDEV seems to delete the device symlink in this case :-(
# So we need to re-create it here
ACTION=="change", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
    ENV{ID_BUS}=="usb", \
    SYMLINK+="usbdisks/%k", MODE:="0660"


# When device is removed, also remove /media/usb/<...>
ACTION=="remove", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
    ENV{ID_BUS}=="usb", \
    RUN+="/bin/rm /media/usb/%k"

Điều này làm gì: Nó tạo ra hai liên kết tượng trưng, ​​một cho phân vùng thiết bị lưu trữ USB trong "/ dev / usbdisks / <...>".

Liên kết tượng trưng thứ hai sẽ liên kết từ "/ media / usb / <...>" đến "/ media / autousb / <...>" điều này được thực hiện để hỗ trợ bộ đếm tự động (xem bước 2).

Để đảm bảo udev đọc các quy tắc này sử dụng

sudo udevadm control --reload-rules

Lưu ý: Tên giống nhau cho cùng một thanh USB: Có thể nhưng có thể nguy hiểm: Bạn có thể sử dụng ví dụ "$ env {ID_FS_LABEL_ENC}", thay vì "% k" trong các quy tắc UDEV ở trên. Điều này sẽ sử dụng nhãn âm lượng để tạo / media / usb / <...>, nhưng điều gì xảy ra nếu bạn cắm hai thanh USB và cả hai đều sử dụng cùng một nhãn âm lượng ...

Với tệp quy tắc udev này, mọi thứ được thiết lập để tự động phân vùng thiết bị lưu trữ USB. Lưu ý rằng ngay bây giờ, thiết bị sẽ KHÔNG được tự động hóa (cố ý). Nó sẽ được tự động hóa khi bạn sử dụng nó với

Bước 2)

Cài đặt tự động thành automount / media / autousb / <...>: Tôi đã thêm dòng sau vào tệp "/etc/auto.master" của mình (cho Ubuntu 12.04):

/media/autousb /etc/auto.usb --timeout=60

Điều này có nghĩa là AutoFS sẽ ngắt kết nối thiết bị sau 60 giây không hoạt động. Bạn có thể muốn sử dụng ít hơn hoặc nhiều hơn, tùy thuộc vào khẩu vị của bạn.

Đối với Gentoo, bạn phải sửa đổi "/etc/autofs/auto.master" để sử dụng hợp lý

/media/autousb /etc/autofs/auto.usb --timeout=60

Bây giờ tôi đã tạo "auto.usb" với nội dung sau:

#!/bin/bash

key=${1}
fstype=$(/sbin/blkid -o value -s TYPE /dev/usbdisks/${key})
if [ "${fstype}" = "vfat" ] ; then
  echo "-fstype=vfat,sync,uid=0,gid=plugdev,umask=007 :/dev/usbdisks/${key}"
  exit 0
fi
if [ "${fstype}" = "ntfs" ] ; then
  echo "-fstype=fuse.ntfs-3g,sync,uid=0,gid=plugdev,umask=007 :/dev/usbdisks/${key}"
  exit 0
fi
if [ "${fstype}" = "ext4" ] ; then
  echo "-fstype=ext4,sync,nocheck :/dev/usbdisks/${key}"
  exit 0
fi

exit 1

Auto.usb này cần phải được thực thi, để autofs sử dụng điều này như một tập lệnh (bash). Ví dụ

sudo chmod 0755 /etc/auto.usb

Việc này làm gì: Tập lệnh này sẽ cho AutoFS (/ usr / sbin / automount) cách gắn phân vùng thiết bị lưu trữ usb.

Tập lệnh trước tiên sẽ sử dụng "/ sbin / blkid" để tìm hiểu loại hệ thống tập tin nào trên phân vùng.

Tập lệnh sau đó sẽ cung cấp các tùy chọn gắn kết tùy thuộc vào phân vùng thiết bị.

Lưu ý: Tôi đã bao gồm mã mẫu cho các hệ thống tệp "vfat" (có lẽ phổ biến nhất cho các thẻ nhớ USB), "ntfs" và "ext4". Tất nhiên khá dễ dàng để mở rộng điều này để hỗ trợ nhiều hệ thống tập tin hơn.

Bước 3)

Tùy chọn ... Để "nhả" == ngắt kết nối (các) thanh usb của bạn (hoặc phân vùng trên thanh usb của bạn), tạo tập lệnh trong / sbin / usbeject:

#!/bin/bash
# make sure everything is written to USB disk(s)
sync
# sending SIUGSR1 to automount will unmount the media
killall -s SIGUSR1 /usr/sbin/automount

Với tập lệnh này, bạn có thể sử dụng "sudo usbeject" để ngắt kết nối tất cả các phân vùng thiết bị USB được gắn (bằng cách nói với autoount để ngắt kết nối chúng).

Tất nhiên bạn có thể chỉ cần đảm bảo rằng phân vùng không được sử dụng ở bất cứ đâu; Sau đó, bộ đếm tự động sẽ ngắt kết nối phân vùng sau thời gian chờ 60 giây ...

Thủ thuật thực sự ở đây là sử dụng các liên kết tượng trưng từ "/ media / usb" đến "/ media / autousb":

  • Các liên kết tượng trưng "/ media / usb" sẽ được tạo bởi udev, cung cấp cho người dùng một cái nhìn tổng quan đơn giản về phân vùng thiết bị lưu trữ usb ở đó
  • AutoFS sau đó sẽ tự động đếm phân vùng theo yêu cầu nếu bạn sử dụng nó qua / media / usb
  • Với tệp "auto.usb" theo kịch bản, bạn có thể hỗ trợ bất kỳ loại hệ thống tệp nào và ngoài ra, bạn cũng có thể hỗ trợ bất kỳ loại sơ đồ đặt tên nào.
  • Cách tiếp cận này hỗ trợ các thanh USB với nhiều phân vùng, ngay cả khi các phân vùng này sử dụng các loại hệ thống tệp khác nhau.

Tôi có thể chỉ cho bạn cách gợi ý tự động phá hủy thư mục / home / frank của tôi không? Cảm ơn bạn.
Frank

1

Xin lỗi để trả lời câu hỏi của riêng tôi, và cảm ơn rất nhiều vì rozcietrzewiacz đã đóng góp, nhưng cuối cùng tôi đã đạt được một số tiến bộ lớn bằng cách sử dụng quy tắc sau sau nhiều giờ đọc trực tuyến:

SUBSYSTEMS=="scsi", KERNEL=="sd[a-h]1", SYMLINK+="removable", RUN+="/bin/mount /dev/removable /path/to/mount"

Điều này sẽ gắn kết phân vùng đầu tiên của bất kỳ thiết bị SCSI nào. Tôi đoán câu hỏi tiếp theo sẽ là làm thế nào để gắn kết nhiều phân vùng, nhưng đó là vấn đề khác cho một ngày khác.


1
Nó không phải là một quy tắc tốt. Điều này cũng sẽ phù hợp với các phân vùng của ổ đĩa cứng . có một removablethuộc tính, bạn nên kiểm tra và thay vì blockthay vì scsi.
rozcietrzewiacz

1

Tôi đã thấy rằng câu trả lời tốt nhất thực sự đã bị phản đối, vì nó không được duy trì và không hoạt động trên / từ Jessie (xem bình luận của malat)

Đối với tôi (trên Jessie), giải pháp trong blog này hoạt động như một cơ duyên.

Tín dụng cho "ddumont", nhưng đăng một cái nhìn tổng quan về blog / câu trả lời của anh ấy ở đây, để đối phó với sự thối rữa liên kết có thể xảy ra trong tương lai.

Thêm dòng sau vào /etc/fstab

/dev/sr0 /media/bluray auto defaults,nofail,x-systemd.automount 0 2

Bạn có thể làm điều này bằng cách sử dụng nano:

sudo nano /etc/fstab

Giải trình:

/dev/sr0là tập tin thiết bị. Bạn cũng có thể sử dụng một trong các thiết lập liên kết tượng trưng của udev trong / dev / đĩa / by-id. Bạn sẽ phải thay đổi điều này theo tệp thiết bị của bạn ( sudo fdisk -lđể liệt kê các thiết bị)

/media/bluraylà điểm gắn kết. Bạn có thể chọn một điểm gắn kết khác

nofail được yêu cầu để tránh báo cáo lỗi khi khởi động mà không có đĩa trong ổ đĩa quang

x-systemd.automount là tùy chọn cấu hình systemd để tự động gắn đĩa được chèn

Không chỉ định noauto: điều này sẽ ngăn systemd tự động gắn đĩa, làm mất mục đích.

Kiểm tra

Chạy lệnh journalctl -x -ftrong một thiết bị đầu cuối để kiểm tra những gì đang xảy ra với systemd

Tải lại cấu hình systemd với sudo systemctl daemon-reload.

tải một đĩa trong ổ đĩa quang của bạn

Sau đó, tạp chí sẽ hiển thị một cái gì đó như:

Sept. 27 16:07:01 frodo systemd[1]: Mounted /media/bluray.

Thêm nữa

Để thành công ổ đĩa NTFS, tôi phải cài đặt ntfs-3g (ntfsprogie cũ)

sudo apt-get install ntfs-3g

Tôi đã không phải cài đặt hfspross để có một USB định dạng OSX hoạt động, nhưng bạn nên tự kiểm tra nó.


Nó không tự động gắn vào máy tính Debian của tôi với USB-HDD.
buhtz

@buhtz nhưng gắn thủ công không hoạt động? Các bước trên thực sự chỉ có hiệu quả đối với tôi đối với các ổ đĩa trong hệ thống khi khởi động, chứ không phải "tự động" chèn và tháo USB trong khi hệ thống đang chạy.
Paul
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.