LINUX.ORG.RU

[Gentoo] Проблемы с модулями ядра

 


0

2

Решил попробовать Gentoo. Предварительно поставил под виртуалбоксом, всё завелось по хэндбуку с полпинка. Дошёл до установки Гнома и решил снести убунту, сделав генту основной системой. Первым же сюрпризом был сломанный genkernel, который по неизвестной мне причине вылетает при сборке модулей. Конфиг я вообще не трогал, думал соберу сначала с genkernel, потом загружусь и буду экспериментировать с нормальной сборкой. Планы пришлось менять, собрал ядро, загрузился, тут и начались проблемы.
Во-первых, alsaconf не видит встроенную звуковуху, хотя она прописана в /etc/make.conf:

ALSA_CARDS=«hda-intel»

При запуске он ругается три раза так:

modpinfo: could not find module snd

Поддержка ALSA в ядро включена, snd_hda_intel вшит в ядро, какой модуль snd ему ещё надо?
Ещё одна проблема с браузером links. Когда я пытаюсь запустить его с флагом -g он ругается на отсутствие модуля svgalib_helper. Я пробую включить его с помощью modprobe, и получаю ошибку, что svgalib_helper.ko имеет неправильный формат.
И ещё: то, что после запуска gdm мышь и клавиатура полностью перестают работать (даже Ctrl-F1), это нормально? В виртуалбоксе они сразу работали, а сейчас мне похоже придётся прописывать их вручную. Вот только куда? /etc/X11/xorg.conf отсутствует.

> после запуска gdm мышь и клавиатура полностью перестают работать
INPUT_DEVICES=«evdev»?

/etc/X11/xorg.conf отсутствует

/etc/X11/xorg.conf.d/

А насчёт модулей, попробуй всётаки собрать без генкернела и включить всё в ядро, без initrd.

stormblastt ★★★
()

Какие сообщения выдаёт genkernel, после ошибок сборки модулей? Как правили конфигурационный файл ядра, вручную, или с помощью menuconfig, может просто вручную редактировали, если да, то скорее всего не удовлетворены некоторые зависимости?

По поводу svgalib, ядро и все модули для него должны быть собраны одной версией gcc и при одинаковых CFLAGS и CXXFLAGS, также исходники ядра нельзя очищать после сборки ядра, они используются при сборке внешних модулей, если они были изменены / очищены, то остаётся только одно, собрать ядро заново и затем уже все остальные модули к нему,

c /usr/src/linux
make clean
make menuconfig
make bzImage
make modules
make modules_install

правда есть еще опция в ядре, отключающая проверку версий ядра и модуля, но это не совсем хорошо, это поможет избежать проблем после очистки исходников ядра и сборки модулей под текущее ядро.

modpinfo: could not find module snd

проверьте CONFIG_SND=m в ядре.

У меня тоже hda-intel, вот выдержка из конфигурации ядра:

CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
CONFIG_SND_HWDEP=m
CONFIG_SND_JACK=y
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_DYNAMIC_MINORS=y
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_VMASTER=y
CONFIG_SND_DMA_SGBUF=y
CONFIG_SND_PCI=y
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_HWDEP=y
CONFIG_SND_HDA_RECONFIG=y
CONFIG_SND_HDA_INPUT_BEEP=y
CONFIG_SND_HDA_INPUT_BEEP_MODE=1
CONFIG_SND_HDA_INPUT_JACK=y
CONFIG_SND_HDA_CODEC_REALTEK=y
CONFIG_SND_HDA_CODEC_ANALOG=y
CONFIG_SND_HDA_CODEC_SIGMATEL=y
CONFIG_SND_HDA_CODEC_VIA=y
CONFIG_SND_HDA_CODEC_NVHDMI=y
CONFIG_SND_HDA_CODEC_INTELHDMI=y
CONFIG_SND_HDA_ELD=y
CONFIG_SND_HDA_CODEC_CIRRUS=y
CONFIG_SND_HDA_CODEC_CONEXANT=y
CONFIG_SND_HDA_CODEC_CA0110=y
CONFIG_SND_HDA_CODEC_CMEDIA=y
CONFIG_SND_HDA_CODEC_SI3054=y
CONFIG_SND_HDA_GENERIC=y

При такой конфигурации непосредственно alsa-driver отдельно из portage не ставил, все в ядре, стоят только эти пакеты :

media-libs/alsa-lib
media-sound/alsa-headers
media-sound/alsa-utils

У меня карта ati, и встроенная в нее подсистемы вывода звука для s-video тоже выполнена на кодеке, для поддержки которого нужен модуль hda-codec, при выполенении alsaconf тоже звуковая карта не находится, но если запустить alsamixer, то там есть озможность переключения между картами (звуковая и встроенная в видео), так же там можно убрать mute с каналов и затем потестировать звук, поставив проигрыватель, к примеру mp321.

При старте системы запускается alsasound, который входит в пакет alsa-utils, после выставления уровня громкости каналов и снятия mute выполните: /etc/init.d/alsasound save и добавьте его на запуск rc-update add alsasound default.

kostik87 ★★★★★
()

> Первым же сюрпризом был сломанный genkernel, который по неизвестной мне причине вылетает при сборке модулей.

У меня тоже такое было. Лучше собирайте вручную.

Fantasma
()
Ответ на: комментарий от kostik87

Да, какая у вас видеокарта, как собирали xorg-server с поддержкой udev или без?

Если нужен конфигурационный файл, то выполните:

X -configure
в домашнем каталоге root, появится файл xorg.conf.new, примерно так, точного названия не помню, его можно затем переместить в /etc/X11/xorg.conf.

Если используете флаг udev, при сборке xorg-server, то поставьте xf86-input-evdev, если нет, то поставьте xf86-input-{keyboard,mouse}

После перехода от разных версий xorg-server, или при его пересоборке с другими флагами, желательно пересобрать и используемые им драйверы ввода/вывода.

kostik87 ★★★★★
()
Ответ на: комментарий от Fantasma

Вы что-то не правильно делаете, я использую genkernel с самой первой установки и ни одной проблемы, скорее всего сами правили конфигурационный файл вручную и не были удовлетвороны зависимости.

kostik87 ★★★★★
()
Ответ на: комментарий от Fantasma

Зочем ругать genkernel? Хорошая штука.

Я вообще только его и юзаю, с самой первой установки. Да, иногда, кое-что вручную подравлю. Но это редко..

papochka
()
Ответ на: комментарий от kostik87

Вы что-то не правильно делаете, я использую genkernel с самой первой установки и ни одной проблемы

Не знаю, что я мог сделать неправильно:

emerge gentoo-sources genkernel
cd /usr/src/linux
genkernel all
Вроде на gentoo.org писали, что нужно замаскировать make, но я не стал заморачиваться и сконфигурировал ядро сам.

ARTIsshoque
() автор топика
Ответ на: комментарий от kostik87

проверьте CONFIG_SND=m в ядре

У меня =y, так нельзя?
Попробую пересобрать, полностью скопировав вашу выдержку.

ARTIsshoque
() автор топика

Кто-нибудь знает, какие зависимости у CONFIG_FB_SVGALIB? У меня нет такой строки в menuconfig, а если правлю вручную и потом запускаю menuconfig, эта строка опять перезаписывается на #CONFIG_FB_SVGALIB is not set.

ARTIsshoque
() автор топика
Ответ на: комментарий от papochka

> Зочем ругать genkernel?
Жирное ядро, много лишних модулей, корявый initrd

tn1
()
Ответ на: комментарий от kostik87

> Вы что-то не правильно делаете, я использую genkernel с самой первой установки и ни одной проблемы, скорее всего сами правили конфигурационный файл вручную и не были удовлетвороны зависимости.
он научился включать ext4 и sata в ядро?(были темы на gentoo.ru)

tn1
()
Ответ на: комментарий от kostik87

Сделал как у вас, теперь нет сообщения «could not find module snd», но alsaconf всё равно не обнаруживает звуковую карту. Пишет «Найдена не поддерживаемая PCI или PnP карта» независимо от наличия строки ALSA_CARDS в /etc/make.conf.

ARTIsshoque
() автор топика
Ответ на: комментарий от kostik87

> Вы что-то не правильно делаете
У меня при установке с чистого листа 2.6.38-r6 genkernel'ом не собралось. Пришлось брать его с ~amd64, после чего ядро скомпилилось, но какую-то фигню про мой iwl5000-ucode говорило. Понаотмечал ручками опции — почти все just works. Вердикт: генкернел не нужен.

metar ★★★
()

>ALSA_CARDS=«hda-intel»

набери emerge -pv alsa-tools, где hda-intel ?

nCdy
()
Ответ на: комментарий от ARTIsshoque

Попробуйте просто запустить alsamixer без alsaconf, в левой части экрана будет указана звуковая карта, которая сейчас выбрана, по F6 можно выбрать другую, если их несколько.

kostik87 ★★★★★
()
Ответ на: комментарий от madcore

Можно и так, но бывает что я дособираю модули для текущего ядра, в этом случае make modules_install вообще нельзя выполнять, только make modules, затем ручное их копирование в /lib/modules/`uname -r` и затем уже depmod.

Просто привычка, да и так как то логичнее, покрайней мере для меня, сначала сборка, а уже затем установка.

kostik87 ★★★★★
()
Ответ на: комментарий от metar

Возможно, но на то это и роолинг релиз дистрибутив, нельзя проверить все комбинации пакетов, иногда надо ставить обновления некоторых пакетов, даже если они и замаскорованы.

kostik87 ★★★★★
()
Ответ на: комментарий от ARTIsshoque

Я уже написал, используйте alsamixer, если вы выставили те же опции, что и у меня, то alsaconf вам скорее всего не понадобится, ALSA_CARDS нужен только при установке пакета alsa-driver, при использовании не ядерной версии alsa.

Кстати какая у вас неспосредственно звуковая карта, чьего производства, если интегрированная, то кто производитель материнской платы.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Плата от Gigabyte GA-H55M-S2H

lspci -k | grep -i audio
00:1b.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High Definition Audio (rev06)

Сейчас снова попробовал собрать genkernel, предварительно почистив каталог /usr/src. Конфиг использовался из каталога genkernel'а. Конец вывода:

DEPMOD 2.6.38-gentoo-r6
WARNING: /lib/modules/2.6.38-gentoo-r6/misc/svgalib_helper.ko needs unknown symbol kmalloc-caches
--
COMMAND: make -j2 CC="gcc" LD="ld" AS="as"
Makefile: 405: *** смешаны неявные и обычные правила. Останов.
*Gentoo Linux Genkernel; Version 3.4.10.907
*Running with options all
*ERROR: Failed to compile the "oldconfig" target...
--
//И далее о том, что не надо им посылать багрепорт.

Как думаете, имеет смысл попробовать более старые stage и portage, не используя emerge --sync перед сборкой ядра?

ARTIsshoque
() автор топика
Ответ на: комментарий от kostik87

Пробовал протестировать звук с помощью ogg123 - ничего. Хотя в alsamixer карточка правильно определяется. Звук почти на всех каналах по максимуму (кроме микрофонов). Глупый вопрос: а как mute снять? :)

ARTIsshoque
() автор топика
Ответ на: комментарий от ARTIsshoque

Я думаю тут дело или в gcc или gentoo-sources, попробовать размаскировать r7, хотя есть веросятность сбоя из-за glibc в реализации функции memcopy.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Насчёт mute уже не надо, нашёл F1 :) Звук появился. Спасибо за ответы.

ARTIsshoque
() автор топика
Ответ на: комментарий от ARTIsshoque

Выберите канал, стрелками влево и врправо, затем нажмите «M» снизу шкалы громкости должны исчезнуть две буквы «MM» и стать «00»

kostik87 ★★★★★
()

Сейчас на работе попробовал собрать под виртуалбоксом, используя те же stage и portage. В результате опять получаю ошибку, хотя в прошлый раз всё работало. И текст ошибки на этот раз другой, хотя мне такой тоже встречался (я несколько раз пытался genkernel запустить). Как решить проблему? Использовать более старые stage и исходники ядра? Или маскировать make? (Об этом написано здесь, но я так и не понял как это сделать).

Скриншот ошибки

ARTIsshoque
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.