Re: драйверовая дискета
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: драйверовая дискета
On Wed, 11 Jun 2003, Elena Egorova wrote: > > Эти третьи прозводители настолько поддерживают debian, что дают готовые > > модули, собранные под ядро загрузочных дисков? Вряд-ли. > > Они (promise) иногда дают исходники. Имелось в виду, что делать с > собранным модулем под конкретное дистрибутивное или пересобранное > ядро. [...] > Честно говоря, я меняла при этом ядро на первой дискете. Модулей не собирала > - > исключая рейдовский. Но он используется после установки только в initrd. [...] > > Не будет - будут нарушены спецификации ядра (к сожалению, неписаные). > > Какие спецификации? Модуль ядра должен _точно_ соответствовать ядру. Вручную это соответствие отследить практически невозможно. Сборка модуля с заголовками даже не от той конфигурации ядра - нарушение. К большому [моему] сожалению, об этом нигде явно не написано, что позволяет малограмотным производителям выкладывать собранные модули, считая что они этим обеспечили пользователя и поддержали Linux. > Кто Вам сказал, что на первой дискете дебиана будет именно > дебиановское ядро? У меня есть дискета с ядром от редхата. По умолчанию, на дебиановских дисках дебиановские ядра :) > Как Вы назовете полученный после установки гибрид? debhat Тогда Ваш ответ на вопрос dim должен был быть таким: берете то ядро от того дистрибутива, под которое модуль собран производителем ... Тоже вариант. > > > Модуль Promise ATARAID таким образом отлично грузился и позволял ставить > > > систему > > > сразу на рейд. > > > > Вопрос везения. Загрузка модулей, собранных под другое ядро, > > технически незаконна. > > Да, но иногда работает. Угу. К сожалению, работает. С непредсказуемыми ошибками. -- Если виртуальная память закончилась, она не настоящая.
Re: драйверовая дискета
В Срд, 11.06.2003, в 14:19, Dmitry A. Fedorov пишет: > > Так как? > > Вот есть у меня уже готовый *.o файл. Что дальше с ним делать? [погрызено] Спасибо за подробную инструкцию. :))) У меня ситуация попроще - драйвер в принципе входит в состав ядра, но не входит в ядро, используемое инсталляционным набором. :))) > > Или где про все это почитать? > Нигде, это все логически вытекает из различных знаний :) В этом-то и была проблема. ;))) Спасибо! :))) Привет! :)))
Re: драйверовая дискета
On Wed, 11 Jun 2003, Elena Egorova wrote: > > Вот есть у меня уже готовый *.o файл. Что дальше с ним делать? > > Когда будете устаналивать, инсталлятор вас спросит про модули > третьих производителей, выберете этот пункт меню, вставите в дисковод дискету, Эти третьи прозводители настолько поддерживают debian, что дают готовые модули, собранные под ядро загрузочных дисков? Вряд-ли. > прочитаете ругать про то, в каком каталоге должен быть модуль, поместите его > на > дискете в нужный каталог, и опять вставите в дисковод. Надеюсь, все будет > нормально. Не будет - будут нарушены спецификации ядра (к сожалению, неписаные). > Модуль Promise ATARAID таким образом отлично грузился и позволял ставить > систему > сразу на рейд. Вопрос везения. Загрузка модулей, собранных под другое ядро, технически незаконна. -- "жучок", поставленный гpамотным инженеpом, ничуть не хуже пpедохpанителя -- Юрий Сысоев
Re: драйверовая дискета
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: драйверовая дискета
В Срд, 11.06.2003, в 11:06, Dmitry A. Fedorov пишет: > > Хочется при инстале с готового дистрибутивного диска подкинуть его > > ядрышку еще пару модулей, которых на этом диске нет. > > Это в принципе возможно? > > Как бы это сделать? (Где почитать как это делать?) > То есть, этих драйверов нет и в drivers.tgz? > Тогда нужно иметь машину, где можно собрать драйвер для того > ядра. Машина есть. :))) > Как это сделать - вопрос уже непринципиальный. Так как? Вот есть у меня уже готовый *.o файл. Что дальше с ним делать? Или где про все это почитать? Спасибо! :))) Привет! :)))
Re: драйверовая дискета
On 10 Jun 2003, dim wrote: > Хочется при инстале с готового дистрибутивного диска подкинуть его > ядрышку еще пару модулей, которых на этом диске нет. > > Это в принципе возможно? > Как бы это сделать? (Где почитать как это делать?) То есть, этих драйверов нет и в drivers.tgz? Тогда нужно иметь машину, где можно собрать драйвер для того ядра. Как это сделать - вопрос уже непринципиальный. -- Если виртуальная память закончилась, она не настоящая.