it-swarm.com.de

Wie finde ich heraus, welches/dev ein USB-Flash-Laufwerk ist?

Ich möchte ein USB-Laufwerk mounten, zwei davon, und ich benötige zwei verschiedene Mount-Punkte. Leider wurde der Name des Linux-Kernels geändert und ich kann nicht herausfinden, welcher /dev-Speicherort der richtige ist. Gibt es eine Möglichkeit, durch dmesg oder /proc oder irgendwo anders herauszufinden, welcher Geräteknoten ein USB-Laufwerk ist?.

(Ich verwende ArchLinux, wenn das hilft .../dev/sda ist die erste Festplatte, /dev/sr0 ist ein DVD-Laufwerk usw.)

bearbeiten: Das USB-Laufwerk ist an einen USB-Hub angeschlossen. Ich habe dmesg durchgesehen und es heißt, dass der Hub verbunden war und nach den 3 angeschlossenen Geräten gesucht wurde. Ich kann immer noch nicht sehen, wo sich mein USB-Laufwerk befindet.

157
Rudolf Olah

Einfachster Weg: Schauen Sie sich die Ausgabe von dmesg an, nachdem Sie das USB-Gerät angeschlossen haben. Es sollte Ihnen anzeigen, welcher /dev-Knoten ihm zugewiesen wurde.

82
zigdon

All dies sind gute Vorschläge, aber die schnellste und am wenigsten ausführliche Methode besteht darin, einfach Folgendes in das Terminal einzugeben:

mount

daraufhin wird eine Liste aller gemounteten Geräte angezeigt (dies setzt voraus, dass das USB-Laufwerk gemountet ist, was in der Regel bei modernen Linux-Distributionen der Fall ist).

53

Solange Sie udev ausführen, können Sie dies problemlos tun, indem Sie auf/dev/disk/by-id/usb -Herstellername_Seriennummer verweisen. Diese werden als symbolische Links angezeigt, auf die Sie entweder direkt in Ihrer fstab verweisen oder die Sie mit readlink -e dereferenzieren können, um das zugehörige Blockgerät zu bestimmen.

Hier ist ein Beispiel aus der Praxis. An meinem Computer sind 3 USB-Festplatten angeschlossen. Diese werden jeweils in/dev/disk/by-id mit eindeutigen Seriennummern angezeigt (obwohl sie einen gemeinsamen Hersteller-String haben). Ich habe symbolische Links zu jedem dieser drei eindeutigen Einträge erstellt und kann jetzt schnell feststellen, welches Laufwerk welches ist (und welches Gerät jedem Laufwerk zugeordnet ist), indem ich readlink -e linkname. Wenn Sie beispielsweise readlink -e/root/disk2 auf meinem Computer ausführen, wird derzeit "/dev/sde " angezeigt, während readlink -e/root/disk3 erstellt wird überhaupt keine Ausgabe.

53
stormlash

Probieren Sie den Befehl udevinfo -q all -n /dev/sda aus, wobei /dev/sda der Pfad zu Ihrer Festplatte ist. Auf diese Weise erhalten Sie eine Schiffsladung mit Informationen zu der Festplatte, die Sie gerade ansehen. Ein Eintrag informiert Sie über den Bus, an den er angeschlossen ist.

Dies erspart Ihnen natürlich das Durchsuchen von dmesg und/oder Protokollen.

Update

udevadm info --query=all -n /dev/sda 

Ab mindestens Juli 2010 [ 1 ] udevinfo wurde in Debian (und abgeleitet) durch udevadm info ersetzt, mit einem kleinen Übergang, mit dem es bald veraltete und entfernte Symlinks gab (Sie können sie immer noch in alten, nicht aktualisierten Maschinen finden). Immer von [ 1 ] können wir lesen:

In udev 117 wurde udevadm eingeführt und udevinfo und andere Programme wurden zu Kompatibilitätssymbolen. Die Symlinks wurden in udev 128 verworfen und in udev 147 endgültig entfernt.

24
Eltariel

die einfachste Methode, um zu sehen, was los ist, ist die Eingabe (natürlich als root):

blkid -c /dev/null

dies gibt Ihnen einen vollständigen Überblick über alle Blockgeräte, auch wenn sie nicht montiert sind

22
toh

/dev/disk/by-* ist in diesem Fall der einfachste Weg. Wenn Sie das Leben aus irgendeinem Grund interessanter gestalten möchten, können Sie HAL verwenden.

So listen Sie alle Geräte auf, die Sie verwenden:

hal-device

Um eine bestimmte Eigenschaft zu erhalten, die Sie verwenden (dies gibt /dev/sd* auf einem USB-Speichergerät zurück):

hal-get-property --udi $UDI --key block.device

Es gibt auch:

hal-find-by-capability
hal-find-by-property

Wenn Sie es noch komplizierter machen möchten, können Sie sich relativ einfach einen HAL-basierten Auto-Mounter schreiben, was sehr praktisch sein kann, wenn Sie die Dinge vollständig automatisieren möchten.

Und der Vollständigkeit halber gibt es auch:

lsusb -v
lshw

Hier finden Sie allgemeine Informationen zu USB und Ihrer Hardware im Allgemeinen.

11
Grumbel
Sudo fdisk -l

Und analysieren Sie einfach das Ergebnis.

10
Felipe

Benutzen

ls -l /dev/disk/by-id/usb*

Unter den Standardregeln von udev werden Ihnen die meisten USB-Geräte und der Symlink zu deren Blockgerätenamen auf dem System angezeigt.

Wenn das nicht funktioniert, schauen Sie sich /dev/disk/by-id/ direkt an.

8
DJ Capelis

Für USB-Geräte können Sie einfach tun

REMOVABLE_DRIVES=""
for _device in /sys/block/*/device; do
    if echo $(readlink -f "$_device")|egrep -q "usb"; then
        _disk=$(echo "$_device" | cut -f4 -d/)
        REMOVABLE_DRIVES="$REMOVABLE_DRIVES $_disk"
    fi
done
echo Removable drives found: "$REMOVABLE_DRIVES"
6
lemsx1

Schauen Sie sich den Baum unter /dev/disk an. Es listet Festplatten und deren Partitionen (Dateisysteme) nach verschiedenen Schemata auf.

2
Ted Percival

/ var/log/message, wenn dmesg die Informationen nicht mehr hat.

2
Allan Wind

Wenn Sie das USB-Laufwerk trennen und wieder anschließen, sollte es über den Kernel initialisiert werden (dmesg).

0
Howler

Basierend auf der hervorragenden Antwort von stormlash und der Abhängigkeit von udev, um den Gerätebaum "/ dev/disk/by-id/usb" zu füllen, können Sie ein Prädikat (Bash) wie folgt definieren:

is_usb_device() {
    local device_path=$1        # such as /dev/sdc
    for devlink in /dev/disk/by-id/usb*; do
        if [ "$(readlink -f "$devlink")" = "$device_path" ]; then
            return 0
        fi
    done
    return 1
}

Und dann benutze es:

if is_usb_device "/dev/sdg"; then
    echo "/dev/sdg is a usb device"
else
    echo "/dev/sdg is not a usb device"
fi
0
user30747