Re: DevFS и прочие
Артём Н. <[email protected]>
| Newsgroups | gmane.linux.debian.user.russian |
|---|---|
| Message-ID | <[email protected]> |
Спасибо. > Видимо это и есть ответ на ваш вопрос:) Похоже, что да, и ответ полный: написано подробнее и точнее, чем мой текст. Мне остаётся это только в "художественном стиле" переписать, и всё. 31.07.2022 20:03, IL Ka пишет: >> >> >> Но это же делает набор правил уже *после* того, как устройство было >> выставлено драйвером. >> Или я что-то неправильно понимаю? >> > > Не совсем imho: В devfs файлы устройств появлялись от вызова драйвером > devfs_register. > devfsd мог по ним сделать символические ссылки, но сами файлы он не трогал. > В случае же udev, драйвер создает специальную структуру (она видна в /sys), > и посылает uevent (через NETLINK), и udev уже создает нужную запись. > > Кмк, дело было так: > > До 2.4 все устройства создавались mkdev и драйвер привязывался к major > номеру. > Ненужные файлы забивали /dev, путали пользователя, имели проблемы с > безопасностью (решение о пермишенах принимал автор скрипта MAKEDEV) а еще и > major номера начали кончаться (их было-то всего 255). > > В 2.4 проблему решили devfs, позволив драйверу самому создавать устройство > через devfs_register. > Подробнее погуглите главу "The Device Filesystem" второго (не третьего!) > издания Linux Driver Development. > > Стало лучше: в dev не стало несуществующих устройств и драйвер смог > выбирать пермишены на файл. > Однако осталась проблемы, наример пользователь всё еще не мог выбирать как > назвать устройство оперируя его идентификатором. > У каждой шины (PCI, USB) у устройства есть уникальные ID, и хотелось бы > привязывать имена к ним. > Кроме того, все существующие имена приходилось хранить в памяти ядра > (невыгружаемой). Появилось желание вынести это в userspace. > > Всё это привело к вот такому (там много жалоб на devfs): > http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf > > В 2.6 сделали sys, куда драйверы стали репортовать свои устройства, затем > посылать uevent, который забирал udev, и на основе рулов создавал нужное > устройство, > а еще он по D-Bus мог сообщить об этом вашему DE, чтобы тот нарисовал > красивый попап. > > Почитать можно тут: > https://linux-kernel-labs.github.io/refs/heads/master/labs/device_model.html#sysfs > > Часть людей была против, вот тут их переубеждают: > https://lwn.net/Articles/65197/ > > Затем udev смерджили с systemd:) > > Но тут оказалось, что udev не нравится емебдщикам и не подходит для всяких > rescue mode, потому что требует нехилый userspace udev. > > Тогда был создан devtmpfs (тут подробно написано) > https://lwn.net/Articles/330985/ > > Он просто брал имена (те, что драйверы репортуют в sys)и создавал для них > устройства. Файловая система была создана на основе tmpfs, так что она была > намного проще, и позволяла udevу работать поверх нее > > Естественно, все тут же сказали "мы опять изобрели devfs!" > https://lwn.net/Articles/331818/ > > Но утверждается, что: > * devtmpfs проще (сделана на основе tmpfs) > * совместима с udev > > Видимо это и есть ответ на ваш вопрос:)