[devel] I: rpm and modalias
Alexey Gladkov
=?iso-8859-1?q?legion_=CE=C1_altlinux=2Eru?=
Ср Окт 15 18:44:22 MSD 2008
Привет!
Возникло несколько идей относительно запаковки ядер и модулей. В
приватной переписке эта тема уже упоминалась. Я решил сделать стенд и
вынести эти идеи на публичное обсуждение.
Идея.
1. Сделать возможность устанавливать в систему как можно меньше лишних
модулей ядра и при этом не лишить людей возможности использовать
старую схему, при которой в систему ставятся почти все модули ядра.
2. Упростить процедуру обновления при смене железа. Пользователь не
обязан знать какой модуль поддерживает его новую железку. Если не
ставить на машинку все модели ядра, то udev такому пользователю не
поможет.
Реализация.
Сейчас modalias'ы стали вполне устоявшимся механизмом загрузки
модулей. Даже коммерческие модули поддерживают его.
Вот и возникла мысль передать modalias'ы модулей на клиентскую машину
до их установки. Затем узнать какие пакеты с модулями нужны в системе
и установить только их.
Как вы уже успели заметить, Костя пропатчил rpm-build-kernel для того
чтобы в Provides попадали modalias'ы от запакованных в них моделей.
Таким образом, модифицировать пакеты ядра и модулей не требуется
(почти во всех случаях это так). Их нужно только пересобрать с новым
rpm-build-kernel.
Не у всех модулей имеет смысл добавлять Provides т.к. некоторые модули
не относятся к железу. Например /lib/modules/*/kernel/crypto или
/lib/modules/*/kernel/net/netfilter. Именно поэтому Костя и ограничил
список, по которым ищутся *.ko .
Чтобы была более ясна мысль, мы сделали стенд.
http://www.unsafe.ru/lakostis/RPMS/ALTLinux/modalias/repo
Это репозиторий с двумя ядрами kernel-image-wks-smp-2.6.26-alt4 и
kernel-image-std-def-2.6.25-alt10. Ядро std-def просто пересобрано с
новыми rpm-build-kernel, wks-smp Костя для наглядности поделил на
более мелкие пакеты (не судите деление строго ... это только
демонстрация).
http://git.altlinux.org/people/legion/public/hardware-search.git
находятся утилита, которая показывает имена пакетов необходимых для
вашей системы.
Для того чтобы попробовать то что у нас получилось, вам не нужно само
ядро :) Достаточно добавить его в sources.list и сделать "apt-get
update". Далее можно пользоваться утилитой show-hardware-requires:
Usage: show-hardware-requires [options] <kernel-flavour>
'./show-hardware-requires wks-smp' покажет список модулей, которые
находятся по modalias'ам.
Чтобы узнать на основании чего утилита предложила именно эти модули,
можно воспользоваться "отладочным" режимом:
'./show-hardware-requires -vсu wks-smp' покажет список имён пакетов,
их modalias'ов, alias'ов, которые были по ним найдены и список
alias'ов для которых модули не были найдены.
--
Rgrds, legion
Подробная информация о списке рассылки Devel