O comando mount mostrará:
mount | sed -n 's|^/dev/\(.*\) on / .*||p'
Na distribuição que estou usando agora, o Arch Linux ARM, o Linux é lançado sem um disco RAM inicial, o que significa que o kernel faz todo o trabalho na montagem do sistema de arquivos raiz. Este sistema é instalado em um cartão SD e possui um script que precisa determinar o nó do dispositivo do sistema de arquivos em que ele reside. Esse nó de dispositivo pode mudar dependendo de como inicializo o dispositivo (por exemplo, eu o conecto a outro dispositivo que já está em execução).
Eu posso determinar o ponto de montagem usando df -k --output=target ${0} | sed "1d" . Para determinar o dispositivo de origem, corro df -k --output=source ${0} | sed "1d" . Se eu iniciei no Arch Linux, o resultado do último comando mostra /dev/root , que não existe . Claro, em alguns sistemas, o udev cria um link simbólico de /dev/root para o dispositivo raiz real, mas o meu não faz isso. Eu poderia examinar o conteúdo de /proc/cmdline , mas isso permanece o mesmo durante todo o tempo de funcionamento de um kernel, o que significa que não é confiável.
Quando obtenho o /dev/root , como posso determinar o verdadeiro dispositivo de bloco subjacente em que ele está?
O comando mount mostrará:
mount | sed -n 's|^/dev/\(.*\) on / .*||p'
Supondo que haja um arquivo em /etc/fstab
sudo cat /etc/fstab | grep '\s\/\s'
fornecerá uma entrada fstab para o dispositivo de bloco montado em / .
Resposta do os comentários aqui são muito simples. Basta ligar:
findmnt -n -o SOURCE /
Contanto que findmnt esteja presente ...
Você pode usar stat / e inspecionar o número principal / secundário do dispositivo ou, com a ajuda do comando rdev , interpretar isso automaticamente.
Tags mount filesystems