2008-09-16 03:51:40 +0000 2008-09-16 03:51:40 +0000
161
161

Comment savoir quel /dev est une clé USB ?

Je veux monter une clé USB, deux d'entre elles et j'ai besoin de deux points de montage différents. Malheureusement, le noyau Linux a changé de nom et je n'arrive pas à savoir quel est le bon emplacement pour /dev. Y a-t-il un moyen de regarder dans dmesg ou /proc ou ailleurs pour trouver quel nœud de périphérique est une clé USB.

(j'utilise ArchLinux si cela peut aider… /dev/sda est le premier disque dur, /dev/sr0 est un lecteur de dvd, etc. J'ai regardé dmesg et il dit que le hub était connecté et il a cherché les 3 périphériques qui y étaient connectés. Mais je ne vois toujours pas où se trouve ma clé USB.

Réponses (11)

83
83
83
2008-09-16 03:53:52 +0000

C'est le moyen le plus simple : Regardez la sortie de dmesg après avoir branché le périphérique USB. Elle devrait vous montrer quel nœud /dev lui a été attribué.

54
54
54
2012-09-04 18:51:43 +0000

Ce sont toutes de bonnes suggestions, mais la méthode la plus rapide et la moins verbeuse consiste à taper simplement ce qui suit dans le terminal :

mount

qui donnera une liste de tous les dispositifs montés (cela suppose que la clé USB est montée, ce qui est généralement le cas des distributions Linux modernes).

25
25
25
2008-09-16 03:59:28 +0000

Essayez la commande udevinfo -q all -n /dev/sda, où /dev/sda est le chemin d'accès à votre disque. Cela vous donne une foule d'informations sur le disque que vous regardez - il y a une entrée qui vous informe sur le bus auquel il est connecté.

Cela vous évite bien sûr de devoir passer par le dmesg et/ou les logs. 002 Mise à jour

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

Depuis au moins juillet 2010 [1 ] udevinfo a été remplacé dans Debian (et dérivé) par udevadm info avec un petit transitoire avec lequel il y avait des liens symboliques bientôt obsolètes et supprimés (vous pouvez toujours les trouver dans les anciennes machines non mises à jour). Toujours à partir de [1], nous pouvons lire :

Dans udev 117, udevadm a été introduit et udevinfo et d'autres programmes ont été transformés en liens symboliques de compatibilité. Les liens symboliques ont été dépréciés dans udev 128 et supprimés définitivement dans udev 147.

23
23
23
2013-01-02 08:37:01 +0000

la méthode la plus simple pour voir ce qui se passe est de taper (comme racine bien sûr) :

blkid -c /dev/null

cela vous donne un aperçu complet de tous les dispositifs de blocage même s'ils ne sont pas montés

11
11
11
2009-09-24 22:36:40 +0000

/dev/disk/by-* est le moyen le plus simple dans ce cas, si pour une raison quelconque vous voulez rendre la vie plus intéressante, vous pouvez utiliser HAL. Pour obtenir une propriété spécifique que vous utilisez (cela renvoie /dev/sd* sur un périphérique de stockage USB) :

hal-device

Il y a aussi :

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

Si vous voulez rendre les choses encore plus compliquées, vous pouvez relativement facilement écrire vous-même un automate basé sur HAL , qui peut être très pratique si vous voulez automatiser complètement les choses. Et juste pour être complet, il y a aussi :

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

Qui fournit quelques informations générales sur l'USB et votre matériel en général.

10
10
10
2015-11-10 02:47:28 +0000
sudo fdisk -l

Et il suffit d'analyser le résultat.

8
8
8
2008-09-16 04:18:39 +0000

Utilisez

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

Selon les règles udev par défaut, cela vous montrera la plupart des périphériques usb et vous affichera le lien symbolique vers leur nom de périphérique de bloc sur le système.

Si cela ne fonctionne pas, regardez directement /dev/disk/by-id/.

7
7
7
2012-08-24 17:37:56 +0000

Pour les dispositifs USB, vous pouvez simplement faire

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"
2
2
2
2008-09-16 03:55:24 +0000

Regardez l'arbre sous /dev/disk. Elle répertorie les disques et leurs partitions (systèmes de fichiers) selon différents schémas.

0
0
0
2008-09-16 03:53:27 +0000

Si vous débranchez la clé USB et la rebranchez, vous devriez la voir s'initialiser à partir du noyau (dmesg)

0
0
0
2018-11-29 19:02:45 +0000

Sur la base de l'excellente réponse de stormlash et avec une dépendance sur udev pour peupler l'arbre de périphériques “/dev/disk/by-id/usb”, vous pourriez définir un prédicat (Bash) comme suit :

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
}

Et puis l'utiliser :

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