day & night

Debian 4.0 R6 i386 на Samsung R58plus, установка поддержки железа
Дата обновления: , перейти к новому сообщению
#1
middleman



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 3.366
Регистрация: 15.03.2005
Из: Украина, Харьков
Пользователь №: 8.829


Респектов: 744
-----XXXX-




Ситуация такая. Есть соответствующий ноут.

На него ставиться дебиан с ядром 2.6.18.6
После долгих поисков удалось запустить графику на ATI X1250 с приопретарным драйвером.

Теперь пытаюсь запустить сетевую Marvell Yukon 88E8039, которую #lspci показывает как
Ethernet controller: Unknown device 0001:4353 (rev 15)
Следовательно ни sk98lin ни стандартный skge ни даже sky2 сетевую не видит и Eth0 не создает.
В ifconfig только lo.

В принципе если есть интернет, то update-pciids ситуацию спасает.
По коментариям в инете cетевка обнаруживается нормально и работает.
Теперь вопрос. Каким образом можно обновить информацию pciids не подключая систему к инету (доступ в инет есть со второго компа).

Поддержка этой сетевой уже включена в ядро 2.6.9 и там есть все необходимое. исходники этого ядра у меня есть, но собираться оно упорно не хочет. на этапе make bzImage выдает кучу asm ошибок.

Можно ли каким-то образом вытащить из нового ядра хотябы pciids и воткнуть его на место старого?
User is offline
Go topGo end

Ответов(1 - 9)
26.01.2009 - 11:10
#2
Imho



профи!
Group Icon

Группа: Наши Люди
Сообщений: 671
Регистрация: 15.04.2008
Из: Тула
Пользователь №: 846.186


Респектов: 109
-----X----




Цитата | Quote(middleman @ 26.01.2009 - 10:54)
Теперь вопрос. Каким образом можно обновить информацию pciids не подключая систему к инету (доступ в инет есть со второго компа).
*


Нет
Цитата | Quote(middleman @ 26.01.2009 - 10:54)
Поддержка этой сетевой уже включена в ядро 2.6.9 и там есть все необходимое. исходники этого ядра у меня есть, но собираться оно упорно не хочет. на этапе make bzImage выдает кучу asm ошибок.

Можно ли каким-то образом вытащить из нового ядра хотябы pciids и воткнуть его на место старого?
*


Проще найти ошибку при компиляции. Лог дайте, будем копать smile.gif
User is offline
Go topGo end
26.01.2009 - 23:00
#3
middleman



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 3.366
Регистрация: 15.03.2005
Из: Украина, Харьков
Пользователь №: 8.829


Респектов: 744
-----XXXX-




Сейчас попробовал повторить компиляцию ядра через make-kpkg. С тем-же результатом.
Code
{standard input}: Assembler messages:
{standard input}:680: Error: suffix or operands invalid for `mov'
{standard input}:681: Error: suffix or operands invalid for `mov'
{standard input}:874: Error: suffix or operands invalid for `mov'
{standard input}:875: Error: suffix or operands invalid for `mov'
{standard input}:947: Error: suffix or operands invalid for `mov'
{standard input}:948: Error: suffix or operands invalid for `mov'
{standard input}:1019: Error: suffix or operands invalid for `mov'
{standard input}:1020: Error: suffix or operands invalid for `mov'
{standard input}:1106: Error: suffix or operands invalid for `mov'
{standard input}:1118: Error: suffix or operands invalid for `mov'
make[2]: *** [arch/i386/kernel/process.o] Ошибка 1
make[1]: *** [arch/i386/kernel] Ошибка 2
make[1]: Leaving directory `/usr/src/linux-2.6.9'
make: *** [debian/stamp-build-kernel] Ошибка 2


Добавлено:
Решение пришло как-то само собой.
Оказывается в 2.6 и 2.4 ассемблерные вставки реализованы не совсем правильно.
патчи исправляющие это лежат здесь:


ложаться в папку с иходдниками ядра и применяются командой
Code
cat linux-2.*-seg-*.patch | patch -p1

ассемблерные ошибки пропали.

Но нарисовалась новая проблема.
Code
make[1]: Leaving directory `/usr/src/linux-2.6.9'
/usr/bin/make    ARCH=i386 prepare
make[1]: Entering directory `/usr/src/linux-2.6.9'
 SPLIT   include/linux/autoconf.h -> include/config/*
 CHK     include/linux/version.h
make[2]: `arch/i386/kernel/asm-offsets.s' не требует обновления.
 CHK     include/asm-i386/asm_offsets.h
make[1]: Leaving directory `/usr/src/linux-2.6.9'
echo done > debian/stamp-kernel-conf
====== making target CONFIG-indep [new prereqs: conf.vars stamp-kernel-conf]======
This is kernel package version 10.067.
====== making target CONFIG/linux-source-2.6.9 [new prereqs: CONFIG-indep]======

====== making target CONFIG/linux-doc-2.6.9 [new prereqs: CONFIG-indep]======

====== making target CONFIG/linux-manual-2.6.9 [new prereqs: CONFIG-indep]======

====== making stamp-configure-indep because of  ======
====== making target configure-indep [new prereqs: stamp-configure-indep]======
====== making stamp-configure because of  ======
====== making target debian/stamp-build-kernel [new prereqs: sanity_check stamp-kernel-conf]======
This is kernel package version 10.067.
/usr/bin/make    ARCH=i386 \
                            bzImage
make[1]: Entering directory `/usr/src/linux-2.6.9'
 CHK     include/linux/version.h
make[2]: `arch/i386/kernel/asm-offsets.s' не требует обновления.
 CHK     include/asm-i386/asm_offsets.h
 CHK     include/linux/compile.h
 CC      drivers/i2c/i2c-core.o
In file included from drivers/i2c/i2c-core.c:29:
include/linux/i2c.h:58: error: array type has incomplete element type
include/linux/i2c.h:205: error: array type has incomplete element type
drivers/i2c/i2c-core.c: In function ‘i2c_transfer’:
drivers/i2c/i2c-core.c:561: error: type of formal parameter 2 is incomplete
drivers/i2c/i2c-core.c: In function ‘i2c_master_send’:
drivers/i2c/i2c-core.c:581: warning: pointer targets in assignment differ in signedness
drivers/i2c/i2c-core.c:587: error: type of formal parameter 2 is incomplete
drivers/i2c/i2c-core.c: In function ‘i2c_master_recv’:
drivers/i2c/i2c-core.c:610: warning: pointer targets in assignment differ in signedness
drivers/i2c/i2c-core.c:616: error: type of formal parameter 2 is incomplete
make[3]: *** [drivers/i2c/i2c-core.o] Ошибка 1
make[2]: *** [drivers/i2c] Ошибка 2
make[1]: *** [drivers] Ошибка 2
make[1]: Leaving directory `/usr/src/linux-2.6.9'
make: *** [debian/stamp-build-kernel] Ошибка 2

Я так понял из каментов в инете, что проблема с новым gcc4. Если это действительно так, то каким образом откатиться до более старого компилятора и будет ли вообще он работать?
User is offline
Go topGo end
27.01.2009 - 9:23
#4
Imho



профи!
Group Icon

Группа: Наши Люди
Сообщений: 671
Регистрация: 15.04.2008
Из: Тула
Пользователь №: 846.186


Респектов: 109
-----X----




Цитата | Quote(middleman @ 26.01.2009 - 23:00)
Я так понял из каментов в инете, что проблема с новым gcc4. Если это действительно так, то каким образом откатиться до более старого компилятора и будет ли вообще он работать?
*


Не факт что с компирятором smile.gif
./configure --with-gcc=<какой_хочешь>

User is offline
Go topGo end
11.02.2009 - 17:05
#5
middleman



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 3.366
Регистрация: 15.03.2005
Из: Украина, Харьков
Пользователь №: 8.829


Респектов: 744
-----XXXX-




Появилось время чтобы разобраться.
В общем на вышеуказаную команду оно меня благополучно послало нафиг:
Code
book:/usr/src/linux-2.6.9# ./configure --with-gcc=3.3
bash: ./configure: No such file or directory
book:/usr/src/linux-2.6.9#


Решение проблемы оказалось довольно нетривиальным.
Мне бы в голову как-то не пришло править исходник руками, но это, как оказалось простейший выход.
Дело в том, что спецификация малость поменялась со времен третьего gcc, а сорцы подправить никому в голову как-то не пришло.
Итак вот собственно решение:
Внимательно смотрим на две первых ошибки (остальные тянуться за ними автоматически):
Code
In file included from drivers/i2c/i2c-core.c:29:
include/linux/i2c.h:58: error: array type has incomplete element type
include/linux/i2c.h:205: error: array type has incomplete element type

открываем этот фаил и ищем соответствующие строки
Code

include/linux/i2c.h
58 >> struct i2c_msg msg меняем на struct i2c_msg *msg
205 >> struct i2c_msg [b]msgs[][/b] меняем на struct i2c_msg *msgs

пробуем компилить, но опять натыкаемся на такую-же ошибку:
Code
***
CC      drivers/video/aty/radeon_base.o
In file included from drivers/video/aty/radeon_base.c:64:
include/linux/fb.h:751: error: array type has incomplete element type
make[4]: *** [drivers/video/aty/radeon_base.o] Ошибка 1
make[3]: *** [drivers/video/aty] Ошибка 2
make[2]: *** [drivers/video] Ошибка 2
make[1]: *** [drivers] Ошибка 2
make[1]: Leaving directory `/usr/src/linux-2.6.9'
make: *** [debian/stamp-build-kernel] Ошибка 2

Повторяем финт ушами:
Code
include/linux/fb.h
751>> struct fb_videomode vesa_modes[] >> struct fb_videomode *vesa_modes

Но здесь получаем что-то новенькое:
Code
drivers/video/modedb.c:255: error: conflicting types for ‘vesa_modes’
include/linux/fb.h:751: error: previous declaration of ‘vesa_modes’ was here
make[3]: *** [drivers/video/modedb.o] Ошибка 1
make[2]: *** [drivers/video] Ошибка 2
make[1]: *** [drivers] Ошибка 2
make[1]: Leaving directory `/usr/src/linux-2.6.9'
make: *** [debian/stamp-build-kernel] Ошибка 2

Не особо пугаемся и по привычке проделываем то-же самое:
Code
drivers/video/modedb.c
255>> struct fb_videomode vesa_modes[] >> struct fb_videomode *vesa_modes

В результате после мучительного ожидания наконец получаем
Code
dpkg-deb: сборка пакета linux-image-2.6.9 в файл ../linux-image-2.6.9_lastbuild.1.0_i386.deb.
make[1]: Leaving directory `/usr/src/linux-2.6.9'
====== making target stamp-kernel-image [new prereqs: linux-image-2.6.9 linux-image-2.6.9]======
This is kernel package version 10.067.
echo done > stamp-kernel-image
====== making target kernel_image [new prereqs: stamp-configure stamp-build-kernel stamp-kernel-image]======
This is kernel package version 10.067.

И файлик linux-image-2.6.9_lastbuild.1.0_i386.deb на выходе.
User is offline
Go topGo end
11.02.2009 - 22:34
#6
middleman



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 3.366
Регистрация: 15.03.2005
Из: Украина, Харьков
Пользователь №: 8.829


Респектов: 744
-----XXXX-




Следующий вопрос.
Ядро теперь компилиться и ставиться без проблем.
Только не загружается.
при загрузке выдает следующую гадость:

Подозреваю что что-то неправильно сконфигурировал, но что именно понять не могу. Есть идеи?
User is offline
Go topGo end
12.02.2009 - 9:07
#7
ЭЖД



*nix`оид
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 11.935
Регистрация: 18.09.2004
Пользователь №: 1.679


Респектов: 789
-----XXXX-




Цитата | Quote
Подозреваю что что-то неправильно сконфигурировал, но что именно понять не могу. Есть идеи?

ph34r.gif загрузчик
User is offline
Go topGo end
12.02.2009 - 10:56
#8
middleman



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 3.366
Регистрация: 15.03.2005
Из: Украина, Харьков
Пользователь №: 8.829


Респектов: 744
-----XXXX-




» Конфигурация загрузчика «


Просмотрел конфиги загрузчика. вродебы ничено подозрительного.
Что здесь неправильно?
User is offline
Go topGo end
14.02.2009 - 20:13
#9
ЭЖД



*nix`оид
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 11.935
Регистрация: 18.09.2004
Пользователь №: 1.679


Респектов: 789
-----XXXX-




ph34r.gif пробуй sid. или R7
почему бы не попробовать другой дистрибутив?
User is offline
Go topGo end
15.02.2009 - 15:12
#10
middleman



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 3.366
Регистрация: 15.03.2005
Из: Украина, Харьков
Пользователь №: 8.829


Респектов: 744
-----XXXX-




Вопрос сниматеся.
Сегодня получилось поднять сетевую без пересборки ядра.
Как обычно правильным оказался самый простой путь.
Во-первых сетевая определяется как Unknown device потому, что система не может нормально прочитать с нее код производителя получая своими средствами, как видно выше код 0001, которого в природе не существует.
Для того чтобы система смогла считать правильный код с сетевой нужно перебросить эту функцию на биос добавив в конфиг загрузчика параметр pci=bios:
Code
/boot/grub/menu.lst

title           Debian GNU/Linux, kernel 2.6.18-6-686
root            (hd0,1)
kernel          /boot/vmlinuz-2.6.18-6-686 root=/dev/sda2 ro pci=bios
initrd          /boot/initrd.img-2.6.18-6-686
savedefault


после этого lspci будет получать правильный код 11ab, но устройство будет по прежнему определяться как unknown. для того чтобы программы на подобие lspci правильно отображали название сетевой нужно обновить список pci.ids.
При наличии подключения к интернету это делается командой upadte-pciids.
Если подключения нет - можно обновить руками. Идем на комп, где интернет есть и скачиваем новый список с этого адреса:

далее заменяем /usr/share/misc/pci.ids фаилом из архива.
Повторяем эксперимент:
Code

s-book:/home/s2me# lspci
***
05:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8039 PCI-E Fast Ethernet Controller (rev 15)

Осталось заставить сетевку работать. Модуль sky2, который должен понимать сетевую, как оказалось уже есть в системе. Осталось сопоставить код модели сетевой с этим модулем.
Это прописывается в фаиле /usr/share/apps/guidance/pcitable
Нужно найти там строчку
Code
0x11ab  0x4352  "sky2"  "Marvell Technology Group Ltd.|88E8038 PCI-E Fast Ethernet Controller"
И добавить под ней следующую:
Code
0x11ab  0x4353  "sky2"  "Marvell Technology Group Ltd.|88E8039 PCI-E Fast Ethernet Controller"

После перезагрузки останется только сконфигурировать eth0 соответствующим образом.

Спасибо всем, кто пытался помочь.
User is offline
Go topGo end

Topic Options
Сейчас: 28.04.2024 - 23:52
Мобильная версия | Lite версия