# Using lsmod info to inform kernel config?

## jeffk

Can someone advise what can be learned from lsmod output with the gentoo LiveCD, so I can check for missing settings in my genkernel config?

The hardware is an Intel Xeon on VMWare vSphere 4.1U1:

```
Linux livecd 2.6.36-gentoo-r5 #1 SMP Thu Feb 24 13:41:14 UTC 2011 x86_64 Intel(R) Xeon(R) CPU E5620 @ 2.40GHz GenuineIntel GNU/Linux
```

```
(chroot) livecd kernels # lsmod

Module                  Size  Used by

ipv6                  206212  12 

video                  11079  0 

backlight               3332  1 video

output                  1596  1 video

ac                      2112  0 

battery                 5558  0 

button                  4602  0 

fan                     2290  0 

thermal                 7461  0 

processor              25489  0 

thermal_sys            10469  4 video,fan,thermal,processor

floppy                 48917  0 

rtc                     4951  0 

tg3                   106290  0 

libphy                 14410  1 tg3

e1000                  82410  0 

fuse                   53142  0 

jfs                   138057  0 

raid10                 18211  0 

raid456                43608  0 

async_raid6_recov       1161  1 raid456

async_memcpy            1134  1 raid456

async_pq                3010  1 raid456

async_xor               2121  2 raid456,async_pq

xor                     4140  1 async_xor

async_tx                1622  5 raid456,async_raid6_recov,async_memcpy,async_pq,async_xor

raid6_pq               77394  2 async_raid6_recov,async_pq

raid1                  18057  0 

raid0                   6835  0 

dm_snapshot            24303  0 

dm_crypt                9987  0 

dm_mirror              11490  0 

dm_region_hash          6344  1 dm_mirror

dm_log                  7288  2 dm_mirror,dm_region_hash

dm_mod                 54734  4 dm_snapshot,dm_crypt,dm_mirror,dm_log

scsi_wait_scan           663  0 

sbp2                   17235  0 

ohci1394               23859  0 

ieee1394               59454  2 sbp2,ohci1394

sl811_hcd               8630  0 

usbhid                 29429  0 

ohci_hcd               17773  0 

uhci_hcd               17932  0 

usb_storage            38582  0 

ehci_hcd               30941  0 

usbcore               108389  7 sl811_hcd,usbhid,ohci_hcd,uhci_hcd,usb_storage,ehci_hcd

aic94xx                63941  0 

libsas                 34296  1 aic94xx

lpfc                  379212  0 

qla2xxx               281797  0 

megaraid_sas           37273  0 

megaraid_mbox          23613  0 

megaraid_mm             6897  1 megaraid_mbox

megaraid               35887  0 

aacraid                60335  0 

sx8                    11093  0 

DAC960                 61751  0 

cciss                  38709  0 

3w_9xxx                28682  0 

3w_xxxx                20500  0 

mptsas                 42747  0 

scsi_transport_sas     20845  3 aic94xx,libsas,mptsas

mptfc                  11989  0 

scsi_transport_fc      35443  3 lpfc,qla2xxx,mptfc

scsi_tgt                8344  1 scsi_transport_fc

mptspi                 13159  1 

mptscsih               23931  3 mptsas,mptfc,mptspi

mptbase                74685  4 mptsas,mptfc,mptspi,mptscsih

atp870u                23553  0 

dc395x                 27547  0 

qla1280                19271  0 

dmx3191d                9004  0 

sym53c8xx              62559  0 

gdth                   72993  0 

advansys               50333  0 

initio                 15329  0 

BusLogic               19282  0 

arcmsr                 23484  0 

aic7xxx               104791  0 

aic79xx               119712  0 

scsi_transport_spi     18315  5 mptspi,dmx3191d,sym53c8xx,aic7xxx,aic79xx

sg                     23380  0 

pdc_adma                5202  0 

sata_inic162x           6503  0 

sata_mv                23475  0 

ata_piix               20548  1 

ahci                   19337  0 

libahci                15797  1 ahci

sata_qstor              5001  0 

sata_vsc                3822  0 

sata_uli                2857  0 

sata_sis                3570  0 

sata_sx4                7854  0 

sata_nv                18743  0 

sata_via                7672  0 

sata_svw                3998  0 

sata_sil24             10545  0 

sata_sil                7060  0 

sata_promise            9521  0 

pata_sl82c105           3145  0 

pata_cs5530             4061  0 

pata_cs5520             3443  0 

pata_via                7479  0 

pata_jmicron            2248  0 

pata_marvell            2689  0 

pata_sis                9776  1 sata_sis

pata_netcell            2078  0 

pata_sc1200             2786  0 

pata_pdc202xx_old       4120  0 

pata_triflex            2878  0 

pata_atiixp             3449  0 

pata_opti               2615  0 

pata_amd                9908  0 

pata_ali                8839  0 

pata_it8213             3247  0 

pata_pcmcia             9893  0 

pcmcia                 28342  1 pata_pcmcia

firmware_class          5019  7 tg3,aic94xx,libsas,qla2xxx,qla1280,advansys,pcmcia

pcmcia_core            10317  1 pcmcia

pata_ns87415            3065  0 

pata_ns87410            2621  0 

pata_serverworks        5261  0 

pata_platform           3232  0 

pata_artop              4603  0 

pata_it821x             8157  0 

pata_optidma            4358  0 

pata_hpt3x2n            4515  0 

pata_hpt3x3             2917  0 

pata_hpt37x             9962  0 

pata_hpt366             4846  0 

pata_cmd64x             5432  0 

pata_efar               3363  0 

pata_rz1000             2610  0 

pata_sil680             4313  0 

pata_radisys            2743  0 

pata_pdc2027x           5771  0 

pata_mpiix              2715  0 

libata                133311  53 libsas,pdc_adma,sata_inic162x,sata_mv,ata_piix,ahci,libahci,

                                          sata_qstor,sata_vsc,sata_uli,sata_sis,sata_sx4,sata_nv,sata_via,sx
```

Are any tools available to configure the genkernel config based on the above information, so everything detected is available as a module or compiled in, but not everything in the whole kernel gets built? The target kernel is 2.6.38-gentoo-r1.

Thanks.

----------

## DONAHUE

The tool you ask for is 

```
genkernel --menuconfig all
```

 Pruning the genkernel would reduce the disk space the kernel requires: I have a 3.9MB kernel versus a 2.8MB genkernel plus 3.4MB initramfs plus 1.6MB system.map. A trivial 4.9MB difference in a terabyte world. The unpruned genkernel boot should be slower; but not enough for me to notice. Pruning will take a lot of time and seems not worth the effort. http://kernel-seeds.org/ is a repository of efficient kernel configurations good as a basis for manual configuration.

----------

## jeffk

Thanks for the reply. I am always impressed by the supported hardware of a full-config Linux kernel. I'm also more than happy to trade disk space for the benefit.

I've always customized my genkernel configs, and it's worked out well. On this new VMWare virtualized hardware, there was just a lot of unfamiliar territory for what needs to be compiled in for best performance and reliability. My main objective on this server, after full hardware and acceleration support, is to reduce compile time, which can be considerable for the full config, and considerably shorter for a config pared down to the expected hardware.

There's also some interest from my users about disabling the running kernel's support for unneeded hardware e.g. USB for security reasons.

Thanks.

----------

## jbouzan

 *Quote:*   

> /usr/src/linux $ make help
> 
> Cleaning targets:
> 
>   clean           - Remove most generated files but keep the config and
> ...

 

I think these options create a kernel .config by seeing currently loaded modules. Start with the appropriate version seed, then run make localyesconfig, and see if it boots.

----------

## krinn

lspci -k can also answer that

the make allmodconfig + setting criticals part build-in (read mostly disk controller) can also add options your hardware handle but not the livecd kernel

----------

