Заголовок вопроса спрашивает: зачем нам монтировать на Linux?
Один из способов интерпретации этого вопроса: зачем нам нужно вводить явные mount
команды, чтобы сделать файловые системы доступными в Linux?
Ответ: мы не делаем.
Вам не нужно явно монтировать файловые системы, вы можете сделать так, чтобы это делалось автоматически, и дистрибутивы Linux уже делают это для большинства устройств, как это делают Windows и Mac.
Так что это, вероятно, не то, что вы хотели спросить.
Второе толкование: почему нам иногда нужно вводить явные mount
команды, чтобы сделать файловые системы доступными в Linux? Почему бы не заставить операционную систему всегда делать это для нас, и скрывать это от пользователя?
Это вопрос, который я читаю в тексте вопроса, когда вы спрашиваете:
Почему бы вообще не пропустить монтаж и сделать следующее
ls /dev/cdrom
и есть ли содержимое CD-ROM в списке?
Предположительно, вы имеете в виду: почему бы просто не сделать эту команду
ls /media/cdrom
делает сейчас?
Ну, в этом случае, /dev/cdrom
будет дерево каталогов, а не файл устройства. Таким образом, ваш реальный вопрос, по-видимому, таков: зачем вообще файл устройства?
Я хотел бы добавить ответ к уже заданным.
Почему пользователи видят файлы устройств?
Каждый раз, когда вы используете компакт-диск или любое другое устройство, на котором хранятся файлы, используется программное обеспечение, которое интерпретирует все, что находится на вашем компакт-диске, как дерево каталогов файлов. Он вызывается всякий раз, когда вы используете ls
любую другую команду или приложение, которое обращается к файлам на вашем компакт-диске. Это программное обеспечение является драйвером файловой системы для конкретной файловой системы, используемой для записи файлов на компакт-диск. Всякий раз, когда вы перечисляете, читаете или записываете файлы в файловой системе, задача этого программного обеспечения состоит в том, чтобы обеспечить выполнение соответствующих низкоуровневых операций чтения и записи на соответствующем устройстве. Всякий раз, когда вы mount
используете файловую систему, вы указываете системе, какой драйвер файловой системы использовать для устройства. Делаете ли вы это явно сmount
или оставьте это для ОС, чтобы сделать это автоматически, это нужно будет сделать, и, конечно, программное обеспечение драйвера файловой системы должно быть там в первую очередь.
Как драйвер файловой системы выполняет свою работу? Ответ: он делает это, читая и записывая в файл устройства. Почему? Ответ, как вы уже сказали: Unix был разработан таким образом. В Unix файлы устройств являются общей низкоуровневой абстракцией для устройств. Предполагается, что действительно специфичное для устройства программное обеспечение (драйвер устройства) для конкретного устройства реализует открытие, закрытие, чтение и запись на устройстве в качестве операций над файлом устройства. Таким образом, высокоуровневое программное обеспечение (такое как драйвер файловой системы) не должно знать столько же о внутренней работе отдельных устройств. Низкоуровневые драйверы устройств и драйверы файловой системы могут быть написаны отдельно разными людьми, если они договариваются о едином способе взаимодействия друг с другом, и именно для этого нужны файлы устройств.
Таким образом, драйверы файловой системы нуждаются в файлах устройства.
Но почему мы, обычные пользователи, получаем доступ к файлам устройства? Ответ в том, что Unix был разработан для программистов операционной системы. Это было разработано, чтобы позволить его пользователям писать драйверы устройств и драйверы файловой системы. Это на самом деле, как они пишутся.
То же самое верно для Linux: вы можете написать свой собственный драйвер файловой системы (или драйвер устройства), установить его, а затем использовать его. Это делает Linux (или любой другой вариант Unix) легко расширяемым (и это фактически причина, по которой Linux был запущен): когда на рынке появляется какое-то новое оборудование или разрабатывается новый, более умный способ реализации файловой системы. Кто-то может написать код для его поддержки, заставить его работать и добавить его в Linux.
Файлы устройства делают это проще.