O título da pergunta é: Por que precisamos montar no Linux?
Uma maneira de interpretar essa pergunta: Por que precisamos emitir mount
comandos explícitos para disponibilizar sistemas de arquivos no Linux?
A resposta: nós não.
Você não precisa montar sistemas de arquivos explicitamente, pode organizar isso automaticamente, e as distribuições Linux já fazem isso para a maioria dos dispositivos, assim como Windows e Macs.
Então provavelmente não é isso que você queria perguntar.
Uma segunda interpretação: Por que às vezes precisamos emitir mount
comandos explícitos para disponibilizar sistemas de arquivos no Linux? Por que não fazer com que o sistema operacional sempre faça isso por nós e oculte-o do usuário?
Esta é a pergunta que estou lendo no texto da pergunta, quando você pergunta:
Por que não pular a montagem completamente e faça o seguinte
ls /dev/cdrom
e tem o conteúdo do CD-ROM listado?
Presumivelmente, você quer dizer: por que não apenas fazer com que esse comando faça o que
ls /media/cdrom
faz agora?
Bem, nesse caso, /dev/cdrom
seria uma árvore de diretórios, não um arquivo de dispositivo. Portanto, sua verdadeira pergunta parece ser: por que ter um arquivo de dispositivo em primeiro lugar?
Eu gostaria de adicionar uma resposta às que já foram dadas.
Por que os usuários conseguem ver os arquivos do dispositivo?
Sempre que você usa um CD-ROM ou qualquer outro dispositivo que armazena arquivos, é usado um software que interpreta o que estiver no seu CD-ROM como uma árvore de arquivos. É chamado sempre que você usa ls
ou qualquer outro tipo de comando ou aplicativo que acesse os arquivos no seu CD-ROM. Esse software é o driver do sistema de arquivos em particular usado para gravar os arquivos no CD-ROM. Sempre que você lista, lê ou grava arquivos em um sistema de arquivos, o trabalho desse software é garantir que as operações de leitura e gravação de baixo nível correspondentes sejam executadas no dispositivo em questão. Sempre que você é mount
um sistema de arquivos, você está dizendo ao sistema qual driver do sistema usar para o dispositivo. Se você faz isso explicitamente com ummount
comando, ou deixe que o sistema operacional seja feito automaticamente, ele precisará ser feito e, é claro, o software do driver do sistema de arquivos precisará estar lá em primeiro lugar.
Como um driver de sistema de arquivos faz seu trabalho? A resposta: faz isso lendo e gravando no arquivo do dispositivo. Por quê? A resposta, como você já declarou: O Unix foi projetado dessa maneira. No Unix, os arquivos de dispositivos são a abstração de baixo nível comum para dispositivos. O software realmente específico do dispositivo (o driver do dispositivo) para um dispositivo específico deve implementar a abertura, o fechamento, a leitura e a gravação no dispositivo como operações no arquivo do dispositivo. Dessa forma, o software de nível superior (como um driver do sistema de arquivos) não precisa saber muito sobre o funcionamento interno de dispositivos individuais. Os drivers de dispositivo de baixo nível e os drivers do sistema de arquivos podem ser gravados separadamente, por pessoas diferentes, desde que eles concordem em uma maneira comum de interagir entre si, e é para isso que servem os arquivos do dispositivo.
Portanto, os drivers do sistema de arquivos precisam dos arquivos do dispositivo.
Mas por que nós, usuários comuns, conseguimos ver os arquivos do dispositivo? A resposta é que o Unix foi projetado para ser usado por programadores de sistemas operacionais. Foi projetado para permitir que seus usuários escrevam drivers de dispositivo e drivers de sistema de arquivos. É assim que eles são escritos.
O mesmo se aplica ao Linux: você pode escrever seu próprio driver do sistema de arquivos (ou driver de dispositivo), instalá-lo e usá-lo. Torna o Linux (ou qualquer outra variante do Unix) facilmente extensível (e é de fato a razão pela qual o Linux foi iniciado): quando uma nova peça de hardware entra no mercado, ou uma nova maneira mais inteligente de implementar um sistema de arquivos é projetada. , alguém pode escrever o código para suportá-lo, fazê-lo funcionar e contribuir com o Linux.
Os arquivos do dispositivo facilitam isso.