На него ставиться дебиан с ядром 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 и воткнуть его на место старого?
Imho, 26.01.2009 - 11:10
Цитата | Quote(middleman @ 26.01.2009 - 10:54)
Теперь вопрос. Каким образом можно обновить информацию pciids не подключая систему к инету (доступ в инет есть со второго компа).
Нет
Цитата | Quote(middleman @ 26.01.2009 - 10:54)
Поддержка этой сетевой уже включена в ядро 2.6.9 и там есть все необходимое. исходники этого ядра у меня есть, но собираться оно упорно не хочет. на этапе make bzImage выдает кучу asm ошибок.
Можно ли каким-то образом вытащить из нового ядра хотябы pciids и воткнуть его на место старого?
Проще найти ошибку при компиляции. Лог дайте, будем копать
middleman, 26.01.2009 - 23:00
Сейчас попробовал повторить компиляцию ядра через 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. Если это действительно так, то каким образом откатиться до более старого компилятора и будет ли вообще он работать?
Imho, 27.01.2009 - 9:23
Цитата | Quote(middleman @ 26.01.2009 - 23:00)
Я так понял из каментов в инете, что проблема с новым gcc4. Если это действительно так, то каким образом откатиться до более старого компилятора и будет ли вообще он работать?
Не факт что с компирятором ./configure --with-gcc=<какой_хочешь>
middleman, 11.02.2009 - 17:05
Появилось время чтобы разобраться. В общем на вышеуказаную команду оно меня благополучно послало нафиг:
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
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 на выходе.
middleman, 11.02.2009 - 22:34
Следующий вопрос. Ядро теперь компилиться и ставиться без проблем. Только не загружается. при загрузке выдает следующую гадость:
Подозреваю что что-то неправильно сконфигурировал, но что именно понять не могу. Есть идеи?
ЭЖД, 12.02.2009 - 9:07
Цитата | Quote
Подозреваю что что-то неправильно сконфигурировал, но что именно понять не могу. Есть идеи?
Просмотрел конфиги загрузчика. вродебы ничено подозрительного. Что здесь неправильно?
ЭЖД, 14.02.2009 - 20:13
пробуй sid. или R7 почему бы не попробовать другой дистрибутив?
middleman, 15.02.2009 - 15:12
Вопрос сниматеся. Сегодня получилось поднять сетевую без пересборки ядра. Как обычно правильным оказался самый простой путь. Во-первых сетевая определяется как Unknown device потому, что система не может нормально прочитать с нее код производителя получая своими средствами, как видно выше код 0001, которого в природе не существует. Для того чтобы система смогла считать правильный код с сетевой нужно перебросить эту функцию на биос добавив в конфиг загрузчика параметр pci=bios:
после этого 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 соответствующим образом.
Спасибо всем, кто пытался помочь.
middleman, 4.03.2009 - 10:16
Продолжение темы.
Вышеописаный девайс, Debian, обновленный до testing включая kernel image (да. мне было скучно ).
Установлен fglrx также обновленный из testing репа.
Вот теперь вопрос. Не регулируется яркость подсветки экрана. Вообще никак ни с клавы через Fn ни через апплеты для этого предназначеные ни через xbacklight. Стандартный апплет KDE для регулирования яркости говорит "ваше устройство не поддерживает управление яркостью."
В инете никакого вразумительного ответа найти не получилось. Где копать?