Re: драйверовая дискета

2003-06-12 Пенетрантность Dmitry A. Fedorov
On Wed, 11 Jun 2003, Elena Egorova wrote:

> On Wed, Jun 11, 2003 at 07:32:25PM +0700, Dmitry A. Fedorov wrote:
> > 
> > Модуль ядра должен _точно_ соответствовать ядру. Вручную это
> > соответствие отследить практически невозможно. Сборка модуля
> > с заголовками даже не от той конфигурации ядра - нарушение.
> > 
> > К большому [моему] сожалению, об этом нигде явно не написано,
> > что позволяет малограмотным производителям выкладывать собранные
> > модули, считая что они этим обеспечили пользователя и поддержали Linux.
> 
> То есть?
> По лично моему мнению, чисто теоретически, достаточно совпадения достаточного
> малого количества параметров конфига для ядер одной серии и неизменности
> базовых и используемых интерфейсов для родственных ядер.
> А практически у меня вполне работали модули от 2.4.18 на ядре 2.4.20. Без 
> перекомпиляции. А уж модули от 2.4.20 на таком же ядре с кучей патчей.

А практически это совпадение невозможно проконтролировать вручную.
Зависмость получившегося ABI можно проверить только просмотрев исходные
тексты каждой новой версии ядра или патча - разработчики в смысле ABI
ничего не гарантируют.

"Практически работает" в нашем случае это все равно что отказаться
использовать локи в критических местах кода/данных, объясняя это тем,
что race condition здесь случается нечасто и, как правило, это будет
работать и так. Нет уж, или код должен быть правильным или такого кода
не должно быть вообще.


> редхэтовские ядра - для старых]. С моей точки зрения, ядро не определяет 
> дистрибутив, дистрибутив идентифицирует менеджер пакетов, система стартовых 
> скриптов и традиции размещения конфигов. Пусть у меня редхэтовское ядро,

С этим согласен.


-- 
Eсли уж гайка есть, она должна быть затянута до конца
или выкручена нафиг.



Re: драйверовая дискета

2003-06-11 Пенетрантность Dmitry A. Fedorov
On Wed, 11 Jun 2003, Elena Egorova wrote:

> > Эти третьи прозводители настолько поддерживают debian, что дают готовые
> > модули, собранные под ядро загрузочных дисков? Вряд-ли.
> 
> Они (promise) иногда дают исходники. Имелось в виду, что делать с
> собранным модулем под конкретное дистрибутивное или пересобранное
> ядро.
[...]
> Честно говоря, я меняла при этом ядро на первой дискете. Модулей не собирала 
> - 
> исключая рейдовский. Но он используется после установки только в initrd.
[...]
> > Не будет - будут нарушены спецификации ядра (к сожалению, неписаные).
> 
> Какие спецификации?

Модуль ядра должен _точно_ соответствовать ядру. Вручную это
соответствие отследить практически невозможно. Сборка модуля
с заголовками даже не от той конфигурации ядра - нарушение.

К большому [моему] сожалению, об этом нигде явно не написано,
что позволяет малограмотным производителям выкладывать собранные
модули, считая что они этим обеспечили пользователя и поддержали Linux.

> Кто Вам сказал, что на первой дискете дебиана будет именно 
> дебиановское ядро? У меня есть дискета с ядром от редхата.

По умолчанию, на дебиановских дисках дебиановские ядра :)

> Как Вы назовете полученный после установки гибрид?

debhat

Тогда Ваш ответ на вопрос dim должен был быть таким: берете то ядро
от того дистрибутива, под которое модуль собран производителем ...

Тоже вариант.


> > > Модуль Promise ATARAID таким образом отлично грузился и позволял ставить 
> > > систему
> > > сразу на рейд.
> > 
> > Вопрос везения. Загрузка модулей, собранных под другое ядро,
> > технически незаконна.
> 
> Да, но иногда работает.

Угу. К сожалению, работает. С непредсказуемыми ошибками.

-- 
Если виртуальная память закончилась, она не настоящая.



Re: драйверовая дискета

2003-06-11 Пенетрантность dim
В Срд, 11.06.2003, в 14:19, Dmitry A. Fedorov пишет:
> > Так как?
> > Вот есть у меня уже готовый *.o файл. Что дальше с ним делать?
[погрызено]

Спасибо за подробную инструкцию. :)))

У меня ситуация попроще - драйвер в принципе входит в состав ядра, но не
входит в ядро, используемое инсталляционным набором. :)))

> > Или где про все это почитать?
> Нигде, это все логически вытекает из различных знаний :)

В этом-то и была проблема. ;)))

Спасибо! :)))
Привет! :)))



Re: драйверовая дискета

2003-06-11 Пенетрантность Dmitry A. Fedorov
On Wed, 11 Jun 2003, Elena Egorova wrote:

> > Вот есть у меня уже готовый *.o файл. Что дальше с ним делать?
> 
> Когда будете устаналивать, инсталлятор вас спросит про модули 
> третьих производителей, выберете этот пункт меню, вставите в дисковод дискету,

Эти третьи прозводители настолько поддерживают debian, что дают готовые
модули, собранные под ядро загрузочных дисков? Вряд-ли.

> прочитаете ругать про то, в каком каталоге должен быть модуль, поместите его 
> на 
> дискете в нужный каталог, и опять вставите в дисковод. Надеюсь, все будет 
> нормально.

Не будет - будут нарушены спецификации ядра (к сожалению, неписаные).

> Модуль Promise ATARAID таким образом отлично грузился и позволял ставить 
> систему
> сразу на рейд.

Вопрос везения. Загрузка модулей, собранных под другое ядро,
технически незаконна.


-- 
"жучок", поставленный гpамотным инженеpом, ничуть не хуже пpедохpанителя
-- Юрий Сысоев



Re: драйверовая дискета

2003-06-11 Пенетрантность Dmitry A. Fedorov
On 11 Jun 2003, dim wrote:

> Машина есть. :)))
> 
> > Как это сделать - вопрос уже непринципиальный.
> 
> Так как?
> Вот есть у меня уже готовый *.o файл. Что дальше с ним делать?

Ничего. Вот в этом и состоит принципиальность вопроса - тебе нужен
исходный текст. Лучше в виде архива (tar), содержащий исходные тексты и
Makefile для их сборки (возможны варианты). Если же исходные тексты
состоят из единственного/пары файлов .c,.h, то это первый индикатор -
предупреждение о некачественности драйвера.

Затем распаковываешь у себя ту версию kernel-sources, из которой у тебя
сделано ядро для загрузочных дисков. Затем из дистрибутива, где у тебя
лежат образы этих загрузочных дисков берешь файл kernel-config, причем
тот самый, вместе с которым в директории лежат твои образы загрузочных
дисков, (это где-то в
.../debian/dists/woody/main/disks-i386/current/images-1.44/ ).

Этот kernel-config копируешь в корень распакованных исходных текстов
ядра под именем .config .

Заходишь туда, для простоты говоришь 'make menu-config', ничего там не
меняешь, выходишь с сохранением конфигурации.
Говоришь 'make dep'.

Все, теперь у тебя есть заголовки ядра, _полностью_ соответствующие ядру
на загрузочных дисках.

Теперь осталось всего ничего - собрать твой драйвер, указав ему путь
к заголовкам ядра. Как это указать, полностью зависит от
особенностей системы сборки того драйвера (Makefile). Обязательно
проверь, что твои указания правильно восприняты (как это сделать ...).


Далее, как подсунуть получившийся драйвер. Я бы сделал так:
положил бы его на пустую дискету с FATом (mformat) или ext2 (надежнее,
я не помню, содержит ли ядро на загрузочном диске fatfs).
При установке системы на любом этапе переключаемся во вторую консоль
(в debian, в отличие от всяких там redhatов, shell доступен сразу),
монтируем дискету с драйвером и делаем ему insmod.

Если insmod откажется грузить, жалуясь на unresolved symbols или
неправильную версию ядра, то во всем вышеописанном было что-то сделано
неправильно и придется повторить.


> Или где про все это почитать?

Нигде, это все логически вытекает из различных знаний :)

-- 
Если виртуальная память закончилась, она не настоящая.



Re: драйверовая дискета

2003-06-11 Пенетрантность dim
В Срд, 11.06.2003, в 11:06, Dmitry A. Fedorov пишет:
> > Хочется при инстале с готового дистрибутивного диска подкинуть его
> > ядрышку еще пару модулей, которых на этом диске нет.
> > Это в принципе возможно?
> > Как бы это сделать? (Где почитать как это делать?)
> То есть, этих драйверов нет и в drivers.tgz?
> Тогда нужно иметь машину, где можно собрать драйвер для того
> ядра.

Машина есть. :)))

> Как это сделать - вопрос уже непринципиальный.

Так как?
Вот есть у меня уже готовый *.o файл. Что дальше с ним делать?

Или где про все это почитать?

Спасибо! :)))
Привет! :)))



Re: драйверовая дискета

2003-06-11 Пенетрантность Dmitry A. Fedorov
On 10 Jun 2003, dim wrote:

> Хочется при инстале с готового дистрибутивного диска подкинуть его
> ядрышку еще пару модулей, которых на этом диске нет.
> 
> Это в принципе возможно?
> Как бы это сделать? (Где почитать как это делать?)

То есть, этих драйверов нет и в drivers.tgz?
Тогда нужно иметь машину, где можно собрать драйвер для того
ядра. Как это сделать - вопрос уже непринципиальный.

-- 
Если виртуальная память закончилась, она не настоящая.