[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