[devel] udevless информация о блочных устройствах

Alexey Gladkov legion на altlinux.ru
Вс Июн 16 15:10:20 MSK 2019


On Sat, Jun 15, 2019 at 07:53:05PM +0300, Leonid Krivoshein wrote:
> >> ls /run/udev/data/b[0-9]*
> > Аналог этому /sys/dev/block/*
> 
> Да, во многом информация между sysfs и тем, что udev хранит в ramfs, 
> пересекается, и про /sys/dev/block я конечно же знаю. Раньше я так и 
> делал, получая часть информации через sysfs, а другую часть -- через 
> blkid, blockdev, итп, на что требуется root. Поэтому и озадачился 
> сабжем. Хотелось бы написать основной код, работающий без рутовых 
> привилегий. Но вопрос в том, возможно ли это на системах без udev.

Ты хочешь получить информацию, которая предназначена только руту :)

Очень похоже, что ты хочешь сделать udev в виде утилиты suid-ной. Потому
что для получения этой информации нужен рут. Это может быть отдельный
демон с правами или утилита.

> >> ls /sys/block/*/uevent
> >>
> >> ? (Можно просто ДА или НЕТ, работать должно из под обычного пользователя).
> > То что находится в /sys никак не связано с udev. Главная проблема в том,
> > чтобы загрузить правильный модуль, чтобы появилась информация в sysfs.
> 
> С этой проблемой с некоторых пор тоже знаком. И как её нынче принято 
> решать в отсутствии udev? Пока слышал только две версии: сборка ядра со 
> всеми модулями и скриптовый цикл, пытающийся загрузить все модули подряд 
> из initramfs.

Ой-ой. Ты забыл как работает udev. Он сам никаких модулей не грузит. С
этим система и без него справляется. Ядро вызывает утилиту прописанную в
/proc/sys/kernel/modprobe [1]. Эта утилита (в большинстве случаев это
/sbin/modprobe) загружает модуль.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/Documentation/debugging-modules.txt

-- 
Rgrds, legion



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