Como você determina o dispositivo root se / dev / root estiver faltando?

1

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á?

    
por Melab 28.05.2017 / 22:23

4 respostas

2

O comando mount mostrará:

  mount | sed -n 's|^/dev/\(.*\) on / .*||p'
    
por 29.06.2017 / 10:28
1

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 / .

    
por 28.05.2017 / 23:25
1

Resposta do os comentários aqui são muito simples. Basta ligar:

findmnt -n -o SOURCE /

Contanto que findmnt esteja presente ...

    
por 13.09.2018 / 15:15
0

Você pode usar stat / e inspecionar o número principal / secundário do dispositivo ou, com a ajuda do comando rdev , interpretar isso automaticamente.

    
por 28.05.2017 / 23:16