Апгрейднул свой Gentoo Linux к 2.6-му ядру. Прошло относительно спокойно, если не считать двух проблем.
1. По глупости, строя ядро, выбрал неправильные опции USB. Там есть три разных controller drivers: EHCI, OHCI и UHCI (very informative, guys — way to go!). Я включил в конфиг EHCI, а OHCI не включил. Оказывается, EHCI — драйвер для стандарта USB 2.0, а устройства USB 1.x он переправляет к драйверу OHCI, если тот скомпилирован, естественно. У меня его не было. В результате мою USB-мышку не нашёл модуль USB HID (Human Interface Devices). Вместо этого её нашёл позже модуль, отвечающий за обычные PS/2 mice (что, USB-мышка одновременно видна на хардверном уровне как PS/2-мышка, без софтверной эмуляции? Я этого не знал), и опознал как Generic Wheel Mouse. Несмотря на это, когда я вошёл в X, обнаружилось, что колесо мышки не работает. А без колеса читать ленту френдов совершенно невозможно! Это я сейчас такой умный, что всё рассказал по порядку, как случилось, а ночью мне, чтобы это понять, пришлось изрядно позовиться с конфигом, и по-переключаться обратно в 2.4 и опять в 2.6, сравнивая вывод dmesg и отыскивая, что именно у меня есть и чего не хватает. Мне сильно всё запутал драйвер mousedev, который отвечает за /dev/input/mice (с которым по поводу мышки и общается X, в частности) и называет себя тоже Generic PS/2 mouse support, но на самом деле оказалось, что это такой промежуточный драйвер, который пользуется настоящим девайсом мышки, какой бы она ни была, и эмулирует PS/2-поддержку на /dev/input/mice. В общем, теперь я обо всём этом знаю больше, чем мне нужно.
2. Не запускался автоматически модуль сетевой карточки (sis900 в моём случае). Если я вручную запускал modprobe sis900, а потом /etc/init.d/net.eth0 start, сетка поднималась как миленькая, а сама во время загрузки — нет. Тоже провозился порядочно, разбираясь, как именно это происходило в 2.4 (и должно происходить в 2.6), что ядро подгружает нужный модуль, когда видит сетевую карточку. Оказалось, что всё это происходит довольно поздно, и по инициативе скриптов загрузки, а не самого ядра, в процессе hotplugging. Узнал о /sbin/hotplug, /etc/hotplug.d/*, /etc/hotplug/* итп. опять же в пять раз больше, чем мне хотелось бы (удивительно запутанная система там), и обнаружил, что в 2.4 скрипты пользуются программой pcimodules, которая смотрит в /proc/pci, читает там номера обнаруженных устройств, и сравнивает их с теми, что сгенерированы из исходников и записаны в /lib/modules/2.6.0/modules.pcimap во время постройки модулей ядра, а затем выдаёт список всех модулей, которые можно загрузить, и скрипты их сами подгружают с помощью modprobe. Оказалось, что в скриптах записано специально не пользоваться pcimodules начиная с 2.5, так как чтение информации из /proc должно уступить место чтению информации из новой /sys, но вот этого пока ещё и нет (по крайней мере в Gentoo, или я не нашёл, где сгрузить). Сам я это писать не стал; после того, как убрал проверку версии ядра, чтобы скрипты пользовались pcimodules, они почему-то стали пытаться всё загружать по пять раз; в конце концов я плюнул и добавил sis900 в /etc/modules.autoload, чтобы всё заработало.
С ALSA всё прошло нормально, за исключением того, что ей теперь при запуске не удаётса установить кодек AC97, ругается "AC'97 0:0 analog subsections not ready". Но все плейеры и так работают нормально (через эмуляцию старого интерфейса OSS, полагаю, хоть я и не проверял).
Сегодня или завтра хочу поиграться с UML.
1. По глупости, строя ядро, выбрал неправильные опции USB. Там есть три разных controller drivers: EHCI, OHCI и UHCI (very informative, guys — way to go!). Я включил в конфиг EHCI, а OHCI не включил. Оказывается, EHCI — драйвер для стандарта USB 2.0, а устройства USB 1.x он переправляет к драйверу OHCI, если тот скомпилирован, естественно. У меня его не было. В результате мою USB-мышку не нашёл модуль USB HID (Human Interface Devices). Вместо этого её нашёл позже модуль, отвечающий за обычные PS/2 mice (что, USB-мышка одновременно видна на хардверном уровне как PS/2-мышка, без софтверной эмуляции? Я этого не знал), и опознал как Generic Wheel Mouse. Несмотря на это, когда я вошёл в X, обнаружилось, что колесо мышки не работает. А без колеса читать ленту френдов совершенно невозможно! Это я сейчас такой умный, что всё рассказал по порядку, как случилось, а ночью мне, чтобы это понять, пришлось изрядно позовиться с конфигом, и по-переключаться обратно в 2.4 и опять в 2.6, сравнивая вывод dmesg и отыскивая, что именно у меня есть и чего не хватает. Мне сильно всё запутал драйвер mousedev, который отвечает за /dev/input/mice (с которым по поводу мышки и общается X, в частности) и называет себя тоже Generic PS/2 mouse support, но на самом деле оказалось, что это такой промежуточный драйвер, который пользуется настоящим девайсом мышки, какой бы она ни была, и эмулирует PS/2-поддержку на /dev/input/mice. В общем, теперь я обо всём этом знаю больше, чем мне нужно.
2. Не запускался автоматически модуль сетевой карточки (sis900 в моём случае). Если я вручную запускал modprobe sis900, а потом /etc/init.d/net.eth0 start, сетка поднималась как миленькая, а сама во время загрузки — нет. Тоже провозился порядочно, разбираясь, как именно это происходило в 2.4 (и должно происходить в 2.6), что ядро подгружает нужный модуль, когда видит сетевую карточку. Оказалось, что всё это происходит довольно поздно, и по инициативе скриптов загрузки, а не самого ядра, в процессе hotplugging. Узнал о /sbin/hotplug, /etc/hotplug.d/*, /etc/hotplug/* итп. опять же в пять раз больше, чем мне хотелось бы (удивительно запутанная система там), и обнаружил, что в 2.4 скрипты пользуются программой pcimodules, которая смотрит в /proc/pci, читает там номера обнаруженных устройств, и сравнивает их с теми, что сгенерированы из исходников и записаны в /lib/modules/2.6.0/modules.pcimap во время постройки модулей ядра, а затем выдаёт список всех модулей, которые можно загрузить, и скрипты их сами подгружают с помощью modprobe. Оказалось, что в скриптах записано специально не пользоваться pcimodules начиная с 2.5, так как чтение информации из /proc должно уступить место чтению информации из новой /sys, но вот этого пока ещё и нет (по крайней мере в Gentoo, или я не нашёл, где сгрузить). Сам я это писать не стал; после того, как убрал проверку версии ядра, чтобы скрипты пользовались pcimodules, они почему-то стали пытаться всё загружать по пять раз; в конце концов я плюнул и добавил sis900 в /etc/modules.autoload, чтобы всё заработало.
С ALSA всё прошло нормально, за исключением того, что ей теперь при запуске не удаётса установить кодек AC97, ругается "AC'97 0:0 analog subsections not ready". Но все плейеры и так работают нормально (через эмуляцию старого интерфейса OSS, полагаю, хоть я и не проверял).
Сегодня или завтра хочу поиграться с UML.
no subject
Date: 2003-12-21 04:39 pm (UTC)OHCI - UHCI зависит от вашего контроллера (+ для UHCI есть два альтернативных драйвера). OHCI лучше, кстати. И достаточно редки в наши дни
многие USB мыши продаются с USB-PS2 адаптером, и работают как PS2.
Но вы говорите что ядра распознало как PS2 мышь, воткнутую в USB порт ??
no subject
no subject
Date: 2003-12-21 08:32 pm (UTC)Именно так, да. Не понимаю, как это.
no subject
Date: 2003-12-21 08:45 pm (UTC)no subject
Date: 2003-12-21 09:09 pm (UTC)no subject
Date: 2003-12-21 09:32 pm (UTC)Оно небось и клавиатуру USBшную так же бы опознало
no subject
Date: 2003-12-21 09:48 pm (UTC)no subject
Date: 2003-12-21 10:01 pm (UTC)А именно:
http://www.microsoft.com/whdc/hwdev/bus/usb/usbcompat_Print.mspx#USBcompat1.gif
:)
В данном случае BIOS отловил наличие USB Mouse, и представил её в MS-DOS PS/2 Compatible варианте, что отловил стандартный драйвер PS/2 мыши :) То же самое скорее всего сработало бы и для USB клавиатуры. Так что даже без USB драйвера можно работать с ними, как "обычными" устройствами
no subject
Date: 2003-12-21 10:38 pm (UTC)no subject
Date: 2003-12-22 01:02 am (UTC)no subject
Date: 2003-12-23 12:11 am (UTC)no subject
Date: 2003-12-24 12:18 am (UTC)no subject
Date: 2003-12-24 12:25 am (UTC)Атвет!
Date: 2003-12-24 06:12 am (UTC)Маюсь с gs-sources-2.4.23_pre8-gss
Трабла такая - у меня стоит УСБ-клава с УСБ-хабом на два порта внутре.
Все xHCI собрал модулями.
Если пишу "insmod ehci-hcd", то клава находится и печатает, НО! Не работают светодиоды всех Локов, хотя режимы переключает исправно.
Если пишу "insmod uhci-hcd" (или ohci), то ситуация строго инверсная - Локи работают на ура, но система встаёт колом, ни с PS ни с УСБ-клав ничего нельзя ввести - помогает только ресет.
Таже фигня при запуске hotplug'а - секунд 5-7 система работает, и сразу виснет.
Если собираю все xHCI внутре ядра - система так же встает при загрузке примерно на установке часов или чистке темпов.
Сборка ядра genkernel'ом дает такие же результаты - виснет при загрузке.
Если выдергиваю клаву и гружусь с PS'ной - все работает.
Как завести УСБ-клаву правильно?
2.6 ядро поможет?
Заранее спасибо.
Отвечать можно мылом: pomozoff (dog) mail.ru
Re: Атвет!
Date: 2003-12-24 10:46 pm (UTC)no subject
Date: 2003-12-27 05:30 pm (UTC)