Anatoly Vorobey (avva) wrote,
Anatoly Vorobey
avva

Category:

2.6

Апгрейднул свой 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.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 16 comments