Назва запитання задає: Чому нам потрібно монтуватися на Linux?
Один із способів інтерпретації цього питання: Чому нам потрібно видавати явні mount
команди, щоб зробити файлові системи доступними в Linux?
Відповідь: у нас немає.
Вам не потрібно чітко монтувати файлові системи, ви можете домогтися, щоб це було зроблено автоматично, і дистрибутиви Linux вже роблять це для більшості пристроїв, як і Windows та Macs.
Так що, мабуть, це не те, що ви хотіли запитати.
Друга інтерпретація: Чому нам іноді потрібно видавати явні mount
команди, щоб зробити файлові системи доступними в Linux? Чому б не змусити операційну систему завжди робити це за нас, а приховувати це від користувача?
Це питання, яке я читаю в тексті запитання, коли ви запитуєте:
Чому б зовсім не пропустити монтаж, зробіть наступне
ls /dev/cdrom
і чи є перелік вмісту компакт-диска?
Імовірно, ви маєте на увазі: чому б просто не зробити цю команду робити що
ls /media/cdrom
робить зараз?
Ну, у такому випадку /dev/cdrom
буде дерево каталогів, а не файл пристрою. Отож, як видається, ваше справжнє запитання: чому в першу чергу мати файл пристрою?
Я хотів би додати відповідь до тих, що вже були надані.
Чому користувачі можуть бачити файли пристроїв?
Кожного разу, коли ви використовуєте компакт-диск чи будь-який інший пристрій, який зберігає файли, використовується програмне забезпечення, яке інтерпретує все, що є на вашому компакт-диску, як дерево файлів файлів. Він викликається щоразу, коли ви використовуєте ls
чи будь-який інший тип команди чи програми, що здійснює доступ до файлів на вашому компакт-диску. Це програмне забезпечення є драйвером файлової системи для конкретної файлової системи, яка використовується для запису файлів на компакт-диск. Щоразу, коли ви перераховуєте, читаєте чи записуєте файли у файловій системі, завдання цього програмного забезпечення - переконатися, що відповідні операції читання та запису низького рівня виконуються на відповідному пристрої. Щоразу, коли ви mount
використовуєте файлову систему, ви повідомляєте системі, який драйвер файлової системи використовувати для пристрою. Чи ви робите це явно за допомогоюmount
команду або залиште це в ОС, щоб це було зроблено автоматично, це потрібно буде зробити, і, звичайно, програмне забезпечення драйвера файлової системи потрібно буде там бути в першу чергу.
Як драйвер файлової системи виконує свою роботу? Відповідь: це робиться, читаючи з файлу пристрою та записуючи його у файл. Чому? Відповідь, як ви вже заявляли: Unix був розроблений таким чином. У Unix файли пристроїв є звичайною низькою рівнем абстракції для пристроїв. Справжнє програмне забезпечення (драйвер пристрою) для певного пристрою повинно реалізовувати відкриття, закриття, читання та запис на пристрої як операції над файлом пристрою. Таким чином, програмному забезпеченню вищого рівня (наприклад, драйверу файлової системи) не потрібно знати стільки про внутрішню роботу окремих пристроїв. Драйвери пристроїв низького рівня та драйвери файлової системи можуть писатися окремо різними людьми, якщо вони домовляються про загальний спосіб взаємодії між собою, і саме для цього потрібні файли пристроїв.
Тому драйвери файлової системи потребують файлів пристрою.
Але чому ми, звичайні користувачі, бачимо файли пристроїв? Відповідь полягає в тому, що Unix був розроблений для використання програмістами операційної системи. Він був розроблений, щоб дозволити своїм користувачам писати драйвери пристроїв та драйвери файлової системи. Це насправді те, як вони пишуться.
Те саме стосується Linux: ви можете написати власний драйвер файлової системи (або драйвер пристрою), встановити його і потім використовувати. Це робить Linux (або будь-який інший варіант Unix) легко розширюваним (і це насправді є причиною запуску Linux): коли на ринок виходить якийсь новий апарат, або розроблений новий, розумніший спосіб реалізації файлової системи , хтось може написати код, щоб підтримати його, змусити його працювати та внести його в Linux.
Файли пристроїв полегшують це.