1 (10-11-2010 14:23:15 отредактировано Кручу-Верчу)

Тема: snd_hda при сборке ошибка.

Добрый день.

Для моей материнки нужен драйвер snd_hda
Добавил в ядро

# Multimedia sound driver
device          snd_hda

Но при попытке откомпилировать, выскакивает ошибка. Мир обновлял - все новое. Что не так?

rm -f .newdep
make -V CFILES -V SYSTEM_CFILES -V GEN_CFILES |  MKDEP_CPP="cc -E" CC="cc" xargs mkdep -a -f .newdep -O2 -frename-registers -pipe -fno-strict-aliasing  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I. -I/usr/src/sys -I/usr/src/sys/contrib/altq -I/usr/src/sys/contrib/ipfilter -I/usr/src/sys/contrib/pf -I/usr/src/sys/dev/ath -I/usr/src/sys/dev/ath/ath_hal -I/usr/src/sys/contrib/ngatm -I/usr/src/sys/dev/twa -I/usr/src/sys/gnu/fs/xfs/FreeBSD -I/usr/src/sys/gnu/fs/xfs/FreeBSD/support -I/usr/src/sys/gnu/fs/xfs -I/usr/src/sys/contrib/opensolaris/compat -I/usr/src/sys/dev/cxgb -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -fno-common -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000  -fno-omit-frame-pointer -mcmodel=kernel -mno-red-zone  -mfpmath=387 -mno-sse -mno-sse2 -mno-sse3 -mno-mmx -mno-3dnow  -msoft-float -fno-asynchronous-unwind-tables -ffreestanding -fstack-protector
In file included from /usr/src/sys/dev/sound/pcm/sound.h:88,
                 from /usr/src/sys/dev/sound/pci/hda/hdac.c:75:
/usr/src/sys/dev/sound/pcm/channel.h:253:24: error: channel_if.h: No such file or directory
/usr/src/sys/dev/sound/pci/hda/hdac.c:87:22: error: mixer_if.h: No such file or directory
mkdep: compile failed
*** Error code 1
Stop in /usr/obj/usr/src/sys/main.
*** Error code 1
Stop in /usr/src.
*** Error code 1
Stop in /usr/src.
test# 

2

Re: snd_hda при сборке ошибка.

Добавить надо еще:
device    sound
Вам же пишут:
/usr/src/sys/dev/sound/pcm/channel.h:253:24: error: channel_if.h: No such file or directory
Неоходимость в ядро добавить, зачем?
не проще в /boot/loader.conf добавить:

sound_load="YES"
snd_hda_load="YES"

Re: snd_hda при сборке ошибка.

Спасибо! Получилось.

4

Re: snd_hda при сборке ошибка.

А я вот так и не понял, в результате чего именно

5

Re: snd_hda при сборке ошибка.

в результате чего, что?

6

Re: snd_hda при сборке ошибка.

Я не уверен, что этот сайт со своими антиспам-фильтрами опять не потеряет полный текст сообщения, как в прошлый раз. Хотя на предпросмотре сообщение показывается как надо... Я писал следующее:
А я вот так и не понял, в результате чего именно

Получилось.

Тут предлагается два решения: либо добавить в конфиг ядра еще

device    sound

, либо грузить модули через /boot/loader.conf
Вот меня и интересует, что именно у топикстартера получилось.
Обойти ошибку компиляции?
Или загрузить модули?

7

Re: snd_hda при сборке ошибка.

bammbr пишет:

Я не уверен, что этот сайт со своими антиспам-фильтрами опять не потеряет полный текст сообщения, как в прошлый раз. Хотя на предпросмотре сообщение показывается как надо... Я писал следующее:
А я вот так и не понял, в результате чего именно

Получилось.

Тут предлагается два решения: либо добавить в конфиг ядра еще

device    sound

, либо грузить модули через /boot/loader.conf
Вот меня и интересует, что именно у топикстартера получилось.
Обойти ошибку компиляции?
Или загрузить модули?

Для какой версии FreeBSD спрашиваете?
С 9.0 ничего не надо, уже всё в ядре по умолчанию.

# Sound support
device        sound        # Generic sound driver (required)
device        snd_cmi        # CMedia CMI8338/CMI8738
device        snd_csa        # Crystal Semiconductor CS461x/428x
device        snd_emu10kx    # Creative SoundBlaster Live! and Audigy
device        snd_es137x    # Ensoniq AudioPCI ES137x
device        snd_hda        # Intel High Definition Audio
device        snd_ich        # Intel, NVidia and other ICH AC'97 Audio
device        snd_uaudio    # USB Audio
device        snd_via8233    # VIA VT8233x Audio

8

Re: snd_hda при сборке ошибка.

компилировать ядро нужно только если вы внесли в него изменения. Поэтому если вы хотите компилировать ядро, то добавляйте device. Если вы хотите подгружать как модуль, то не трогаете ядро, а редактируете loader.conf.

9

Re: snd_hda при сборке ошибка.

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

include         GENERIC

Добавил нужные мне опции-девайсы... Запускаю процесс компиляции -- получаю один в один сообщения, которые упомянуты в первом посте. Типа

/usr/src/sys/dev/sound/pcm/channel.h:253:24: error: channel_if.h: No such file or directory

по нему и нашёл эту цепочку. Вот и пытаюсь разобраться.

10

Re: snd_hda при сборке ошибка.

то есть выше описанные device вы добавили?

11

Re: snd_hda при сборке ошибка.

Описанные выше устройства меня вообще не интересуют в разрезе поставленных задач. Но, как и сказал ankor, в версии 9.0 и выше они включены в GENERIC, а значит, опосредовано (include GENERIC), упомянуты и у меня. Вот мне и интересны причины возникновения подобных ошибок и способы избавления от них.

12

Re: snd_hda при сборке ошибка.

Покажите свой конфиг, станет понятней о чём идет речь.
Такие ошибки возникают из-за зависимостей модулей ядра,
что-то закоментировали, а другой модуль на него ссылается.
Правильнее в make.conf ковыряться а не в конфиге ядра,
если конечно в ядро что-то своё не вставляете.

13 (13-12-2012 09:30:56 отредактировано bammbr)

Re: snd_hda при сборке ошибка.

ankor, понял. Спасибо. Щас посмотрю. Возможно, пропустил -- не выкинул nodevice-ом какой-либо snd_*, упомянутый в GENERIC

Добавлено: 13-12-2012 09:56:58

Да. Действительно. В своём случае я использовал конфиг ядра следующего вида:

cpu             HAMMER
ident           inherited
#Тут поставил ссылку на конфиг GENERIC. Тем самым задействовал и подключил все 
#устройства и опции там заявленные
include         GENERIC
#Добавил нужные мне устройства и опции:
options         IPFIREWALL
options         IPFIREWALL_NAT
options         IPFIREWALL_FORWARD
...
...
...
#Стал исключать то, что есть в  GENERIC, но не нужно или мешает мне
nooptions       INET6
nodevice        ahc
nooptions       AHC_REG_PRETTY_PRINT
...
...
...
#Вот в этом месте допустил пропуск
nodevice        sound           # Generic sound driver (required)
nodevice        snd_cmi         # CMedia CMI8338/CMI8738
nodevice        snd_csa         # Crystal Semiconductor CS461x/428x
...
...
...
# -- удалил устройство sound, но пропустил одно из устройств, которое присутствует
# в GENERIC, и которому этот sound требуется.

Ошибка, в общем-то, глупая. Просто не привык использовать include.
Спасибо ankor и crash за живое участие и помощь.

14

Re: snd_hda при сборке ошибка.

А нафига вам это надо?
Толку никакого, ну если только HDD 1G

15 (14-12-2012 15:24:50 отредактировано bammbr)

Re: snd_hda при сборке ошибка.

ankor пишет:

А нафига вам это надо?
Толку никакого, ну если только HDD 1G

Ну, к примеру, мне хотелось бы иметь в ядре поддержку таких опций, как

options         NETGRAPH_BPF

А т.к. сервачок, на котором это всё шаманится - не самый могучий, то ещё решил выкинуть из ядра поддержку устройств и опций, которые на нем точно не нужны. Чтобы уменьшить запросы к ресурсам со стороны ядра и повысить его быстродействие.

Ну, а если подытожить, то пришёл я в эту ветку, фактически, за одной только фразой

ankor пишет:

Такие ошибки возникают из-за зависимостей модулей ядра,
что-то закоментировали, а другой модуль на него ссылается.

Сейчас я эту ситуацию исправил. Ядро успешно скомпилировал-установил. Так что, ещё раз, спасибо.

16

Re: snd_hda при сборке ошибка.

Вам наверное делать нечего и времени вагон.
Оптимизация ядра практически ничего не даёт,
ковыряние в ядре оказывает влияние
лишь в пределах погрешности.
Всё можно загрузить модулями и эффект будет тот-же.
Тот-же  netgraph

# kldload netgraph
# kldstat
Id Refs Address            Size     Name
1   28 0xffffffff80200000 12da8d0  kernel
2    3 0xffffffff814db000 47550    linux.ko
3    1 0xffffffff81523000 11c8     cd9660_iconv.ko
4    2 0xffffffff81525000 89f0     libiconv.ko
5    1 0xffffffff8152e000 4dd88    vboxdrv.ko
6    1 0xffffffff8157c000 ee69e8   nvidia.ko
7    1 0xffffffff82612000 3c5c     linprocfs.ko
8    1 0xffffffff82616000 8332     netgraph.ko

посмотреть какие модули есть в ядре
cd /boot/kernel/ && ls | grep ng

Раньше, чтобы сделать проброс в IPFW нужно было было
в ядро добавить

options IPFIREWALL_FORWARD

теперь этого не надо и эту опцию в ядро уже не добавить,
будет ругаться.