[devel] startup and standalone versions of systemd utilities.

Alexey Gladkov legion на altlinux.ru
Вт Фев 9 16:39:53 MSK 2021


On Tue, Feb 09, 2021 at 04:03:15PM +0300, Alexey V. Vissarionov wrote:
> On 2021-02-08 11:46:18 +0100, Alexey Gladkov wrote:
> 
>  >>> udevd требует systemd-utils. Разделение миров systemd и sysv
>  >>> невозможно пока они оба используют udevd.
>  >> Ну в общем-то выкинуть udev - совершенно не проблема... у меня,
>  >> например, его просто никогда не было.
>  >> % zgrep DEVTMPFS /proc/config.gz
>  >> CONFIG_DEVTMPFS=y
>  >> CONFIG_DEVTMPFS_MOUNT=y
>  > Не путайте тёплое с мягким. udev уже давно не создаёт файлы
>  > устройств.
> 
> Да ну? А как же надпись "populating /dev" при загрузке?

Уф. Ну вы хоть бы постарались почитать прежде чем писать. udev c 2012 не
умеет создавать устройства и не умеет работать без devtmpfs. До этого он
прекрасно умел работать с простым tmpfs.

https://github.com/systemd/systemd/commit/220893b3cbdbf8932f95c44811b169a8f0d33939

> Врет?

Раньше (когда он создавал файлы устройств) он досоздавал устройства на
tmpfs. Советую почитать, что делает /etc/rc.d/init.d/udevd, когда пишет
"Populating /dev" и что происходит после этих команд.

>  > Для этого как раз используется devtmpfs. udev нужен для обработки
>  > факта появления устройства и ещё некоторых эвентов ядра.
> 
> Если точнее, _был_ нужен во времена /sbin/hotplug - сейчас все
> это можно получить от ядра через netlink socket откуда угодно,
> поэтому CONFIG_UEVENT_HELPER в ядре можно даже не включать.
> 
> Кстати, что любопытно:
> 
> config UEVENT_HELPER
>  bool "Support for uevent helper"
>  help
>  The uevent helper program is forked by the kernel for
>  every uevent.
>  Before the switch to the netlink-based uevent source, this
>  was used to hook hotplug scripts into kernel device events.
>  It usually pointed to a shell script at /sbin/hotplug.
> 
> этот самый /sbin/hotplug изначально планировался как шелловский
> скрипт, а не кусок udev :-)

Брррр ... При чём тут /sbin/hotplug ? Этот хэлпер не имеет никакого
отношения к udevd и udevd также не требует этот параметр ядра. udevd
использует как раз netlink для получения эвентов ядра.

По сути udevd и есть тот удобный механизм, который позволяет реагировать
на эвенты ядра, приходящие через netlink.

Да и во времена, как вы сказали, во времена /sbin/hotplug udevd был не
нужен, потому что его в те времена ещё не было. hotplug намного более
старый механизм.

-- 
Rgrds, legion



Подробная информация о списке рассылки Devel