udev estranheza: / dev / hda1 montado mas arquivo não presente

2

Eu acho que minha pergunta está relacionada ao udev e / ou udisks, mas não tenho certeza do que está acontecendo aqui. Para começar, meu sistema funciona mais ou menos bem. A menor parte é devido ao fato de que, após alguns upgrades em minha instalação do Debian, a pasta / dev começou a agir de forma estranha, em relação ao que eu achava que sabia sobre o gerenciamento de unidades unix. Para chegar ao ponto, aqui estão dois comandos e sua saída:

$ ls /dev/h*
/dev/hidraw0  /dev/hidraw1  /dev/hidraw2  /dev/hpet

$ mount
/dev/hdb1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,size=5242880,mode=755,size=5242880,mode=755)
....

Agora, observe que /dev/hdb1 está montado (na verdade é!), mas o arquivo correspondente não aparece no diretório /dev ? Como isso pode ser? Se o arquivo não existir, onde é /dev/hdb1 listado como um link para a unidade? Mais importante, digamos que quero montar um CD. Eu coloquei na unidade, mas /dev/scd0 não aparece, então eu não posso fazer mount /dev/scd0 /media/cdrom porque isso me devolve um erro File not found . No entanto, depois de muito mexer eu encontrei duas maneiras de fazê-lo:

$ mount /dev/disks/by-id/ata-HL-DT-ST_DVDRAM_GSA-4160B_K3H4A7E1256
$ udisks --mount /dev/scd0 /media/cdrom

Ambos os comandos acima funcionam. Então, minha pergunta é: como udisks sabe como lidar com um arquivo de dispositivo que na verdade não existe e, possivelmente mais importante, por que mount acha que montou o sistema de arquivos em /dev/hdb1 enquanto o arquivo é nem aí?

Finalmente, caso isso tenha a ver com uma atualização recente do kernel:

$ uname -srv
Linux 3.1.0-1-686-pae #1 SMP Sun Dec 11 20:40:16 UTC 2011
    
por vlsd 28.12.2011 / 23:06

1 resposta

2

Udisks usa seu próprio esquema de nomenclatura de dispositivos. Ele segue as mesmas regras de nomenclatura normalmente seguidas pelo udev (o programa que gerencia entradas em /dev ), mas tem sua própria implementação dessas regras, ele não depende das entradas em /dev .

A entrada para o sistema de arquivos raiz mostrada por mount não é confiável, porque o sistema de arquivos raiz é montado pelo kernel no momento da inicialização e os scripts de inicialização tentam preencher /etc/mtab (o arquivo lido pelo mount command) mas não pode saber o nome exato do dispositivo usado pelo kernel (na verdade, é tecnicamente possível, mesmo que isso não ocorra normalmente, que o dispositivo que contém o sistema de arquivos raiz não tenha nenhuma entrada em /dev ). Verifique o conteúdo de /proc/mounts , que consulta o kernel em tempo real; você pode ver um nome de dispositivo diferente para / (que pode não existir em seu sistema também).

Parece que o seu sistema não possui algumas regras udev . Essas regras estão no pacote udev , especificamente em /lib/udev/rules.d/60-persistent-storage.rules . A primeira coisa a fazer é garantir que seu pacote udev esteja atualizado, já que versões mais antigas do udev às vezes lidam mal com os novos kernels. E certifique-se de que o arquivo de regras esteja lá e não esteja danificado.

    
por 29.12.2011 / 01:42