LINUX.ORG.RU

Модули ядра

 


0

2

Иду дальше вглубь, закончил конфигурирование ядра и теперь нужно выбрать модули, которые будут загружаться автоматически. Каким образом можно выявить список необходимых модулей?


Список необходимых модулей растёт итеративно по мере необходимости. Включи пока что точно надо, потом дополнишь.
Не последний день живёшь раз ядро собираешь.

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

В первый. Так мне и надо определить то, что точно надо.

Список модулей и железок посмотреть - не проблема, я не могу понять как сопоставлять модули железкам.

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

Список модулей и железок посмотреть - не проблема, я не могу понять как сопоставлять модули железкам.

Поиск в make menuconfig и чтение описания по найденному пункту. Для поиска «/», для описания "?".

andreyu ★★★★★ ()

автоматически на то и автоматически
если тебе список нужен для конфига ядра, то ядро ты не сконфигурировал
а вообще есть всякие
make local{yes,mod}config
погуглил бы чтоль..

megabaks ★★★★ ()

Не понял задачу. Если ты уже сконфигурил ядро, то ты уже указал что будет в виде модулей. При загрузке те модули, которые нужны, и так загрузятся автоматически. Посмотреть что загрузилось можно командой lsmod. Я как правило после этого нахожу соотв. опции в ядре и вкомпиливаю это жестко в ядро. Остальные модули - выбрасываю за ненадобностью.

AFAIK есть исключения, например, AFAIR поддержка звуковух (alsa) и i2c в ядре должна быть именно модулем, а если жестко, то не работает. Но здесь я могу что-то не так помнить. В любом случае вкомпиливай все, что выдал lsmod жестко, и проверяй работоспособность. Остальные модули можешь вообще выключить.

P. S. У меня:

$ lsmod
Module                  Size  Used by
it87                   18635  0 
hwmon_vid               2176  1 it87
nvidia              10205706  40 
snd_emu10k1           119408  9 
snd_hwdep               4518  1 snd_emu10k1
snd_util_mem            1636  1 snd_emu10k1
snd_ac97_codec         86356  1 snd_emu10k1
ac97_bus                 738  1 snd_ac97_codec
snd_rawmidi            14086  1 snd_emu10k1
i2c_i801                7911  0 
coretemp                4794  0 

Kroz ★★★★★ ()
cat /etc/conf.d/modules
modules="hwmon coretemp i2c-core i2c-dev i2c-i801 ehci_hcd"

Все остальное подгружается само (естественно если найдет железки с которыми модуль должен работать) или подгрузится в момент первого ображения.

partyzan ★★★ ()
Последнее исправление: partyzan (всего исправлений: 1)
Ответ на: комментарий от Kroz

таки у тебя что-то не так с ядром/дровами
ибо модульность алса-дров совсем не обязательна

[ megabaks@desktop ] ~ $ lsmod
Module                  Size  Used by
fuse                   51928  4 
nvidia               8110688  48 
[ megabaks@desktop ] ~ $ 
[ megabaks@desktop ] ~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: DX [Xonar DX], device 0: Multichannel [Multichannel]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: DX [Xonar DX], device 1: Digital [Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
[ megabaks@desktop ] ~ $
УМВР
со встроенными интелами тоже всё хорошо

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

Посмотреть что загрузилось можно командой lsmod. Я как правило после этого нахожу соотв. опции в ядре и вкомпиливаю это жестко в ядро. Остальные модули - выбрасываю за ненадобностью.

ты изобрёл make localyesconfig

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

У тебя руки не в ту сторону растут:

┌─[/home/frag/blue]
└─[frag@nona]: cat /etc/conf.d/modules 
# You can define a list modules for a specific kernel version,
# a released kernel version, a main kernel version or just a list.
# The most specific versioned variable will take precedence.
#modules_2_6_23_gentoo_r5="ieee1394 ohci1394"
#modules_2_6_23="tun ieee1394"
#modules_2_6="tun"
#modules_2="ipv6"
#modules="ohci1394"

# You can give modules a different name when they load - the new name
# will also be used to pick arguments below.
#modules="dummy:dummy1"

# Give the modules some arguments if needed, per version if necessary.
# Again, the most specific versioned variable will take precedence.
#module_ieee1394_args="debug"
#module_ieee1394_args_2_6_23_gentoo_r5="debug2"
#module_ieee1394_args_2_6_23="debug3"
#module_ieee1394_args_2_6="debug4"
#module_ieee1394_args_2="debug5"

# You should consult your kernel documentation and configuration
# for a list of modules and their options.

modules="vmblock vsock vmci vmnet vmmon"

┌─[/home/frag/blue]
└─[frag@nona]: lsmod
Module                  Size  Used by
bluetooth             183025  0 
ipv6                  280306  28 
vmnet                  42147  13 
vmblock                 9857  0 
vsock                  39240  0 
vmci                   68590  1 vsock
vmmon                  66658  0 
it87                   28123  0 
hwmon_vid               2973  1 it87
fuse                   65725  1 
nvidia               9126368  38 
mei                    30940  0 
joydev                  9408  0 
hid_generic             1050  0 
usbhid                 35503  0 
coretemp                5847  0 
iTCO_wdt                4968  0 
iTCO_vendor_support     1706  1 iTCO_wdt
sr_mod                 14408  0 
crc32c_intel            1732  0 
aesni_intel            44643  0 
ablk_helper             1717  1 aesni_intel
cryptd                  7559  2 aesni_intel,ablk_helper
lrw                     3310  1 aesni_intel
aes_x86_64              7364  1 aesni_intel
xts                     2816  1 aesni_intel
mac_hid                 3146  0 
pcspkr                  1740  0 
lpc_ich                11186  0 
mfd_core                2706  1 lpc_ich
r8169                  53288  0 
mii                     3804  1 r8169
cdrom                  34850  1 sr_mod
i2c_i801                9319  0 
hid                    58551  2 hid_generic,usbhid
acpi_cpufreq            6983  0 
freq_table              2347  1 acpi_cpufreq
gf128mul                5475  2 lrw,xts
button                  4318  0 
mperf                   1012  1 acpi_cpufreq
processor              25352  1 acpi_cpufreq
thermal_sys            14784  1 processor

┌─[/home/frag/blue]
└─[frag@nona]: 

Kindly_Cat ()
Ответ на: комментарий от partyzan

Это у тебя от одной моей аватарки так бомбануло?

Deleted ()
Ответ на: комментарий от megabaks

модульность алса-дров совсем не обязательна

Ты, видимо, не сталкивался с проблемами со звуком. Иногда надо выгрузить, загрузить модуль с какими-то параметрами. Пример.

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

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

А закоменченное я просто не стал копипастить, если ты об этом.

partyzan ★★★ ()
Последнее исправление: partyzan (всего исправлений: 1)
Ответ на: комментарий от megabaks

таки параметры можно передать и вкомпиленному модулю

Тогда вопрос снят.

да и речь шла про нормальное железо, а не юзб-свистки

Покажи, где ТС указал своё железо.

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

ибо модульность алса-дров совсем не обязательна

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

Deleted ()
Ответ на: комментарий от megabaks

ибо модульность алса-дров совсем не обязательна

Может быть. Я ж говорю, что не помню откуда такой вывод сделал.

Сейчас погуглил. В официальном гайде есть такое:
Please note that for ease of use, all examples show ALSA built as modules. It is advisable to follow the same as it then allows the use of alsaconf which is a boon when you want to configure your card.

Еще, скажи, если вкомпилить жестко в ядро (а не как модуль), то работает ли /etc/modprobe.d ? У меня две звуковухи, и важно передавать параметры модулям. Может в этом была проблема.

Еще знаю, что когда «ломаются» какие-то устройства после suspend/hibernate, то зачастую это лечится rmmod + modprobe , а значит модуль по-любому нужен (хоть это и не мой кейс).

В любом случае путь ТС отложит на подкорках, что здесь могут быть подводные камни.

ты изобрёл make localyesconfig

О, за этот хинт спасибо, буду знать.

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

по поводу alsaconf - какое он имеет отношение к модульности или монолитности? он в любом случае работает
про /etc/modprobe.d - вроде работает

megabaks ★★★★ ()

make localmodconfig + make localyesconfig

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

как сопоставлять модули железкам

lspci -k
Так? Или что-то ещё имеется в виду?

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

как минимум отказаться от init{rd/ramfs}

т.е. без модуля alsa нет возможности загрузки с некоего железа?

если эти модули всегда загружены, то смысл их держать вне ядра?

Если лыжи и так куплены смысл не ходить в них летом?

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

Если лыжи и так куплены смысл не ходить в них летом?

аналогия кривая - очень кривая

т.е. без модуля alsa нет возможности загрузки с некоего железа?

ты вообще с головой дружишь?

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

ты вообще с головой дружишь?

Разговор был про alsa. alsa в init{rd/ramfs}? для чего? я немедленно хочу увидеть собственными глазами ту железку которая не в состоянии загрузится без звука!

аналогия кривая - очень кривая

аналогия великолепная! вкомпиливание всего монолитно в ядро на основании лишь того что «оно и так постоянно загружено» это именно лыжи летом.

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

это не лыжи летом, ибо в ядре только то железо, которое 100% времени подключено
потому лечи аналогию...или голову, если и так не понимаешь

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

как минимум отказаться от init{rd/ramfs}

Значит, в ядро стоит запихивать минимум, необходимый для отказа от initramfs так как у модулей есть свои достоинства.

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

в том случае разговор был про модули вообще, alsa в том числе

Ок. Про модули вообще.

Главный критерий - способность нормально загрузится с некоего железа.

Есть группа особо важных модулей наличие которых в {монолитнособранном ядре/ init{rd/ramfs}} критично для загрузки системы и есть все остальные наличие/отсутствие которых в {монолитнособранном ядре/ init{rd/ramfs}} никоим образом вообще никак и ни при каких условиях не скажется на способности нормально загрузится.

Пример root отформатировали в ext4 - модуль ext4 будет именно одним из таких особо важных.

И вот что касается таких особо важных тут я с тобой целиком согласен да их проще вкомпилировать монолитно в ядро…

alsa как и сотни других модулей к таким особо важным никакого отношения не имеют. И таскать их все в {монолитнособранном ядре/ init{rd/ramfs}} есть необходимость у дистростоителей да и то только лишь для того чтобы все, и причем не все а ВАЩЕ ВСЕ, всегда было под рукой.

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

Значит, в ядро стоит запихивать минимум, необходимый для отказа от initramfs так как у модулей есть свои достоинства.

Он это не понял и не хочет понять.

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

плюсую.

Проверено что монолитно вкомпиливая drm лишаемся возможности собрать в будущем проприетарные дрова. Некоторые хитрые программы (не помню названий) при загрузке парсят lsmod или напрямую modprobe имя_модуля делают. Соответственно если модуль есть и работает но вкомпилен монолитно, то его не видно в lsmod и modprobe на него не сработает.

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

Проверено что монолитно вкомпиливая drm лишаемся возможности собрать в будущем проприетарные дрова.

Вот именно. Мало того никто ж не запрещает использовать к примеру и nvidia и nouveau. Через параметр загрузки ядра маскируй ненужный и все. Да увы не одновременно зато сразу все.

Некоторые хитрые программы (не помню названий) при загрузке парсят lsmod или напрямую modprobe имя_модуля делают.

в gentoo многие init.d скрипты таким страдают. Просто написаны для модуля а не для монолита.

Соответственно если модуль есть и работает но вкомпилен монолитно, то его не видно в lsmod и modprobe на него не сработает.

Ну и тут опять же… Все монолитно не вкомпилировать. Никак. По крайней мере в данный момент. Как пример тот же блоб нвидии. И да монолитно оно секурнее и все такое… И да мне допустим не жалко хоть все это

[root@nemesis ~]# du -hs /lib/firmware
1,1M	/lib/firmware
[root@nemesis ~]# du -hs /lib64/modules/3.7.1-geek
32M	/lib64/modules/3.7.1-geek

Запихнуть в init{rd/ramfs}. Просто смысла в этом будет крайне мало. Все что критически необходимо и так уже там…

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

обоснуй смысл модульных дров для звука/сети/портов/фс и прочего, что 100% времени используется?
а про «вообще все» ты обосрался - явно не про то я тебе говорил

megabaks ★★★★ ()
Последнее исправление: megabaks (всего исправлений: 1)
Ответ на: комментарий от megabaks

обоснуй смысл модульных дров для звука/сети/портов/фс и прочего, что 100% времени используется?

Это все та же 4.3 про модульное против монолитного. И то и то решает задачу. И то и то имеет свои как положительные так и отрицательные стороны. А я не собираюсь тебя в чем-либо переубеждать.

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

вот насчет звука - некоторые извращенные звуковухи требуют подгрузки модуля с параметрами. Если вкомпилены монолитно - как параметры передавать? через загрузчик?

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

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

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

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

ты таки пытаешься доказать, что даже 100% времени используемые модули должны быть модулями - см. про лыжи и лето

То что я тебе пытался даже не доказывать а просто объяснить ты все равно не то что не понял а даже не читал. «100% времени используемые» или 1% «времени используемые» несущественно ибо критерий нужности модуля в {монолитнособранном ядре/init{rd/ramfs}} вовсе не время.

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

Интересно, а я об этом даже как-то не думал. Просто вкомпиливал всё нужное в ядро, а не очень нужное - модулями.

Kindly_Cat ()
Ответ на: комментарий от megabaks

максимум

Допустим, я уже избавился от initramfs. Зачем это мне?

как кривые недоделки

Так для тебя и ядро, может, «кривая недоделка»?

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

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

в крайних случаях, освобождать память.

если не брать в расчёт блобы, которые просто так не появляются (привет, невидия модуль в овер 10 метров), то модули занимаю 0,хрен_десятых метра
как та же tty
а кривые_недоделки - это модули, которые не могут работать нормально и там и сям
я таких встречал ровно 1 - что-то про pci - если в ядре, то сходу получаешь минутный тайма-аут при определении устройств
а ежели модуль нормально работает в монолите и постоянно загружен, то смысла держать его вне ядра считаю маразмом
почему, надеюсь, объяснять не надо!?
или ты «думаешь» как «ребутнутый» товарищ?

megabaks ★★★★ ()
Последнее исправление: megabaks (всего исправлений: 1)
Ответ на: комментарий от megabaks

а ежели модуль нормально работает в монолите и постоянно загружен, то смысла держать его вне ядра считаю маразм

За лыжи уплачены деньги. Лыжи прекрасно сидят на ноге в любую погоду обеспечивая сухость и комфорт ногам поэтому не носить их в жаркую летнюю погоду просто идиотизм.

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

замени лыжи на ноги и тогда твоя логика станет всем понятна
заодно и твоя деградация

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