[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

DevFS и прочие



Здравствуйте.


Пишу врезку для главы книги, и нужно краткую историю DevFS привести.
Кто-нибудь помнит реальные причины того, почему devfs "не взлетел" и был заменён на devtmpfs?

Уверен, что тут есть те, кто и первой активно пользовались, и в любом случае, буду вам благодарен за любые замечания по тексту:

```
Существовало несколько вариантов поддержки устройств в Unix-подобных ОС и в Linux, в частности. Один из первых - скрипт MAKEDEV, который через вызов makedev() создаёт большой набор файлов устройств, не проверяя то, есть эти устройства реально или нет. Если пользователь обратится к несуществующему устройству, система просто выдаст ошибку. Тогда /dev был лишь подкаталогом корневой файловой системы. И созданные файлы устройств существовали там всегда, а MAKEDEV запускался при необходимости.

Затем разработчики Linux добавили в ядро поддержку devfs (не той, которая используется сейчас). С ней возникли проблемы. Например, пользовательские скрипты при загрузке должны были ожидать заполнения иерархии и как-то синхронизироваться, необходимость явных вызовов изо всех драйверов и т.д. Проблемы решались с переменным успехом, но система не прижилась.

Следующим шагом был демон devfsd, обращающийся к ядру. Он создавал устройства, о которых ядро предоставляло информацию (т.е. которые реально существуют). У такого подхода были недостатки: излишние обращения к ядру, по сути двойное перечисление устройств, понижающие скорость загрузки, необходимость поддержки в пространстве пользователя. Всё это усложняло использование системы во встраиваемых устройствах.

Современный Linux монтирует в /dev файловую систему DevTmpFS, которая сразу отображает все перечисленные ядром устройства, и поддерживающий различные правила и события демон udev, при необходимости, обеспечивающий её динамическую конфигурацию из пространства пользователя.
```


Reply to: