Trình điều khiển nào đằng sau một tập tin thiết bị nhất định?


10

Cho một tập tin thiết bị, giả sử /dev/sdb, có thể xác định trình điều khiển nào đằng sau nó?

Cụ thể, tôi muốn xác định trình điều khiển thiết bị lưu trữ của tôi đang sử dụng. fdisk -lliệt kê 2 thiết bị: /dev/sda/dev/sdb. Một là ổ cứng SATA và cái còn lại là thiết bị lưu trữ USB - thực sự là thẻ SD.

Làm thế nào để tôi xác định, lập trình, đó là cái gì?

Tôi đang viết một phần mềm và tôi muốn bảo vệ người mới bắt đầu xóa sạch ổ cứng của họ, đồng thời cho phép họ xóa sạch thẻ SD của họ.


Tôi giả sử bạn đang chạy Linux, dựa trên sự lựa chọn tên thiết bị của bạn.
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles Vâng, xin lỗi đó có lẽ là một thông tin khá quan trọng ... Cảm ơn!
Alex Chamberlain

Câu trả lời:


12

Chạy udevadm info -a -n /dev/sdavà phân tích đầu ra. Bạn sẽ thấy những dòng như

DRIVERS=="ahci"

đối với đĩa SATA sử dụng ahcitrình điều khiển hoặc

DRIVERS=="usb-storage"

cho một thiết bị kết nối USB. Bạn cũng sẽ có thể hiển thị tên nhà cung cấp và mô hình để xác nhận. Cũng thế,

ATTR{removable}=="1"

có mặt trên các thiết bị di động.

Tất cả các thông tin này cũng có thể được lấy thông qua /sys(trên thực tế, đó là nơi udevadmcần tìm), nhưng /sysgiao diện thay đổi theo thời gian, do đó việc phân tích cú pháp udevadmsẽ mạnh mẽ hơn trong dài hạn.


@AlexChamberlain Xin lỗi, vâng, -nmong đợi một đường dẫn đến một thiết bị khối (một cái gì đó bên dưới /dev) trong khi -pmong đợi một đường dẫn bên dưới /sys(ví dụ -p /sys/block/sda).
Gilles 'SO- ngừng trở thành ác quỷ'
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.