Анонсирован (http://www.politreco.com/2011/12/announce-kmod-1/) первый выпуск проекта kmod (http://git.profusion.mobi/cgit.cgi/kmod.git/), в рамках которого началось формирование нового набора утилит и библиотеки для управления загрузкой модулей ядра Linux. Ключевым отличием от утилит, подобных modprobe и insmod, является использования в качестве основы библиотеки libkmod, функции которой можно использовать в любых других программах. Использование библиотеки позволит избавить от необходимости вызова внешних утилит такие приложения, как udev, инсталляторы, утилиты работающие на раннем этапе загрузки. Код всех компонентов нового инструментария распространяется под лицензией GPLv2.В десктоп-дистрибутивах и некоторых встраиваемых системах на этапе загрузки для проверки доступного оборудования используется udev, который создаёт устройства в директории /dev и на основании содержимого псевдофайловой системы /sys загружает необходимые для обеспечения взаимодействия с оборудованием моду...
URL: http://www.politreco.com/2011/12/announce-kmod-1/
Новость: http://www.opennet.me/opennews/art.shtml?num=32577
А modinfo ?
>Так как модулей загружается достаточно много, утилита modprobe может
>вызываться сотни раз, при этом не каждый запуск modprobe приводит к
>загрузке модуля так как модуль может уже быть загружен. Подобные
>действия приводят к большой паразитной >нагрузке и замедляют
>процесс загрузки.Хорошо.
вводное: Каждое устройство имеет PCI идентификатор.
Этому ID соответствует модуль, который
может зависить от других модулей.
Либо он есть, либо его нету.
Полагаю что имя модуля уникально.
И как она может вызываться "сотни" раз ?
Если вызывается, по списку загруженных модулей
пройтись не судьба ?Дальше.
Для ускорения загрузки Linux конфигурация и
компиляция ядра уже не нужна ?А вообще, одебилить всё можно, но не дебилам
как бы от этого не легче.От этого Linux более конкурентноспособным
не станет.
Для серверов это нахер ненадо.А тем, кому нравится перезагружать Linux,
типа "I like to move it, move it", пусть
выберут что-нибудь другое.
При загрузке драйвер может получать список драйверов. Напр. (абстрактно) драйвер кэша диска проверяет что загружен драйвер диска, или драйвер брандмауэра проверяет наличие хотя бы одного драйвера сетевой карты, и т.п.Как это делать? Сейчас через вызов утилиты и парсинг текстовика. Хмм... 21 век вроде...
Теперь будет API, который будет возвращать структуры и возможно (не знаю) даже энумератор, как в Windows, сокращающий нагрузку и затраты памяти (по сути энумератор - ссылка на элемент существующего L1, поэтому при запросе достаточно найти первый элемент, соответствующий отбору, а не выбирать весь список).
Драйверов много и вызовов тоже много.
Он предложил конфигурировать и собирать ведро на каждой конкретной железяке. 21 век вроде на дворе… Дальше можно было его не читать и даже не отвечать.
есть системы, где скорость загрузки критична.
вполне уже сейчас можно применять linux с RT-патчами в системах управления, когда важна скорость восстановления системы при различных аппаратных сбоях и случайных ошибках. Рестарт должен длиться доли секунды.
> Рестарт должен длиться доли секунды.и там не используют кастомное ядро без всяких удевов, а ставят полновесную универсальную систему? верю! и в то, что луна из лимбургского сыра сделана — тоже верю!
> и там не используют кастомное ядро без всяких удевов, а ставят полновесную
> универсальную систему?Ну так будет поменьше плясок с бубнами и в таких случаях. Или тебе нравится когда система работает в стиле виндус висты, загружаясь 5 минут?
> Ну так будет поменьше плясок с бубнами и в таких случаях.в каких? чего «меньше»? хинт: система, неоптимайзнутая производителем под его железо, называется «халтура».
>>хинт: система, неоптимайзнутая производителем под его железо, называется «халтура».Вы это разработчикам netBSD скажите, которые годами пилят архитектуру своей оси так чтобы ее можно было запустить на любом поддерживаемом компилятоом железе без изменения кода, только прекомпилировав под соотв. платформу.
*пЕрекомпилировав
>>>хинт: система, неоптимайзнутая производителем под его железо, называется «халтура».
> Вы это разработчикам netBSD скажите, которые годами пилят архитектуру своей оси так
> чтобы ее можно было запустить на любом поддерживаемом компилятоом железе без
> изменения кода, только прекомпилировав под соотв. платформу.Кто вам такое сказал? Там есть прослойка аналогичная HAL в винде которую и нужно писать под конкретное железо чтобы можно был взлететь. Компиляция спасёт только если кто-то уже постарался до вас.
В потребительских девайсах - да, полновесную универсальную систему. И да, там нажна скорость загрузки.
> В потребительских девайсах - да, полновесную универсальную систему. И да, там нажна
> скорость загрузки.и RT-ось, угу. посколькув оригинале ляпнул чушь, начал съезжать. abtreten!
> В потребительских девайсах - да, полновесную универсальную систему. И да, там нажна
> скорость загрузки.А можно пример этих самых потребительских девайсов?
Ещё наши деды поняли что там где это критично проще продублировать (3, 4 системы в резерве) чем городить непонятно что.
> Ещё наши деды поняли что там где это критично проще продублировать (3,
> 4 системы в резерве) чем городить непонятно что.И лучше разных.
> Для серверов это нахер ненадо.Зато в куче других мест - очень даже надо. Холодильники, телефоны и прочие точки доступа должны стартовать настолько быстро насколько возможно.
В холодильниках, телефонах и прочих embedded, производитель собирает систему под конкретный девайс и обходится без всяких udev, как было сказано выше. Система стартует мгновенно, просто загрузив ядро.
Давно пора. Хорошо, что такое важное новшество всё же запилили.
> Давно пора. Хорошо, что такое важное новшество всё же запилили.есть мнение, что не такое уж оно и важное, раз до сих пор вполне нормально без него жили.
> есть мнение, что не такое уж оно и важное, раз до сих
> пор вполне нормально без него жили.Ну если так рассуждать, тогда развивая мысль, на хлебе и воде можно в принципе перекантоваться.
нет, на 640К оперативки
>> Давно пора. Хорошо, что такое важное новшество всё же запилили.
> есть мнение, что не такое уж оно и важное, раз до сих
> пор вполне нормально без него жили.С сегодняшнего дня этот инструментарий установлен у меня на машине, люблю всё новое.
> Использование библиотеки позволит избавить от необходимости вызова внешних утилитА что, execve(2) у нас уже дорогой стал? Объясните, зачем линковаться динамически с библиотекой? Что, оверхэд у libc такой злой, что тратится куча времени?
modprobe/insmod, ясен пень, после первых запусков будут в кэше, mmap и готово. А то и раньше — заранее readahead положит.
Не осознаю.
>А что, execve(2) у нас уже дорогой стал? Объясните, зачем линковаться динамически с библиотекой? Что, оверхэд у libc такой злой, что тратится куча времени?Начало моего сообщения под номером 8.80 . Я думаю дело в гибкости системы. То что вы пишете про кэш и mmap - да, верно. Но как разработчик и архитектор системы скажу вам что рано или поздно наступает момент когда появляется необходимость выделения функионала (на выходе единственная концентрированная логическая структура в виде модуля) которые ранее был "размазан" по нескольким модулям и четко не выделялся. Такие необходимости возникают всегда если проект:
1) развивается и уже на есть (или на подходе) потребность в подобном;
2) должен обеспечивать гибкую структуру для работы с ней (в нашем случае имеется ввиду что окружение ядра должно обеспечивать гибкость для работы с функционалом управления модулями).Я не уверен что мои доводы вам покажутся достаточно весомыми, т.к. если вы не разрабатываете сложные проекты в несколько циклов развития - то велика вероятность что вы не поймете сходу о чем речь.
Вцелом же, делают правильное и нужное дело. Я вам гарантирую это!
Хорошее замечание.Отдельный механизм работы с модулями ?
В ядро всегда будут встроены модули, необходимые
для загрузки ОС на данной машине. И машины бывают
разные, со своими "капризами". И вариации устройств
к ним не всегда бывают большими.
> А что, execve(2) у нас уже дорогой стал?Дороже просто вызова в либу. Загрузка с диска бинаря, его парсинг, загрузка секций, педалинг релокейшнов и инициализация переменных, вгрузка всех потребных бинарю либ если кого еще нет в памяти, etc. В 100500 раз больше действий. Если в случае опача половина действий скипается т.к. бинарь уже висел в памяти, то всякие там modprobe - не демон, в памяти его никто не держит.
> А то и раньше — заранее readahead положит.Вы так говорите как будто на диске оно лежит в виде дампа который достаточно в оперативку вгрузить. Агащаз.
Он в памяти. Если друг за другом запускается, то вся загрузка, разбор бинарника и динамическое связывание пройдет один раз (в первый).
> Он в памяти. Если друг за другом запускается, то вся загрузка, разбор
> бинарника и динамическое связывание пройдет один раз (в первый).Только при условии что оно не успеет выгрузиться из памяти во всех копиях. А поскольку это не демон - очень даже успеет и будет каждый раз парситься/догружать + свой конфиг парсить и прочий бред. Так что в целом направление мысли у этих кексов правильное.
>Только при условии что оно не успеет выгрузиться из памяти во всех копиях. А поскольку это не демон - очень даже успеет и будет каждый раз парситься/догружать + свой конфиг парсить и прочий бред. Так что в целом направление мысли у этих кексов правильное.Убеждаюсь в очередной раз что люди педалируют те идеи которые им понятны. Однако, скорость исполнения, загрузка/выгрузка - это в совокупности лишь второстепенные вещи по отношению к проекту. Вы вдумайтесь насколько часто сегодня в обычной (не загрузка и запуск/перезапуск служб) работе системы этот функионал востребован (случами разработки и отладки/тестирования модулей ядра или ядра можно и вовсе пренебречь).
Я согласен что это не сильно приоритетное занятие и в списке насущных проблем оно хренадцатым номером, но если кому охота это написать - пусть будет :)
Мало библиотек, надо ещё добавить. Ну кому интересно, пусть пользуются, чего там. А так библиотека представляет чисто спортивный интерес сделать скорость загрузки linux сравнимой со скоростью загрузки dos. )
и будущим вирусам будет легче жить с kmod