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}"