Всем Привет.
Эта страничка для тех кто столкнулся с проблемой установки вЫнь модема Motorola SM56 на Linux.
03.02.2003
Появился новый драйвер для модема Motorola SM56!!!!!! разработчики: Rajesh Kizhuveetil, Marvin Stodolsky, Jan Michel Ibanez. Сайт Rajesh Kizhuveetil - http://www.sm56.tk/.
Драйвер для gcc 2.x C Compiler
загрузите sm56.tar.gz и введите следующие команды:
Драйвер для gcc 3.x C Compiler.
Загрузите sm56-gcc3.tar.gz и следуйте командам перечисленным выше(используйте cd sm56-gcc3 вместо cd sm56).
(дравер для gcc 3.x есче не испытан, если какие баги пишите - Rajesh Kizhuveetil (на английском канешна :).)
Требования для SM56.tar File
Во всех случаях вам нужно иметь исходники ядра (обычно они здесь - /usr/src/linux) для запуска модуля SM56.
Many thanks to Rajesh Kizhuveetil, Marvin Stodolsky, Jan Michel Ibanez for Making SM56 Installable Module.
************************************************************************
У не RedHat - подобных нужно править строчку в makefile, которая содержит такой
фрагмент текста:
gcc -D__KERNEL__ -DMODULE -Wall -O -I/usr/src/linux-2.4/include -fomit-frame-pointer -o kmhack.o -c kludge.c
Вместо /usr/src/linux-2.4 нужно писать реальный путь к исходникам ядра.
Для Slakware 8.1 например это будет: /usr/src/linux-2.4.18
или: /usr/src/linux - это ссылка на
предыдущую реальную директорию.
Огромное спасибо Andrey Shaikin за информацию
Если у вас ничего не получается, то действуйте так как написано ниже:
Дело в том, что драйвера от производителя работают на ядрах 2.4.2-2.4.5. Когда у меня на машине был Red Hat 7.1, модем работал как часики, все нормально. Но когда установил Red Hat 7.2 (Enigma) с ядром 2.4.7-10, то модем перестал функциклировать :( . Качнул с www.kernel.org ядро 2.4.5 скомпилил, поставил и модем заработал . Но это ядро не поддерживает файловую систему ext3. патч к этому ядру я не смог поставить (из-за кривости моих рук :) .И вот нарыл статейку http://www.angelfire.com/linux/sm56/ как заставить этот модем работать на ядре 2.4.18 и все теперь работает :)
Кто не врубается на ингише, вот мой гнилой перевод с англицкого :)
Введение:
Драйвер софт модема
Motorola SM56 был тестирован в работе для Mandrake 8.0 (i386). Тем не менее, Motorola прекратила поддержку новых последующих ядер в Linux. Когда драйвер был проинсталлирован на Mandrake 8.2, драйвер перестал отвечать и работать.Проблема:
Следующие сообщения об ошибке появляются, когда вы загружаете
SM56 драйвер:Войдите в систему как
root и введите следующую команду в консоли:[root@localhost darwin]# insmod sm56
Using
/lib/modules/2.4.18-6mdk/kernel/drivers/char/sm56
Warning: loading
/lib/modules/2.4.48-6mdk/kernel/drivers/char/sm56 will taint the kernel: no
license
Segmentation fault
[root@localhost darwin]#
Что бы получить больше информации о ошибке, введите следующую команду в консоли:
[root@localhost darwin]# dmesg
Мы получаем следующую
детализированную инфо ошибки:kernel BUG at slab.c:1099!
invalid operand: 0000
CPU: 0
EIP:
0010:[<c012b4a6>] Tainted: P
EFLAGS: 00010282
eax: 0000001b ebx:
d3fdc2f0 ecx: 00000001 edx: 00001799
esi: d3fdc2f0 edi: 00000007 ebp:
d3fdc2f0 esp: cf8f5e1c
ds: 0018 es: 0018 ss: 0018
Process insmod (pid:
1401, stackpage=cf8f5000)
Stack: c02314e3 0000044b 00000001 c012da15 c02d6f90
00001030 d3fd9800 c0146590
00000282 d3fdc2f0 00000202 d3fdc2f8 d3fdc2f0
c012b84c d3fdc2f0 00000007
00000001 c012da15 c02d6f90 00000000 00000064
00000000 00000000 cf8f5e98
Call Trace: [<c012da15>] [<c0146590>]
[<c012b84c>] [<c012da15>] [<d6981060>] [<c021074a>]
[<d69c7d34>] [<d69c7a63>] [<c012da15>] [<c01174f5>]
[<d6981060>] [<c0106f4b>]
Code: 0f 0b 5a 59 f7 c7 00 10 00 00 0f
85 d0 01 00 00 a1 c8 d3 33
Нас интересует первая строка этой информации:
kernel BUG at slab.c:1099!
Попытаемся исправить ошибку
, модифицируя файл slab.c в исходниках ядра в строке 1099.Решение:
Для этого нужны исходники ядра 2.4.18. Если у вас их нет, ищите на ваших инсталляционных
Mandrake 8.2 CD.Введите следующую команду, чтобы увидеть расположение файла
slab.c:[root@localhost darwin]# locate
slab.c
/usr/src/linux-2.4.18-6mdk/drivers/media/radio/radio-aimslab.c
/usr/src/linux-2.4.18-6mdk/mm/slab.c
[root@localhost
darwin]#
Нас интересует файл
/usr/src/linux-2.4.18-6mdk/mm/slab.c. Откройте файл привычным вам текстовым редактором и двигайтесь к строке 1099. Вы видите следующий С код:static int kmem_cache_grow (kmem_cache_t * cachep, int flags)
{
slab_t
*slabp;
struct page *page;
void *objp;
size_t offset;
unsigned int
i, local_flags;
unsigned long ctor_flags;
unsigned long
save_flags;
/* Be lazy and only check for valid flags here,
* keeping
it out of the critical path in kmem_cache_alloc().
*/
Нас интересует строка, которая выделена красным цветом, она расположена в строках 1098 и 1099.
Если мы удалим эти строки, то мы сможем избежать сообщения об ошибке которое появляется при загрузке драйвера. Закомментируйте эти строки:/*
if (flags &
~(SLAB_DMA|SLAB_LEVEL_MASK|SLAB_NO_GROW))
BUG();
*/
Теперь скомпилируйте ваше новое ядро и
установите его(информация по установке и компиляции ядра здесь). Переинсталируйте SM56 драйвер, если он был удален при компиляции и установки нового ядра.Вот и все.
если какие траблы, Ашипки и ачепятки, пишите Vladimir Kolomiets, чем могу помогу :)
Удачи.
P.S.
Этот способ я пробывал тока на ядре 2.4.18. Большая просьба сообщить мне результат работы этого способа на других ядрах.
Мотороловские дрова (для ядер 2.4.2-2.4.5) на модем можно качнуть здесь. (637 КБ).
29.01.2003.
Способ был реализован успешно на ядре 2.4.9 с дистрибутивом ASPLinux (спасибо приславшему за эту инфу :)