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