Коротка відповідь полягає в тому, що це робиться лише в тому випадку, якщо у вас є резервна копія фізичної файлової системи /dev
(і якщо ви використовуєте сучасний дистрибутив Linux, ви, мабуть, не робите).
Звідси випливає довга відповідь:
Все це повертається до оригінальної філософії UNIX, що все є файлом. Ця філософія є частиною того, що зробило UNIX таким універсальним, оскільки ви могли безпосередньо взаємодіяти з пристроями з простору користувачів, не потребуючи спеціального коду у вашій програмі, щоб безпосередньо спілкуватися з фізичним обладнанням.
Спочатку це /dev
був лише інший каталог із відомим іменем, куди ви поміщали файли пристрою. Деякі системи UNIX все ще застосовують такий підхід (я вважаю, що OpenBSD все ще є), і ви зазвичай можете сказати, чи є така система, оскільки вона буде мати багато файлів пристроїв для пристроїв, яких система насправді не має (наприклад, файли для кожного можливий розділ на кожному можливому диску). Це економить місце в пам’яті та час під час завантаження ціною використання трохи більше дискового простору, що було гарною торгівлею для ранніх систем, оскільки вони, як правило, дуже обмежені в пам'яті та не дуже швидкі. Це, як правило, називається статичним /dev
.
У сучасних системах Linux (і я вважаю, також FreeBSD і, можливо, останні версії Solaris) /dev
- це тимчасова файлова система пам'яті, заселена ядром (або udev, якщо ви використовуєте Systemd, оскільки вони не довіряють ядру робити майже нічого) . Це економить трохи дискового простору ціною деякої пам’яті (як правило, менше кількох МБ) та дуже невеликими накладними витратами на обробку. Він також має ряд інших переваг, причому одним з найбільших є те, що легше виявити апаратне забезпечення з гарячим підключенням. Зазвичай це називається динамічним /dev
.
В обох випадках, до вузлів пристрою можна отримати доступ через звичайний VFS-шар, що за визначенням означає, що вони повинні мати inode (навіть якщо це віртуальний, який просто існує, щоб такі речі, як stat()
працює, належить. З практичної точки зору, це має нульовий вплив на системи, які використовують динамічну, /dev
тому що вони просто зберігають вкладиші в пам'яті або генерують їх у міру необхідності, а також біля нульового впливу, коли /dev
є статичним, тому що індекси займають майже нульовий простір на диску, а більшість файлових систем або не мають верхньої межі на їх чи способу надання більше, ніж кому-небудь, можливо, буде потрібно.