> лишь попытка сделать таковой), Универсальным интерфейсом должен быть библиотечный вызов. Ну как для fread() или там чего еще. А вот кто и по какому поводу модуль подгрузит - это уж его дело. Надо удеву - пусть удев грузит, дернув либу. Надо modprobe-у - пусть модпроб либу дернет. Ну и так далее.
Потому что когда каждый таскает с собой код для вгрузки модулей - это маразм. И зависимость программ от нестандартных посторонних исполняемых - тоже. Напрашивается вывод что должна быть шаред либа. Хартман, будучи программером, в отличие от местных оголтелых горлодеров видимо понимает что шаред либа там просто напрашивается.
При том для скриптов и утилит закладывавшихся на modprobe ничего не изменится. Все отличие будет в том что тот же modprobe будет не таскать весь код в себе а будет просто и-фейсом к либе. Ну и остальные утили так же смогут - там дел с рыбью ногу, а вот размер утилей заметно сократится. Т.к. код вгрузки будет в одном месте - шаред либе. А не в нескольких хакоулках. Это разумно, хорошо и правильно.
> в качестве такого универсального интерфейса выступает команда modprobe.
И вот это - криво. Ибо заставляет утилиты что-то там знать о каких-то нестандартных бинарниках и их дергании. Напрашивается нормальное API сделанное не через з@дницу.
> Не понятно другое - почему нельзя было просто добавить ключик --disable-kmod например
> и вызовы kmod модуля в этом случае просто приводят к запуску modprobe, а не
> к вызовам libkmod?
Технически наверное можно, но накукуй нужен весь этот геморрой? Как там утили внутри себя модули грузят - их собачье дело. Новые утили писать станет в разы проще, как и старые поддерживать. И ничему не противоречит тот же модпроб грузящий модули путем дерга вызова шаред библы, например. Зато код вгрузки модулей будет в каком-то одном месте, реюзаемом остальными.
> И волки сыты и овцы целы. Надо быстро - собирай с libkmod, надо переносимо - собирай без него.
Переносимо? А что, модули линя научились грузиться куда-то кроме линя? Или может у систем хоть названия и пути расположения модулей совпадают? Или в каком месте там переносимость вообще может возникать? Это системозависимая хрень, переносимость которой около нуля. Ну то-есть, в другой системе подсистема драйверов может быть устроена тотально иначе. И соответственно никакой особой переносимости там не будет.
> Самый логичный вариант и совсем не сложный по сути в реализации.
Пардон? Майнтенансить 2 варианта кода - геморройнее чем один. А ради чего все это - не понятно. Какая-то мифическая "переносимость", что довольно смешно звучит относительно вгрузки конкретных модулей конкретной операционки. А как, собственно, линевый модуль сможет вгрузиться на какой-то иной оси? Никак? Тогда где там переносимость? Даже у относительно родственных *никс-образных как минимум напрочь не совпадают названия модулей, а временами формат и уж тем более зависимости и прочая. А если операционка чуть иначе устроена - вообще швах.