Como lidar com atribuições de disco rígido não determinantes?

2

Instalei recentemente outro disco rígido no meu computador Arch Linux. A primeira vez que eu inicializei tudo funcionou bem. Na próxima vez em que reiniciei o computador, fui saudado com um erro /dev/sda2 not found .

Veja, basicamente, às vezes, meu disco rígido de inicialização é sda e às vezes é sdb . Parece ser completamente aleatório e não vejo nenhuma opção para torná-lo não aleatório no BIOS. Como faço para corrigir isso?

    
por Earlz 22.12.2010 / 06:50

2 respostas

2

Se os dois discos rígidos estiverem em interfaces diferentes e controlados por drivers diferentes, o Linux os nomeará na ordem em que os drivers forem inicializados. Se as inicializações estiverem em paralelo, isso pode, de fato, fazer com que as atribuições de nomes de dispositivos variem.

Os nomes dos dispositivos são atribuídos por udev . Seu problema é mencionado no wiki do Arch, mas parece não haver uma solução.

Eu não estou familiarizado com o Arch, então vou explicar como esse problema é resolvido no Ubuntu; os recursos subjacentes são fornecidos pelo kernel do Linux, que é o mesmo, mas pode haver configurações que fazem esses recursos funcionarem de maneira diferente no Arch.

Em vez de usar /dev/sda2 como a configuração do dispositivo raiz (o root= ) no carregador de inicialização, você pode usar um UUID ou um rótulo, com a seguinte sintaxe:

… /boot/vmlinuz root=UUID=01234567-89ab-cdef-0123-456789abcdef ro …
… /boot/vmlinuz root=LABEL=mylabel ro …

O UUID identifica um sistema de arquivos exclusivamente, portanto você deseja o UUID do sistema de arquivos que está em /dev/sda2 . No Ubuntu, /dev/disk/by-uuid/01234567-89ab-cdef-0123-456789abcdef é um link simbólico para /dev/sda2 . Se o seu sistema de arquivos tiver um rótulo (definido manualmente, cabe a você impor exclusividade), há um link simbólico em /dev/disk/by-label . Os rótulos e links UUID são gerados pelas seguintes regras do udev:

ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"
    
por 22.12.2010 / 23:19
1

Dê uma olhada em Nomeação de dispositivo de bloco persistente .

Pessoalmente, acho que os rótulos são os melhores, já que fornecem a exclusividade dos UUIDs, mas são legíveis por humanos.

Você vai acabar com um fstab assim:

LABEL=boot /boot ext2 defaults 0 1
LABEL=swap swap swap defaults 0 0
LABEL=root / ext4 defaults 0 1
    
por 03.01.2011 / 21:28