Corresponder números de porta a dispositivos
Eu encontrei esta pergunta porque eu estava tentando descobrir a mesma coisa. Aqui está o que eu descobri; deve funcionar em bash ou zsh:
for i in /dev/disk/by-path/*;do [[ ! "$i" =~ '-part[0-9]+$' ]] && echo "Port $(basename "$i"|grep -Po '(?<=ata-)[0-9]+'): $(readlink -f "$i")";done
A saída deve ser algo como isto:
Port 1: /dev/sda
Port 2: /dev/sdb
Port 3: /dev/sdc
Esses números de porta DEVEM correspondem aos números impressos na placa-mãe, embora isso pressuponha que o fornecedor da placa-mãe tenha considerado suficiente para corresponder aos números impressos na placa com os números de porta no chip controlador SATA. No mínimo, os caminhos do dispositivo permanecem estáveis, portanto, depois de estabelecer um mapeamento entre os números de porta listados e os números no painel, isso nunca mudará.
Esse snippet itera sobre o diretório /dev/disk/by-path
. Ele ignora os arquivos que terminam em -part<number>
, pois são apenas partições e extrai o número da porta do -ata<number>
no final dos nomes de arquivos restantes. Esses arquivos são links simbólicos para os tradicionais /dev/sdX
nós, o que é obtido usando readlink -f
.
Se você tiver vários controladores SATA, você terá vários dispositivos listados para os mesmos números de porta, porque cada controlador tem sua própria porta 1, porta 2 etc. Então, basta executar ls -l /dev/disk/by-path
e analisá-lo manualmente.
Descobrir qual dispositivo é seu dispositivo de inicialização
Para descobrir qual é o seu dispositivo de inicialização, execute mount | grep ' on / ' | cut -f 1 -d ' '
. Isso mostra o dispositivo montado em /
.