Ще дві речі: переміщення Linux на корпоративні та інші великі сервери виявляло статичні /dev
руйнування. Просунута технологія, як у споживачів, так і на підприємстві, викривала статику / розробник як жарт. [Ця відповідь заповнює більшу частину попередньої історії, не особливо, чому devfs було замінено на udev].
Виснаження простору основного та мінорного чисел
/dev
Файли ідентифікуються в ядрі за їх основною та меншою кількістю. Ядро ніколи насправді не дбало про ім’я (а ви, наприклад, могли mv /dev/sda /dev/disk-1
б продовжувати працювати - хоча програми, звичайно, не знали, де його знайти).
За допомогою статики /dev
вам потрібно виділити основне / другорядне число для кожного потенційного пристрою, який може існувати. Ці цифри повинні бути унікальними у всьому світі, оскільки вони постачаються у складі дистрибутивів, а не створюються на вимогу. Проблема полягає в тому, що вони мають кожне 8-бітове число - діапазон становить 0–255.
Наприклад, Linux спочатку починався з 8,0 як sda, 8,1 - sda1, 8,16 - sdb тощо. Але люди продовжували додавати все нові й нові диски до машин, особливо якщо враховувати такі речі, як волоконний канал. Тож у якийсь момент для більшої кількості дисків було додано основні цифри 65–71. Пізніше основні числа 128–135. І все ж люди продовжували бажати більше дисків ...
І існували формати таблиць розділів на зразок GPT, підтримуючи більше розділів на диску. І звичайно, інші пристрої харчувалися через числовий простір: різні RAID-контролери, логічне управління гучністю тощо.
Кінцевий результат можна побачити у списку пристроїв LANANA Linux . Якщо ви подивитеся на список 2.6 (єдиний, який все ще є), використовується велика кількість основних блоків через 200 (макс .: 255) - використовується. Ясна річ, цифри б закінчилися.
Змінити на більшу кількість було непросто. Він змінює ядро ABI. Залежно від файлової системи, вона змінює макет на диску. Але, звичайно, більшість цих пристроїв не існувало ні в одній системі, навіть на одному, де (наприклад) було запущено SCSI-диски, мабуть, було багато вільних речей - можливо, він не потребував жорсткому диску IBM XT, наприклад.
З динамікою /dev
, дистрибутиву не потрібно відправляти номери пристроїв. Вони більше не повинні бути унікальними у всьому світі. Вони навіть не повинні бути унікальними в чоботях.
Назви пристроїв були непередбачуваними
Раніше було дуже просто присвоїти номер усьому. Рада мала два канали IDE; кожен канал IDE підтримував одного ведучого та одного підлеглого. Ви можете призначати порядок каналу та замовлення головного, а потім підлеглого. Так hda
стає першим каналом, господарем; hdb
перший канал, підлеглий; hdc
другий канал, майстер; тощо. Вони були передбачуваними та стабільними. Вони можуть змінитися, якщо ви додасте новий накопичувач або видалите один, але відсутня зміна апаратури, вони були статичними.
Ви можете помістити /dev/hda1
у вашому /etc/fstab
і бути впевнені , що він залишився б працювати, по крайней мере , відсутні апаратні зміни.
IDE працював так. Нічого після цього не відбувається.
SATA здається простим: один порт, один диск. Але не так; це дозволяє портові множники. І це дозволяє здійснювати гарячу заміну. Тим не менш, відсутні апаратурні зміни, ви фактично можете продовжувати працювати.
USB набагато гірше. Це не тільки дозволяє гарячу заміну, це типово. Люди весь час підключають USB-флешки. Крім того, пристрої можуть зайняти деякий час для зондування - і насправді вони можуть змінюватися, коли їм здається, що потрібно (наприклад, при включенні або вимкненні режиму зберігання USB на телефоні). Firewire подібний. З цим не можна реально створити стабільне відображення.
Мережеві приєднані диски не мають притаманного порядку порту. Єдине замовлення, яке використовує ядро, - це порядок, в якому вони з'явилися. Те саме з логічними томами.
Пошуки швидкості завантаження також погіршили ситуацію. Спочатку ядро із задоволенням сиділо б і чекала досить тривалий час, наприклад, всі USB-пристрої для ініціалізації. Для повного дослідження всіх шин SCSI і т. Д. Ці зонди були перетворені на основні завдання; черевик більше не буде чекати на них. Пристрої додаються по мірі завершення зондів.
Таким чином, ядро було залишене в більшій чи меншій мірі, "в якому б порядку вони не з'являлися". Це означало, що багато типів пристроїв можуть і змінювали порядок кожного завантаження - те, що було на одному завантаженні, /dev/sdb
було на іншому завантаженні /dev/sdc
. Це робить ідею статики /dev
жартом.
Підсумок
Коли ви приймаєте комбінацію статичних /dev
ставати все безглуздішими через непередбачувані замовлення зондування пристрою та продовжуєте виділяти статичні основні / незначні числа, що призводять до значної роботи, щоб не закінчилося, стає зрозуміло, чому розробники Linux вирішили перейти на динамічну /dev
.
/dev
які не (легко чи зручно) стосуються таких речей, як людина, що підключається до мережевого адаптера USB або адаптери віртуальної мережі, що додаються або знімаються під час роботи системи. Однак, ніщо не заважає вам видалитиudev
та повернутися до звичайного старого/dev
маршруту статичного каталогу.