Скажем, у меня установлен Gentoo по умолчанию со всеми скомпилированными модулями (например, драйверами устройств). С этого момента есть ли простой способ исключить неиспользуемые модули при следующей перекомпиляции ядра?
make localmodconfig
и make localyesconfig
(введено в 2.6.32, выпущенной 3 декабря 2009 г.) выбирает модули, необходимые для загрузки используемых модулей.
Обратите внимание, что это не учитывает модули, которые были загружены один раз, но в настоящее время выгружены. ArchLinux имеет modprobed_db я не знаю, есть ли он у Gentoo.
Я использую пакет Discover в debian, чтобы выяснить, какие модули ядра я могу загрузить. В частности:
apt-get install discover
discover --data-path=linux/module/name|sort|uniq
Для моего двухъядерного настольного компьютера amd с чипсетом nvidia я получаю:
amd74xx
emu10k1
emu10k1-gp
forcedeth
i2c-nforce2
ohci1394
sata_nv
Вот короткое эссе об обнаружении оборудования в Linux, включая текст по использованию discover.
Вы можете использовать "lsmod", чтобы узнать модули ядра.
Показать используемые драйверы / модули:
lspci -v
Если бы мы собирались вдаваться в технические детали, я бы сказал, что вы можете просто выгрузить эти модули, и тогда вам не нужно будет перекомпилировать. Однако я думаю, вы имели в виду «включить только драйверы для моего конкретного оборудования». В этом случае я бы посоветовал:
dmesg | less
просмотрите это и посмотрите, какие детали оборудования вы можете экстраполировать. Затем, когда вы собираетесь компилировать ядро, просмотрите все компоненты и посмотрите, есть ли упоминание о вашем оборудовании. После перезагрузки убедитесь, что все оборудование работает.
В archlinux есть сценарий bash под названием [hwd][1]
, я предполагаю, что он будет работать на gentoo (возможно, потребуется немного взлома), но он расскажет вам о том, что у вас под капотом. Это мой рабочий компьютер:
[theman@work]# hwd -s
HARDWARE DETECT ver 5.5 (simple mode)
Kernel : 2.6.29-ARCH
CPU & Cache: Processor 0: Intel(R) Pentium(R) Dual CPU E2200 @ 2.20GHz 2194MHz, 1024 KB Cache
Processor 1: Intel(R) Pentium(R) Dual CPU E2200 @ 2.20GHz 2194MHz, 1024 KB Cache
Sound(a) : 82801G ICH7 Family High Definition Audio Controller module: snd-hda-intel
Video : GeForce 8400 GS server: Xorg (vesa)
Driver : xf86-video-vesa module: -
Monitor : Generic Monitor H: 28.0-96.0kHz V: 50.0-75.0Hz
Mouse : Logitech, Inc. Marble Mouse (4-button) xtype: IMPS2 device: /dev/input/mice
HDD : 82801GB/GR/GH ICH7 Family SATA IDE Controller module: ata_piix
USB : 82801G ICH7 Family USB UHCI Controller #4 module: uhci_hcd
USB2 : 82801G ICH7 Family USB2 EHCI Controller module: ehci_hcd
Ethernet : RTL8139/8139C/8139C+ module: 8139too
Network : No wireless card
Menu : Main menu: hwd
All : Detect all hardwares: hwd -e
X sample : Generate X sample: hwd -x
В «Ядре Linux в двух словах» от GKH есть сценарий оболочки, который делает это приближенно. Сценарий можно бесплатно загрузить с веб-сайта книг, и на нем нет сообщения об авторских правах, поэтому я предполагаю, что могу разместить его здесь.
for i in `find /sys/ -name modalias -exec cat {} \;`; do
/sbin/modprobe --config /dev/null --show-depends $i ;
done | rev | cut -f 1 -d '/' | rev | sort -u
Вывод скриптов - это список модулей. ваше оборудование должен функционировать. Оно делает не список модулей, которые необходимы для работы определенного программного обеспечения, например ipv6.so!
@Greg: если вы не хотите, чтобы это публиковалось вот так, я удалю его ;-)
В некоторых дистрибутивах также есть отличный инструмент под названием hwinfo, который дает вам много полезной информации о вашем оборудовании.
Чтобы узнать больше о модулях ядра, lspci и lsmod всегда делал для меня хорошую работу.
Если вы перекомпилируете ядро. Лучше всего хорошо знать свое оборудование, используя метод, представленный theman_on_osx. Составьте список всех ваших компонентов. Вам просто нужно снять / исключить модули (которые не нужны) из меню (т.е. если вы перекомпилируете его с помощью make menuconfig / make xconfig).
Вы также можете выгружать модули, которые загружаются "на лету", используя команду "rmmod".
lspci также должен вам помочь.