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

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

Recentemente instalei outro disco rígido em meu computador Arch Linux. A primeira vez que inicializei tudo funcionou bem. Na próxima vez que reiniciei meu computador, fui recebido com um /dev/sda2 not founderro.

Veja, basicamente às vezes meu disco rígido de inicialização é sdae à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?

Responder1

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

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

Não estou familiarizado com o Arch, então explicarei como esse problema é resolvido no Ubuntu; os recursos subjacentes são fornecidos pelo kernel Linux, que é o mesmo, mas pode haver definições de configuração que fazem com que esses recursos funcionem de maneira diferente no Arch.

Em vez de usar /dev/sda2como dispositivo raiz (a root=configuração ) no bootloader, 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, então você deseja o UUID do sistema de arquivos que está no /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 a 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}"

Responder2

Dê uma olhadaNomeação de dispositivo de bloco persistente.

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

Você terminará com um fstab mais ou menos assim:

LABEL=boot /boot ext2 defaults 0 1
LABEL=swap swap swap defaults 0 0
LABEL=root / ext4 defaults 0 1

informação relacionada