devices dentro de / dev - sua nomenclatura é persistente por padrão?

0

Posso verificar se dispositivos como sda, nomeando sdb em / dev / são persistentes por padrão

ou

existem algumas regras do udev para criar nomes persistentes para elas?

O próprio udev cria nomes de dispositivos dinamicamente em / dev, mas usa regras para garantir nomenclatura presistente?

    
por Noob 26.06.2015 / 12:40

1 resposta

4

A nomeação de dispositivos é executada quando os dispositivos são inicializados pelo kernel - portanto, não, a nomenclatura não é persistente. Comumente, os UUIDs são usados para identificar discos, pois / dev / sdX está sujeito a alterações. Pode-se usar o udev para reconhecer discos pelo seu número de série (ou algum outro atributo) e criar um link simbólico em / dev, por exemplo, / dev / mydisk1.

Existem várias maneiras que o / dev é preenchido; mais comumente (nowdays) o kernel usa o devtmpfs para popular / dev na inicialização dinamicamente. O Udev, em seguida, assume e manipula a adição de dispositivos, a remoção, o script, etc.

Na página do Wiki do Gentoo no uDev

The kernel detects devices asynchronously, udev mirrors the kernel's sysfs filesystem and so the devices are named and numbered in order of detection. So by default udev provides no persistent device names. However there are mechanisms for some device classes to provide these

Eis uma resposta recente a uma pergunta semelhante descrevendo o processo de configuração de um nome de usuário, com links para outras respostas relevantes. ..

EDIT: Para o fstab, é recomendado configurar seus dispositivos usando o UUID em vez de configurar um link simbólico do udev; execute o seguinte

blkid /dev/sda1 -s UUID -o value

A saída será o UUID da partição, que você pode usar no fstab. Em vez de / dev / sda1 use UUID = thelonguuidabove123456

EDIT 2: A sequência de eventos durante a inicialização será algo assim, dependendo de como o seu kernel / userspace está configurado:

  1. O Kernel inicializa um sistema de arquivos raiz vazio contendo uma pasta vazia / dev. Essa pasta é preenchida pelo kernel usando um devtmpfs, um pseudo-sistema de arquivos dinâmico contendo entradas para cada dispositivo de hardware. Este é um processo dinâmico e os dispositivos estão sujeitos a alterações. Neste ponto estamos em um ramdisk e espaço no kernel, não há um sistema de arquivos udev / root
  2. Em cima disso é montado o sistema de arquivos initrd / initramfs, que fornece mais 'coisas' para colocar 'outras coisas' em funcionamento - por exemplo, pode conter ferramentas fsck, módulos do kernel, coisas assim. / dev ainda é gerenciado pelo devtmpfs.
  3. Acima disso, é montado o sistema de arquivos raiz, o init foi executado e agora está iniciando serviços no userspace, um dos quais é o udev. Em seguida, o udev assume o diretório / dev e remonta o devtmpfs para is e, a partir daqui, o udev gerencia o conteúdo de / dev, usando eventos do kernel para "saber" quando os dispositivos são adicionados ou removidos e executando scripts conforme apropriado.

A mensagem do takehome aqui é que o / dev herdará qualquer nome inicialmente dado pelo kernel, e então administrará a adição / remoção. Sem alterações de hardware, os descritores do dispositivo em / dev provavelmente não serão alterados. No entanto, existem muitas circunstâncias em que elas podem mudar - sendo o ponto, é que os nomes em / dev não são totalmente confiáveis.

    
por 26.06.2015 / 13:13