Questão Como faço para descobrir qual / dev é uma unidade flash USB?


Eu quero montar uma unidade USB, dois deles e eu preciso de dois pontos de montagem diferentes. Infelizmente, o kernel Linux sofreu uma mudança de nome e não consigo descobrir qual /dev localização é o caminho certo. Existe uma maneira de olhar através dmesg ou /proc ou em outro lugar para descobrir qual nó de dispositivo é uma unidade USB.

(Estou usando o ArchLinux, se isso ajuda algum .../dev/sda é o primeiro disco rígido /dev/sr0 é uma unidade de DVD, etc.)

edit: O drive USB está conectado a um hub USB. Olhei através dmesg e ele diz que o hub estava conectado e varreu os 3 dispositivos conectados a ele. Ainda não consigo ver onde meu drive USB está.


152


origem


Não pode ver isso? Talvez espere um pouco. Ou tente outra porta USB. Veja quais diferenças existem em 'lsusb' - Nick Devereaux
Pode querer reformular a questão um pouco - nem todos os dispositivos usb são discos, afinal. - Arafangion
o df comando mostra onde foi montado - Will Sheppard


Respostas:


Maneira mais fácil: Olhe para a saída de dmesg depois de conectar o dispositivo USB. Deve mostrar-lhe o que /dev nó foi atribuído a ele.


77



dmesg funciona muito bem, mas eu tenho um caso em que dmesg não mostra o /dev nó: [421963.864281] usb 3-6: new high-speed USB device number 32 using xhci_hcd O que isto significa? Como posso montar este dispositivo? O dispositivo aparece lsusb... - modulitos
Na verdade, eu percebi isso. Houve uma atualização do kernel desde a última reinicialização que estava causando esse problema. Depois de uma reinicialização, meu usb monta muito bem. Espero que isso ajude alguém! - modulitos


Contanto que você esteja correndo udev, você pode fazer isso facilmente referenciando / dev / disk / by-id / usb-nome do fabricante_número de série. Eles aparecem como links simbólicos que você pode referenciar diretamente em seu fstab ou que você pode excluir usando readlink -e para determinar o dispositivo de bloco associado.

Aqui está um exemplo do mundo real. Na minha máquina, tenho 3 discos rígidos USB conectados. Cada um deles aparece em / dev / disk / by-id com números de série exclusivos (embora eles compartilhem uma string de fabricante comum). Criei links simbólicos para cada uma dessas três entradas exclusivas e agora posso determinar rapidamente qual unidade é qual (e qual dispositivo está associado a cada unidade) executando readlink -e linkname. Por exemplo, correndo readlink -e / root / disk2 na minha máquina exibe atualmente "/ dev / sde", enquanto readlink -e / root / disk3 não produz saída alguma.


53



Curto e simplesmente: for devlink in /dev/disk/by-id/usb*; do readlink -f ${devlink}; done - Felipe Alcacibar


Todas essas são boas sugestões, mas o método mais rápido e menos detalhado é simplesmente digitar o seguinte no terminal:

mount

que dará uma lista de todos os dispositivos montados (isto assume que a unidade USB está montada, o que geralmente é o caso das distribuições Linux modernas).


50



Não, não monta magicamente o seu dispositivo. Você tem que especificá-lo com mount /dev/id /mount/point, então isso não funciona. - polym
Minha resposta atende à pergunta do usuário "Existe uma maneira de procurar pelo dmesg ou / proc ou em outro lugar para descobrir qual nó de dispositivo é uma unidade USB" e não tem a finalidade de fornecer orientação sobre a praticidade de montar uma unidade no Linux . - AnotherLongUsername
Esta resposta resolveu uma questão quase idêntica para mim. - Matthew Brown aka Lord Matt
Eu acho que o comportamento do automount depende muito do tipo de distribuição. - jiggunjer
df também, suponho. - Alexey


Experimente o comando udevinfo -q all -n /dev/sda, Onde /dev/sda é o caminho para o seu disco. Isso lhe dá um monte de informações sobre o disco que você está olhando - há uma entrada que informa sobre o barramento ao qual está conectado.

Isto naturalmente evita que você tenha grep através do dmesg e / ou logs.

Atualizar 

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

Pelo menos a partir de julho de 2010 [1]  udevinfo foi substituído no Debian (e derivado) por udevadm info com um pequeno transitório com o qual havia links simbólicos, em breve preterido e removido (você ainda pode encontrá-los na máquina antiga não atualizada). Sempre de [1] podemos ler:

No udev 117, udevadm foi introduzido e udevinfo e outros programas se transformaram em links simbólicos de compatibilidade. Os links simbólicos foram preteridos em udev 128 e removido para sempre udev 147.


24



No Debian, udevinfo é renomeado udevadm. - Steve Pomeroy
No Ubuntu, o comando parece ser "udevadm info --query = all -n / dev / sda" - machineghost
Eu suponho que eles renomearam o comando em algum momento - quando eu escrevi a resposta (há muito tempo atrás) o comando funcionou no sistema Ubuntu que eu postei de. - Eltariel
Comando funciona ainda no Ubuntu udevadm info --query=all -n /dev/ttyUSB1 - Siddharth
udevadm info --query=all -n /dev/ttyUSB no Fedora também. - slm


O método mais simples para ver o que está acontecendo é apenas digitar (como root, é claro):

blkid -c /dev/null

isso fornece uma visão geral completa sobre todos os dispositivos de bloco, mesmo que não estejam montados


23



Nem toda distro tem isso. Qual você estava usando? - New Alexandria
Isso não gera nada na minha distribuição Raspbian. - Igor G.
Comando não encontrado: blkid - Igor G.
Nenhuma saída deste comando no Ubuntu 14.04 64-bit. - gbmhunter


/dev/disk/by-* é a maneira mais fácil neste caso, se por algum motivo você quiser tornar a vida mais interessante, você pode usar o HAL.

Para listar todos os dispositivos que você usa:

hal-device

Para obter uma propriedade específica que você usa (isso retornará /dev/sd* em um dispositivo de armazenamento USB):

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

Há também:

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

Se você quiser torná-lo ainda mais complicado, você pode escrever relativamente fácil Montador automático baseado em HAL, o que pode ser bastante útil se você quiser automatizar as coisas completamente.

E apenas para completude, há também:

lsusb -v
lshw

Que fornece algumas informações gerais sobre USB e seu hardware em geral.


11



/ dev / disk / by-id / * usb * é muito útil. - Rob
/ dev / disk / by-label ftw. Obrigado :) - Triptych


Usar

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

Sob as regras do udev padrão, isso mostrará a maioria dos dispositivos usb e mostrará o link simbólico para o nome do dispositivo de bloco no sistema.

Se isso não funcionar, olhe /dev/disk/by-id/ diretamente.


8





sudo fdisk -l

E apenas analise o resultado.


7



fdisk man page "Se nenhum dispositivo é dado, aqueles mencionados em / proc / partitions (se existirem) são usados." Rodar o fdisk pode não ser uma opção ... Baseado em um sistema Debian que eu sei que ele não tem instalado, meu palpite é que alguns sistemas GPT podem não instalar o software desnecessário. Ainda assim, a verificação de / proc / partitions deve ser uma opção. - TOOGAM
Esta foi a única opção que funcionou bem para mim. Me desculpe se não funcionou para você! - Felipe


Para dispositivos USB, você pode simplesmente fazer

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



+1. Script simples e conciso para fazer a tarefa automaticamente. - leesei


Dê uma olhada na árvore sob /dev/disk. Ele lista discos e suas partições (sistemas de arquivos) por vários esquemas.


2