Por que o Linux precisa ter os arquivos '/ dev / cdrom' e '/ media / cdrom'? [duplicado]

21

Inspirado por esta questão . Por que o Linux precisa dos dois /dev/cdrom e /media/cdrom ?

Por que não apenas acessar arquivos no CD-ROM por meio de /dev/cdrom ?

    
por smwikipedia 18.03.2016 / 10:15

7 respostas

41

/media/cdrom é uma convenção para o ponto de montagem , enquanto /dev/cdrom é o dispositivo especial que pode ser montado no primeiro.

Você precisa dos dois, porque eles servem a propósitos diferentes: a maioria dos aplicativos não lê diretamente do dispositivo especial, mas pode ler de um sistema de arquivos (algo que está montado)

    
por 18.03.2016 / 10:18
19

(Obrigado por tantas respostas à minha pergunta. Depois de pesquisar na web por um tempo, quero compartilhar meu próprio entendimento.)

De acordo com o aqui :

In Unix-like operating systems, a device file or special file is an interface for a device driver that appears in a file system as if it were an ordinary file.

De acordo com aqui :

The mount command serves to attach the filesystem found on some device to the big file tree.

Então, acho que há dois níveis diferentes de abstração de software aqui:

  • /dev/cdrom é um arquivo especial do dispositivo. Ele abstrai o hardware do CD-ROM como um dispositivo IO de bloco. Essa abstração é fornecida pelo driver de dispositivo.

  • /media/cdrom é um ponto de montagem para um sistema de arquivos. Por isso, fornece um nível mais alto de abstração do hardware de CD-ROM, ou seja, como um sistema de arquivos. Tal como o sistema de arquivos ISO-9660 . E essa abstração é fornecida pelo driver do sistema de arquivos.

Então, basicamente, dois locais de arquivos diferentes para dois níveis diferentes de abstração. E em diferentes cenários, podemos precisar de um diferente. Eu acho que outros sistemas operacionais como o Windows também oferecem opções tão diferentes apenas que o Linux o unifica em uma única hierarquia de arquivos.

(Eu acho que talvez eu deva fazer algum experimento escrevendo código C no Linux para interagir com /dev/cdrom e /media/cdrom . E veja como tudo acontece.)

(Eu continuarei aprendendo e refinarei minha compreensão conforme apropriado.)

    
por 18.03.2016 / 14:46
11

Por que temos os dois /dev/cdrom e /media/cdrom ?

Por que temos os dois /dev/sda2 e /home ?

Basicamente, /dev/cdrom é um arquivo . Quando você o acessa, você está acessando os bits e bytes individuais no CD (se houver um). Considerando que /media/cdrom é uma pasta . Quando você acessa, você está acessando os arquivos armazenados no CD.

Da mesma forma, /dev/sda2 representa o conteúdo bruto da segunda partição no primeiro disco rígido. Você escreveria diretamente para isso, por exemplo, se quiser formatar a partição. (O programa mkfs literalmente abre /dev/sda2 ou qualquer outra coisa e grava padrões de bits específicos nele.) Você então monta /dev/sda2 em, digamos, /home , e agora pode acessar o arquivos reais . Conforme você acessa os arquivos pelo ponto de montagem, o driver do sistema de arquivos lê e grava o arquivo de dispositivo subjacente.

É assim que o Unix faz as coisas.

    
por 18.03.2016 / 14:52
4
  • Você pode ver que /dev/cdrom é, na verdade, um arquivo especial de blocos , que é um arquivo de dispositivo .

    $ ls -l /dev/cdrom
    lrwxrwxrwx 1 root root 3 Mar 18 17:00 /dev/cdrom -> sr0
    $ ls -l /dev/sr0
    brw-rw----+ 1 root cdrom 11, 0 Mar 18 17:00 /dev/sr0
    
  • Visite Padrão de hierarquia do sistema de arquivos :

    /media Mount points for removable media such as CD-ROMs (appeared in FHS-2.3).

    $ ls -ld /media/cdrom/
    drwxr-xr-x 2 root root 4096 Jun 15  2015 /media/cdrom/
    

    Este diretório contém subdiretórios que são usados como pontos de montagem para mídias removíveis, como disquetes, cdroms e discos zip.

Portanto, /dev/cdrom e /media/crdom são totalmente diferentes. um é um arquivo bloco / dispositivo para o CD-ROM, enquanto outro é um diretório para sua montagem!

    
por 18.03.2016 / 13:26
1

Uma boa fonte de informações que cobre isso (e mais) pode ser encontrada aqui link

  • / media = > Pontos de montagem para mídia removível, como CD-ROMs (apareceu no FHS-2.3).
  • / mnt = > Sistemas de arquivos montados temporariamente.
por 18.03.2016 / 13:58
1

Why not just access files on the cdrom through /dev/cdrom

Além das respostas já fornecidas, você não pode usar /dev/cdrom para acessar o conteúdo do cdrom porque a montagem /dev/cdrom (os arquivos presentes no cdrom) sobre /dev/cdrom (o dispositivo) é uma operação proibida.

No Linux, você só pode montar um sistema de arquivos sobre um diretório existente, não sobre um arquivo ou dispositivo existente.

Se o sistema operacional permitir tal operação, um efeito colateral seria acessar o original /dev/cdrom não seria mais possível após a montagem.

Se você realmente quiser acessar o seu cdrom através de /dev/cdrom , aqui está um hack que deve funcionar:

umount /media/cdrom
mv /dev/cdrom /dev/cdrom-org
mkdir /dev/cdrom
mount /dev/cdrom-org /dev/cdrom

Claro, não há muito sentido em fazê-lo.

    
por 18.03.2016 / 15:21
1

Os drivers de dispositivos Linux são expostos como arquivos especiais. Utilitários / aplicativos executam operações de arquivos nesses arquivos (chamadas ioctl) para controlar os dispositivos.

Um exemplo de um utilitário que faria chamadas para um arquivo especial para controlar o dispositivo é "mount".

O utilitário de montagem é um programa com o objetivo de apresentar os dados no dispositivo cdrom como uma estrutura dir / file. Essa é uma maneira bem compreendida e conveniente de os usuários usarem os dados simplesmente lendo-os na estrutura de arquivos criada pelo utilitário de montagem.

Um dispositivo de cdrom suporta muitas outras operações no ficheiro especial, p. para abrir / fechar a bandeja etc.

Muitos arquivos especiais usados para controlar dispositivos são armazenados em / dev para tornar mais simples para desenvolvedores / usuários de utilitários saberem onde procurá-lo.

Além disso, utilitários que apresentam dados em dispositivos (por exemplo, cdrom, sdcard, memory stick etc.) como uma estrutura dir / file o fazem em / media para tornar simples para desenvolvedores / usuários saberem onde procurar.

Ambos são, portanto, usados para seu próprio propósito.

    
por 19.03.2016 / 03:15