Primeiro, use UUIDs de disco como o @grawity disse.
Se você quiser conhecer os UUIDs de tudo que se parece com um dispositivo de bloco para o Linux, use o comando blkid
. Eu acho que você pode fazer algo como blkid /dev/sda
para descobrir o UUID de sda
também.
Outra coisa que você pode fazer é usar os links simbólicos em /dev/disk/by-id
que são criados para cada disco baseado no barramento ao qual ele está conectado e seu modelo e número de série relatados.
Tecnicamente, o Linux não sabe ou não se importa com o dispositivo do qual foi carregado, porque
- essa é a tarefa do bootloader - que é executada antes de o kernel estar em execução - para carregar o kernel na memória.
- qualquer coisa que não esteja no kernel necessário na inicialização está no initramfs (initrd), como drivers, utilitários do início do userland - carregar esse também é o trabalho do bootloader.
Agora, depois que o Linux é carregado, scripts de inicialização ou qualquer outro mecanismo executado sob o kernel tenta montar um sistema de arquivos raiz para que você tenha outras coisas além do kernel, além de swap, etc. Basicamente todas as coisas em seu %código%. É com isso que você realmente se importa e esse arquivo terá as informações necessárias. Você pode usar UUIDs em /etc/fstab
(e acredito que a maioria das distribuições já os usa) - então, com um par de /etc/fstab
e grep
, você pode tirar UUIDs daqui que quiser.
Exemplo (isso provavelmente pode ser feito melhor): cut
E você pode usar a saída disso para cat /etc/fstab | grep "/ " | cut -f 1 -d " "
para encontrar o UUID do seu sistema de arquivos raiz ou qualquer outra partição.