summaryrefslogtreecommitdiffstats
path: root/zarb-ml/mageia-sysadm/attachments/20110207/4026f6a5
diff options
context:
space:
mode:
authorNicolas Vigier <boklm@mageia.org>2013-04-14 13:46:12 +0000
committerNicolas Vigier <boklm@mageia.org>2013-04-14 13:46:12 +0000
commit1be510f9529cb082f802408b472a77d074b394c0 (patch)
treeb175f9d5fcb107576dabc768e7bd04d4a3e491a0 /zarb-ml/mageia-sysadm/attachments/20110207/4026f6a5
parentfa5098cf210b23ab4f419913e28af7b1b07dafb2 (diff)
downloadarchives-master.tar
archives-master.tar.gz
archives-master.tar.bz2
archives-master.tar.xz
archives-master.zip
Add zarb MLs html archivesHEADmaster
Diffstat (limited to 'zarb-ml/mageia-sysadm/attachments/20110207/4026f6a5')
-rw-r--r--zarb-ml/mageia-sysadm/attachments/20110207/4026f6a5/attachment-0001.html671
-rw-r--r--zarb-ml/mageia-sysadm/attachments/20110207/4026f6a5/attachment.html671
2 files changed, 1342 insertions, 0 deletions
diff --git a/zarb-ml/mageia-sysadm/attachments/20110207/4026f6a5/attachment-0001.html b/zarb-ml/mageia-sysadm/attachments/20110207/4026f6a5/attachment-0001.html
new file mode 100644
index 000000000..a42a9bbc0
--- /dev/null
+++ b/zarb-ml/mageia-sysadm/attachments/20110207/4026f6a5/attachment-0001.html
@@ -0,0 +1,671 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<title>[449] Import cleaned kernel</title>
+</head>
+<body>
+
+<style type="text/css"><!--
+#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
+#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
+#msg dt:after { content:':';}
+#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
+#msg dl a { font-weight: bold}
+#msg dl a:link { color:#fc3; }
+#msg dl a:active { color:#ff0; }
+#msg dl a:visited { color:#cc6; }
+h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
+#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
+#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
+#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
+#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
+#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
+#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
+#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
+#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
+#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
+#logmsg pre { background: #eee; padding: 1em; }
+#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
+#logmsg dl { margin: 0; }
+#logmsg dt { font-weight: bold; }
+#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
+#logmsg dd:before { content:'\00bb';}
+#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
+#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
+#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
+#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
+#logmsg table th.Corner { text-align: left; }
+#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
+#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
+#patch { width: 100%; }
+--></style>
+<div id="msg">
+<dl class="meta">
+<dt>Revision</dt> <dd>449</dd>
+<dt>Author</dt> <dd>dmorgan</dd>
+<dt>Date</dt> <dd>2011-02-07 00:03:52 +0100 (Mon, 07 Feb 2011)</dd>
+</dl>
+
+<h3>Log Message</h3>
+<pre>Import cleaned kernel</pre>
+
+<h3>Added Paths</h3>
+<ul>
+<li>drakx/trunk/kernel/</li>
+<li><a href="#drakxtrunkkernelMakefile">drakx/trunk/kernel/Makefile</a></li>
+<li><a href="#drakxtrunkkernellist_modulespm">drakx/trunk/kernel/list_modules.pm</a></li>
+<li><a href="#drakxtrunkkernelmodulespl">drakx/trunk/kernel/modules.pl</a></li>
+</ul>
+
+</div>
+<div id="patch"><pre>
+<a id="drakxtrunkkernelMakefile">Added: drakx/trunk/kernel/Makefile</a>
+===================================================================
+--- drakx/trunk/kernel/Makefile (rev 0)
++++ drakx/trunk/kernel/Makefile 2011-02-06 23:03:52 UTC (rev 449)
+@@ -0,0 +1,8 @@
++clean:
++ rm -rf *~
++
++check:
++ perl modules.pl check &gt; /dev/null
++ @echo &quot;unlisted drivers: &quot;
++ @for i in $$(zcat /usr/share/ldetect-lst/pcitable.gz|cut -f 2 -d \&quot; |egrep -v '^#|ADSL:|Bad:|Card:|H[cs]f:|ISDN:|LT:'|sort|uniq|less);do fgrep -q $$i list_modules.pm|| echo -n &quot;$$i &quot;;done
++ @echo
+
+
+Property changes on: drakx/trunk/kernel/Makefile
+___________________________________________________________________
+<a id="svneolstyle">Added: svn:eol-style</a>
+ + native
+
+<a id="drakxtrunkkernellist_modulespm">Added: drakx/trunk/kernel/list_modules.pm</a>
+===================================================================
+--- drakx/trunk/kernel/list_modules.pm (rev 0)
++++ drakx/trunk/kernel/list_modules.pm 2011-02-06 23:03:52 UTC (rev 449)
+@@ -0,0 +1,418 @@
++package list_modules; # $Id: list_modules.pm 268192 2010-05-04 09:37:32Z pterjan $
++
++use MDK::Common;
++
++our @ISA = qw(Exporter);
++our @EXPORT = qw(load_dependencies dependencies_closure category2modules module2category sub_categories);
++
++# the categories have 2 purposes
++# - choosing modules to include on stage1's (cf update_kernel and mdk-stage1/pci-resource/update-pci-ids.pl)
++# - performing a load_category or probe_category (detect_devices.pm and many files in perl-install)
++
++our %l = (
++ ################################################################################
++ network =&gt;
++ {
++ atm =&gt; [ qw(ambassador eni firestream fore_200e he horizon idt77252 iphase lanai nicstar solos-pci zatm) ],
++ main =&gt; [
++ if_(arch() =~ /ppc/, qw(bmac fec_mpc52xx ibm_emac mace oaknet sungem)),
++ if_(arch() =~ /^sparc/, qw(sunbmac sunhme sunqe)),
++ if_(arch() !~ /alpha|sparc/,
++ qw(3c501 3c503 3c505 3c507 3c509 3c515 3c990 3c990fx),
++ qw(82596 ac3200 acenic aironet4500_card amd8111e at1700 atl2 atp),
++ qw(bcm4400 cassini cs89x0 de600 de620),
++ qw(depca dmfe e2100 eepro eexpress enic eth16i),
++ qw(ewrk3 hp hp-plus hp100),
++ qw(iph5526), #- fibre channel
++ qw(jme lance ne ni5010 ni52 ni65 nvnet),
++ qw(prism2_plx qlge r6040 rcpci rhineget),
++ qw(sb1000 sc92031 smc-ultra smc9194 smsc9420 smsc95xx),
++ qw(tc35815 tlan uli526x vmxnet3),
++ ),
++ if_(arch() !~ /alpha/,
++ qw(b44 com20020-pci de2104x),
++ qw(defxx), # most unused
++ qw(dgrs e100 eepro100 epic100 fealnx hamachi natsemi),
++ qw(ne2k-pci pcnet32 plip sis900 skfp starfire tulip),
++ qw(typhoon via-rhine winbond-840 forcedeth),
++ qw(sungem sunhme), # drivers for ultrasparc, but compiled in ix86 kernels...
++ ),
++ qw(3c59x 8139too 8139cp cpmac niu sundance), #rtl8139
++ ],
++ firewire =&gt; [ qw(eth1394 pcilynx) ],
++ gigabit =&gt; [
++ qw(atl1 atl1c atl1e be2net bnx2 bnx2x cxgb cxgb3 dl2k e1000 e1000e et131x igb ipg ixgb ixgbe myri_sbus netxen_nic ns83820 qla3xxx r8169 s2io sfc sxg_nic
++ sis190 sk98lin skge sky2 slicoss spidernet tehuti tg3 via-velocity virtio_net vxge yellowfin),
++ qw(bcm5820 bcm5700), #- encrypted
++ ],
++
++ raw =&gt; [
++ qw(ppp_generic ppp_async ppp_deflate bsd_comp),
++ ],
++ pcmcia =&gt; [
++ qw(3c574_cs 3c589_cs axnet_cs fmvj18x_cs),
++ qw(ibmtr_cs libertas_cs nmclan_cs pcnet_cs smc91c92_cs),
++ qw(xirc2ps_cs xircom_cb xircom_tulip_cb),
++ ],
++ #- generic NIC detection for USB seems broken (class, subclass,
++ #- protocol reported are not accurate) so we match network adapters against
++ #- known drivers :-(
++ usb =&gt; [
++ qw(asix catc cdc_ether kaweth pegasus rtl8150 usbnet),
++ ],
++ wireless =&gt; [
++ qw(acx-pci acx-usb adm8211 agnx airo airo_cs aironet4500_cs),
++ qw(aironet_cs ar9170usb arlan arusb_lnx at76_usb ath5k ath9k),
++ qw(ath_pci atmel_cs atmel_pci b43 b43legacy bcm43xx com20020_cs),
++ qw(dyc_ar5 hostap_cs hostap_pci hostap_plx i2400m-usb ipw2100),
++ qw(ipw2200 ipw3945 iwl3945 iwl4965 iwlagn iwlwifi madwifi_pci),
++ qw(mwl8k ndiswrapper netwave_cs orinoco orinoco_cs),
++ qw(orinoco_nortel orinoco_pci orinoco_plx orinoco_tmd p54pci),
++ qw(p54usb prism2_cs prism2_pci prism2_usb prism54 r8180),
++ qw(r8187se r8192_pci r8192s_usb r8192u_usb ray_cs rndis_wlan rt2400 rt2400pci rt2500),
++ qw(rt2500pci rt2500usb rt2570 rt2800pci rt2800usb rt2860 rt2860sta rt2870),
++ qw(rt2870sta rt3070sta rt61 rt61pci rt73 rt73usb rtl8180),
++ qw(rtl8187se rtusb spectrum_cs usbvnet_rfmd vt6655_stage vt6656_stage vt_ar5k w35und),
++ qw(wavelan_cs wl wl3501_cs wvlan_cs zd1201 zd1211rw),
++ if_(arch() =~ /ppc/, qw(airport)),
++ ],
++ isdn =&gt; [
++ qw(avmfritz c4 cdc-acm b1pci divas hfc4s8s_l1 hfc_usb hfc4s8s_l1 hisax hisax_st5481 hisax_fcpcipnp hysdn sedlfax t1pci tpam w6692pci),
++ qw(avmfritz hfcpci hfcmulti hfcsusb mISDNinfineon netjet), # mISDN
++ qw(fcpci fcdsl fcdsl fcdsl2 fcdslsl fcdslslusb fcdslusb fcdslusba fcusb fcusb2 fxusb fxusb_CZ)
++ ],
++ cellular =&gt; [
++ qw(hso nozomi option sierra),
++ ],
++ modem =&gt; [
++ qw(ltmodem mwave sm56),
++ ],
++ slmodem =&gt; [
++ qw(slamr slusb snd-ali5451 snd-atiixp-modem snd-intel8x0m snd-via82xx-modem),
++ ],
++ tokenring =&gt; [ qw(3c359 abyss ibmtr lanstreamer olympic proteon skisa smctr tms380tr tmspci) ],
++ wan =&gt; [ qw(c101 cosa cyclomx cycx_drv dlci dscc4 farsync hdlc hostess_sv11 lapbether lmc n2 pc300 pci200syn sbni sdla sdladrv sealevel syncppp wanxl z85230) ],
++ usb_dsl =&gt; [ qw(cxacru speedtch ueagle-atm usbatm xusbatm) ],
++ },
++
++ ################################################################################
++ disk =&gt;
++ {
++ # ide drivers compiled as modules:
++ ide =&gt; [
++ qw(aec62xx ali14xx alim15x3 amd74xx atiixp cmd64x cy82c693 cs5520 cs5530 cs5535 cs5536),
++ qw(delkin_cb dtc2278 hpt34x hpt366 ns87415 ht6560b it8172 it8213 it821x jmicron),
++ qw(opti621 pdc202xx_new pdc202xx_old piix qd65xx rz1000 sc1200 serverworks siimage sis5513 slc90e66),
++ qw(tc86c001 triflex trm290 tx4938ide tx4939ide umc8672 via82cxxx ide-pci-generic ide-generic),
++ ],
++ scsi =&gt; [
++ if_(arch() =~ /ppc/, qw(mesh mac53c94)),
++ if_(arch() =~ /^sparc/, qw(qlogicpti)),
++ if_(arch() !~ /alpha|sparc/,
++ '53c7,8xx',
++ qw(a100u2w advansys aha152x aha1542 aha1740 AM53C974 atp870u),
++ qw(be2iscsi bfa BusLogic dc395x dc395x_trm dmx3191d dtc eata eata_dma),
++ qw(eata_pio fdomain g_NCR5380 in2000 initio mpt2sas mvsas NCR53c406a),
++ qw(nsp32 pas16 pci2220i pm8001 psi240i qla1280 qla2x00 qla2xxx),
++ qw(qlogicfas qlogicfc seagate shasta sim710 stex sym53c416),
++ qw(t128 tmscsim u14-34f ultrastor vmw_pvscsi wd7000),
++ ),
++ qw(aic7xxx aic7xxx_old aic79xx pci2000 qlogicfas408 sym53c8xx lpfc lpfcdd), # ncr53c8xx
++ ],
++ sata =&gt; [
++ # note that ata_piix manage RAID devices on ICH6R
++ qw(ahci aic94xx ata_adma ata_piix pata_pdc2027x pdc_adma),
++ qw(sata_fsl sata_inic162x sata_mv sata_nv sata_promise),
++ qw(sata_qstor sata_sil sata_sil24 sata_sis sata_svw sata_sx4 sata_uli sata_via sata_vsc sx8),
++ # new drivers: old ide drivers ported over libata:
++ qw(ata_generic mv-ahci pata_ali pata_amd pata_artop pata_atiixp pata_atp867x),
++ qw(pata_bf54x pata_cmd640 pata_cmd64x pata_cs5520 pata_cs5530),
++ qw(pata_cs5535 pata_cs5536 pata_cypress pata_efar pata_hpt366),
++ qw(pata_hpt37x pata_hpt3x2n pata_hpt3x3 pata_isapnp pata_it8172),
++ qw(pata_it8213 pata_it821x pata_jmicron pata_legacy pata_marvell),
++ qw(pata_mpiix pata_netcell pata_ninja32 pata_ns87410),
++ qw(pata_ns87415 pata_oldpiix pata_opti pata_optidma),
++ qw(pata_pdc2027x pata_pdc202xx_old pata_piccolo pata_platform pata_qdi),
++ qw(pata_radisys pata_rdc pata_rz1000 pata_sc1200 pata_sch),
++ qw(pata_serverworks pata_sil680 pata_sis pata_sl82c105),
++ qw(pata_triflex pata_via pata_winbond),
++ if_(arch() =~ /ppc/, 'sata_fsl'),
++ qw(pata_acpi),
++ ],
++ hardware_raid =&gt; [
++ if_(arch() =~ /^sparc/, qw(pluto)),
++ if_(arch() !~ /alpha|sparc/,
++ # 3w-xxxx drives ATA-RAID, 3w-9xxx and arcmsr drive SATA-RAID
++ qw(3w-9xxx 3w-sas 3w-xxxx a320raid aacraid arcmsr cciss cpqarray),
++ qw(cpqfc DAC960 dpt_i2o gdth hpsa hptiop i2o_block imm ipr ips),
++ qw(it8212 it821x iteraid megaide megaraid megaraid_mbox),
++ qw(megaraid_sas mptfc mptsas mptscsih mptspi pdc-ultra pmcraid ppa),
++ qw(qla2100 qla2200 qla2300 qla2322 qla4xxx qla6312 qla6322),
++ ),
++ ],
++ virtual =&gt; [ qw(xenblk virtio_blk) ],
++ pcmcia =&gt; [ qw(aha152x_cs fdomain_cs nsp_cs qlogic_cs ide-cs pata_pcmcia sym53c500_cs) ],
++ raw =&gt; [ qw(ide-gd_mod sd_mod) ],
++ usb =&gt; [ qw(usb-storage) ],
++ firewire =&gt; [ qw(sbp2) ],
++ cdrom =&gt; [ qw(ide-cd_mod sr_mod) ],
++ card_reader =&gt; [ qw(sdhci tifm_sd tifm_7xx1) ],
++ },
++
++ ################################################################################
++
++ bus =&gt;
++ {
++ usb =&gt; [ qw(ehci-hcd hwa-hc isp116x-hcd isp1760 ohci-hcd r8a66597-hcd sl811_cs sl811-hcd uhci-hcd u132-hcd usb-uhci usb-ohci whci-hcd) ],
++ bluetooth =&gt; [ qw(bcm203x bfusb bpa10x btusb) ],
++ firewire =&gt; [ qw(ohci1394) ],
++ i2c =&gt; [
++ qw(i2c-ali1535 i2c-ali1563 i2c-ali15x3 i2c-amd756 i2c-amd8111 i2c-i801 i2c-i810 i2c-nforce2),
++ qw(i2c-piix4 i2c-prosavage i2c-savage4 i2c-sis5595 i2c-sis630 i2c-sis96x i2c-via i2c-viapro i2c-voodoo3),
++ if_(arch() !~ /^ppc/, qw(i2c-hydra i2c-ibm_iic i2c-mpc)),
++ ],
++ pcmcia =&gt; [
++ if_(arch() !~ /^sparc/, qw(au1x00_ss i82365 i82092 pd6729 tcic vrc4171_card vrc4173_cardu yenta_socket)), # cb_enabler
++ ],
++ hid =&gt; [ qw(hid-a4tech hid-apple hid-belkin hid-cherry hid-chicony
++ hid-cypress hid-drff hid-ezkey hid-gaff hid-gyration hid-kensington hid-kye
++ hid-logitech hid-microsoft hid-monterey hid-multilaser hid-ntrig
++ hid-petalynx hid-pl hid-samsung hid-sjoy hid-sony hid-sunplus
++ hid-tmff hid-topseed hid-zpff hid-wacom ff-memless)],
++ #serial_cs
++ #ftl_cs 3c575_cb apa1480_cb epic_cb serial_cb tulip_cb iflash2+_mtd iflash2_mtd
++ #cb_enabler
++ },
++
++ fs =&gt;
++ {
++ network =&gt; [ qw(af_packet nfs smbfs) ],
++ cdrom =&gt; [ qw(isofs) ],
++ loopback =&gt; [ qw(isofs loop squashfs) ],
++ local =&gt; [
++ if_(arch() =~ /^ppc/, qw(hfs)),
++ qw(reiserfs reiser4 jfs xfs ntfs vfat ext3 ext4 btrfs),
++ ],
++ various =&gt; [ qw(romfs ufs unionfs) ],
++
++ },
++
++ ################################################################################
++ multimedia =&gt;
++ {
++ sound =&gt; [
++ if_(arch() =~ /ppc/, qw(dmasound_pmac snd-aoa snd-powermac)),
++ if_(arch() =~ /sparc/, qw(snd-sun-amd7930 snd-sun-cs4231 snd-sun-dbri)),
++ if_(arch() !~ /^sparc/,
++ qw(ad1816 ad1848 ad1889 ali5455 audigy audio awe_wave cmpci cs4232 cs4281 cs46xx cx88-alsa),
++ qw(emu10k1 es1370 es1371 esssolo1 forte gus i810_audio ice1712 kahlua mad16 maestro),
++ qw(maestro3 mpu401 msnd_pinnacle nm256_audio nvaudio opl3 opl3sa opl3sa2 pas2 pss),
++ qw(rme96xx sam9407 sb sgalaxy snd-ad1816a snd-ad1848 snd-ad1889 snd-ali5451 snd-als100 snd-als300),
++ qw(snd-als4000 snd-atiixp snd-au8810 snd-au8820 snd-au8830 snd-audigyls snd-aw2 snd-azt2316 snd-azt2320 snd-azt3328 snd-azx),
++ qw(snd-asihpi snd-at73c213 snd-bt87x snd-ca0106 snd-cmi8330 snd-cmi8788 snd-cmipci),
++ qw(snd-cs4231 snd-cs4232 snd-cs4236 snd-cs4281 snd-cs46xx snd-cs5530 snd-cs5535audio),
++ qw(snd_ctxfi),
++ qw(snd-darla20 snd-darla24 snd-dt019x snd-echo3g snd-emu10k1 snd-emu10k1x),
++ qw(snd-ens1370 snd-ens1371 snd-es1688 snd-es18xx snd-es1938 snd-es1968 snd-es968),
++ qw(snd-fm801 snd-gina20 snd-gina24 snd-gina3g),
++ qw(snd-gusclassic snd-gusextreme snd-gusmax),
++ qw(snd-hda-intel snd-hdsp snd-hdspm snd-ice1712 snd-ice1724),
++ qw(snd-indi snd-indigo snd-indigodj snd-indigodjx snd-indigoio snd-indigoiox snd-intel8x0 snd-interwave),
++ qw(snd-interwave-stb snd-korg1212 snd-layla20 snd-layla24 snd-layla3g snd-lx6464es),
++ qw(snd-maestro3 snd-mia snd-mixart snd-mona snd-mpu401 snd-nm256),
++ qw(snd-opl3sa2 snd-opti92x-ad1848 snd-opti92x-cs4231 snd-opti93x snd-oxygen snd-pcsp snd-pcxhr snd-riptide snd-rme32),
++ qw(snd-rme96 snd-rme9652 snd-sb16 snd-sb8 snd-sbawe snd-sc6000 snd-sgalaxy snd-sis7019 snd-sonicvibes),
++ qw(snd-sscape snd-trident snd-via82xx snd-virtuoso snd-vx222 snd-vxp440 snd-vxpocket snd-wavefront),
++ qw(snd-ymfpci sonicvibes sscape trident via82cxxx_audio wavefront ymfpci),
++ ),
++ ],
++ tv =&gt; [ qw(bt878 bttv cx23885 cx25821 cx8800 cx8802 cx88-blackbird dpc7146),
++ qw(ivtv mxb pvrusb2 saa7134 saa7164 zr36067) ],
++ dvb =&gt; [
++ qw(b2c2-flexcop-pci b2c2-flexcop-usb budget budget-av),
++ qw(budget-ci cinergyT2 dm1105 dvb-dibusb dvb-ttpci),
++ qw(dvb-ttusb-budget dvb-usb-a800 dvb-usb-af9015 dvb-usb-ce6230),
++ qw(dvb-usb-cinergyT2 dvb-usb-cxusb dvb-usb-dib0700),
++ qw(dvb-usb-dibusb-mb dvb-usb-dibusb-mc dvb-usb-digitv),
++ qw(dvb-usb-dtt200u dvb-usb-dtv5100 dvb-usb-ec168 dvb-usb-friio dvb-usb-gp8ps),
++ qw(dvb-usb-nova-t-usb2 dvb-usb-ttusb2 dvb-usb-umt-010),
++ qw(dvb-usb-vp702x dvb-usb-vp7045 earth-pt1 firedtv hexium_gemini),
++ qw(hexium_orion pluto2 skystar2 smsusb ttusb_dec),
++ ],
++ photo =&gt; [ qw(dc2xx mdc800) ],
++ radio =&gt; [ qw(radio-gemtek-pci radio-maestro radio-maxiradio radio-miropcm20 radio-usb-si470x) ],
++ scanner =&gt; [ qw(scanner microtek) ],
++ gameport =&gt; [ qw(cs461x ns558 emu10k1-gp fm801-gp lightning ns558 vortex) ],
++ usb_sound =&gt; [ qw(audio dabusb dsbr100 snd-usb-audio snd-usb-caiaq snd-usb-usx2y usb-midi) ],
++ webcam =&gt; [
++ qw(cafe_ccic cpia2 cpia_usb cyber2000fb em28xx et61x251 gspca),
++ qw(ibmcam konicawc mod_quickcam ov511 ov511-alt ov518_decomp),
++ qw(ov51x-jpeg ovfx2 pwc qc-usb-messenger quickcam quickcam_messenger),
++ # both STV06xx &amp; stv06xx b/c drivers/media/video/gspca/stv06xx/stv06xx.h
++ # wrongly use upcase letters:
++ qw(se401 sn9c102 STV06xx stv06xx stv680 tcm825x ultracam),
++ qw(usbvideo usbvision vicam w9968cf zc0301),
++ ],
++ },
++
++ # USB input stuff get automagically loaded by hotplug and thus
++ # magically work through /dev/input/mice multiplexing:
++ input =&gt; {
++ joystick =&gt; [
++ qw(iforce xpad),
++ # there're more drivers in drivers/input/joystick but they support non USB or PCI devices
++ # and thus cannot be detected but by slow (and maybe dangerous?) load_category:
++ qw(a3d adi analog cobra db9 gamecon gf2k grip grip_mp guillemot interact),
++ qw(joydump magellan sidewinder spaceball spaceorb stinger tmdc turbografx warrior)
++ ],
++ remote =&gt; [ qw(ati_remote) ],
++ # USB tablets and touchscreens:
++ tablet =&gt; [ qw(acecad aiptek wacom kbtab) ],
++ touchscreen =&gt; [ qw(ads7846_ts gunze hp680_ts_input itmtouch mk712 mtouch usbtouchscreen) ],
++ },
++
++ various =&gt;
++ # just here for classification, unused categories (nor auto-detect, nor load_thiskind)
++ {
++ raid =&gt; [
++ qw(dm-crypt dm-mirror dm-mod dm-zero linear lvm-mod multipath raid0 raid1 raid10 raid456 raid5 raid6),
++ qw(dm-delay dm-log dm-mem-cache dm-message dm-raid4-5 dm-region_hash faulty md-mod),
++ ],
++ mouse =&gt; [
++ qw(atixlmouse busmouse generic_serial inport ioc3_serial logibm logibusmouse msbusmouse pcips2 qpmouse synclinkmp),
++ if_(arch() =~ /ppc/, 'macserial'),
++ qw(mousedev usbhid usbmouse),
++ ],
++ char =&gt; [
++ if_(arch() =~ /ia64/, qw(efivars)),
++ qw(applicom n_r3964 nvram pc110pad ppdev),
++ qw(wdt_pci i810-tco sx), #- what are these???
++ ],
++ crypto =&gt; [
++ qw(sha256_generic cbc amd768_rng amd7xx_tco i810_rng hw_random leedslite padlock),
++ ],
++ laptop =&gt; [
++ qw(i8k sonypi toshiba),
++ ],
++ serial =&gt; [
++ qw(8250_pci 8250 epca esp isicom istallion jsm moxa mxser mxser_new stallion sx synclink synclinkmp),
++ ],
++ other =&gt; [
++ qw(defxx ide-floppy ide-scsi ide-tape loop lp nbd sg st),
++ qw(parport_pc parport_serial),
++ qw(btaudio mmc_block),
++
++ 'cryptoloop', 'aes-i586', 'aes-x86_64', 'aes_generic',
++ if_(arch() =~ /sparc/, 'openprom'),
++
++ qw(crc32c crc32c-intel),
++
++ qw(evdev), qw(usblp printer), 'floppy',
++
++ #- these need checking
++ qw(rrunner meye),
++
++ qw(virtio_pci virtio_balloon),
++ ],
++ agpgart =&gt; [
++ if_(arch() =~ /alpha/, qw(alpha-agp)),
++ if_(arch() =~ /ia64/, qw(hp-agp i460-agp)),
++ if_(arch() =~ /ppc/, qw(uninorth-agp)),
++
++ qw(ali-agp amd64-agp amd-k7-agp ati-agp efficeon-agp intel-agp),
++ qw(k7-agp mch-agp nvidia-agp sis-agp sworks-agp via-agp),
++ ],
++ },
++);
++
++my %moddeps;
++
++sub load_dependencies {
++ my ($file, $o_root) = @_;
++
++ %moddeps = ();
++ foreach (cat_($o_root . $file)) {
++ my ($m, $d) = split ':';
++ my $path = $m;
++ my ($filename, @fdeps) = map {
++ s![^ ]*/!!g;
++ s!\.ko!!g;
++ s!\.gz!!g;
++ $_;
++ } $m, split(' ', $d);
++
++ my ($modname, @deps) = map { filename2modname($_) } $filename, @fdeps;
++ $moddeps{$modname}{deps} = \@deps;
++ $moddeps{$modname}{filename} = $filename;
++ if (!begins_with($path, &quot;/&quot;)) {
++ #- with newer module-init-tools, modules.dep can contain
++ #- relative paths
++ $path = dirname($file) . '/' . $path;
++ }
++ $moddeps{$modname}{path} = $path;
++ }
++}
++
++sub dependencies_closure {
++ my @l = map { dependencies_closure($_) } @{exists $moddeps{$_[0]} &amp;&amp; $moddeps{$_[0]}{deps} || []};
++ (@l, $_[0]);
++}
++
++sub filename2modname {
++ my ($modname) = @_;
++ $modname =~ s/-/_/g;
++ $modname;
++}
++
++sub load_default_moddeps() {
++ require c;
++ load_dependencies('/lib/modules/' . c::kernel_version() . '/modules.dep');
++}
++
++sub modname2filename {
++ load_default_moddeps() if !%moddeps;
++ $moddeps{$_[0]}{filename};
++}
++
++sub modname2path {
++ load_default_moddeps() if !%moddeps;
++ $moddeps{$_[0]}{path};
++}
++
++sub category2modules {
++ map {
++ my ($t1, $t2s) = m|(.*)/(.*)|;
++ my @sub = $t2s eq '*' ? keys %{$l{$t1}} : split('\|', $t2s);
++ map {
++ my $l = $l{$t1}{$_} or die &quot;bad category $t1/$_\n&quot; . backtrace();
++ map { filename2modname($_) } @$l;
++ } @sub;
++ } split(' ', $_[0]);
++}
++
++sub all_modules() {
++ map { @$_ } map { values %$_ } values %l;
++}
++
++sub module2category {
++ my ($module) = @_;
++ $module = filename2modname($module);
++ foreach my $t1 (keys %l) {
++ my $h = $l{$t1};
++ foreach my $t2 (keys %$h) {
++ $module eq filename2modname($_) and return &quot;$t1/$t2&quot; foreach @{$h-&gt;{$t2}};
++ }
++ }
++ return;
++}
++
++sub ethernet_categories() {
++ 'network/main|gigabit|pcmcia|tokenring|usb|wireless|firewire';
++}
++
++sub sub_categories {
++ my ($t1) = @_;
++ keys %{$l{$t1}};
++}
++
++1;
+
+<a id="drakxtrunkkernelmodulespl">Added: drakx/trunk/kernel/modules.pl</a>
+===================================================================
+--- drakx/trunk/kernel/modules.pl (rev 0)
++++ drakx/trunk/kernel/modules.pl 2011-02-06 23:03:52 UTC (rev 449)
+@@ -0,0 +1,155 @@
++use strict;
++
++
++BEGIN {
++ #- for testing purpose
++ (my $f = __FILE__) =~ s|/[^/]*$||;
++ push @INC, $f;
++}
++
++use MDK::Common;
++use list_modules;
++
++
++sub flatten_and_check {
++ my ($h) = @_;
++ map {
++ my $category = $_;
++ my @l = @{$h-&gt;{$category}};
++ if (my @bad = difference2(\@l, [ category2modules($category) ])) {
++ foreach (@bad) {
++ if (my $cat = module2category($_)) {
++ warn &quot;ERROR in modules.pl: module $_ is in category $cat, not in $category\n&quot;;
++ } else {
++ warn &quot;ERROR in modules.pl: unknown module $_\n&quot;;
++ }
++ }
++ exit 1;
++ }
++ @l;
++ } keys %$h;
++}
++
++my $images_cat = 'fs/* disk/* bus/* network/* input/* various/*'; #- ie everything except multimedia
++
++my $verbose = $ARGV[0] eq '-v' &amp;&amp; shift;
++my ($f, @para) = @ARGV;
++$::{$f}-&gt;(@para);
++
++sub modules() {
++ my @nls_modules = ('nls_cp437', 'nls_iso8859_1');
++ @nls_modules, map { category2modules($_) } split(' ', $images_cat);
++}
++
++sub get_firmwares() {
++ my ($kern_ver) = @_;
++
++ foreach (all(&quot;all.kernels/$kern_ver/modules&quot;)) {
++ foreach(`/sbin/modinfo -Ffirmware &quot;all.kernels/$kern_ver/modules/$_&quot;`) {
++ mkdir_p(dirname(&quot;all.kernels/$kern_ver/firmware/$_&quot;));
++ eval { cp_af(&quot;/lib/firmware/$_&quot;, &quot;all.kernels/$kern_ver/firmware/$_&quot;); };
++ }
++ }
++}
++
++sub remove_unneeded_modules {
++ my ($kern_ver) = @_;
++
++ load_dependencies(&quot;all.kernels/$kern_ver/modules.dep&quot;);
++
++ my @all = modules();
++ my @all_with_deps = map { dependencies_closure($_) } @all;
++ my %wanted_modules = map { (list_modules::modname2filename($_) . &quot;.ko.gz&quot; =&gt; 1) } @all_with_deps;
++ foreach (all(&quot;all.kernels/$kern_ver/modules&quot;)) {
++ $wanted_modules{$_} or unlink &quot;all.kernels/$kern_ver/modules/$_&quot;;
++ }
++}
++
++sub make_modules_per_image {
++ my ($kern_ver) = @_;
++
++ my $dir = &quot;all.kernels/$kern_ver/modules&quot;;
++
++ system(&quot;cd $dir ; tar cf ../all_modules.tar *.ko.gz&quot;) == 0 or die &quot;tar failed\n&quot;;
++}
++
++sub get_main_modules() {
++ my $base = dirname($0);
++ my $main = chomp_(cat_(&quot;$base/RPMS/.main&quot;));
++ chomp_(`tar tf $base/all.kernels/$main/all_modules.tar`);
++}
++
++sub pci_modules4stage1 {
++ my ($category) = @_;
++ my @modules = difference2([ category2modules($category) ]);
++ print &quot;$_\n&quot; foreach uniq(map { dependencies_closure($_) } @modules);
++}
++
++sub check() {
++ my $error;
++ my %listed;
++ while (my ($t1, $l) = each %list_modules::l) {
++ while (my ($t2, $l) = each %$l) {
++ ref $l or die &quot;bad $l in $t1/$t2&quot;;
++ foreach (@$l) {
++ $listed{$_} = &quot;$t1/$t2&quot;;
++ }
++ }
++ }
++
++ my %module2category;
++ my %deprecated_modules = %listed;
++ my $not_listed = sub {
++ my ($msg, $verbose, @l) = @_;
++ my %not_listed;
++ foreach (@l) {
++ my ($mod) = m|([^/]*)\.k?o(\.gz)?$| or next;
++ delete $deprecated_modules{$mod};
++ next if $listed{$mod};
++ s|.*?mdk/||;
++ s|kernel/||; s|drivers/||; s|3rdparty/||;
++ $_ = dirname $_;
++ $_ = dirname $_ if $mod eq basename($_);
++ $module2category{$mod} = $_;
++ push @{$not_listed{$_}}, $mod;
++ }
++ if ($verbose) {
++ print &quot;$msg $_: &quot;, join(&quot; &quot;, @{$not_listed{$_}}), &quot;\n&quot; foreach sort keys %not_listed;
++ }
++ };
++ $not_listed-&gt;('NOT LISTED', 1, get_main_modules());
++ $not_listed-&gt;('not listed', $verbose, chomp_(`rpm -qpl RPMS/kernel-*2.6*`));
++ if (%deprecated_modules) {
++ my %per_cat;
++ push @{$per_cat{$listed{$_}}}, $_ foreach keys %deprecated_modules;
++ foreach my $cat (sort keys %per_cat) {
++ print &quot;bad/old modules ($cat) : &quot;, join(&quot; &quot;, sort @{$per_cat{$cat}}), &quot;\n&quot;;
++ }
++ }
++
++ {
++ require '/usr/bin/merge2pcitable.pl';
++ my $pcitable = read_pcitable(&quot;/usr/share/ldetect-lst/pcitable&quot;);
++ my $usbtable = read_pcitable(&quot;/usr/share/ldetect-lst/usbtable&quot;);
++
++ my @l1 = uniq grep { !/:/ &amp;&amp; $_ ne 'unknown' } map { $_-&gt;[0] } values %$pcitable;
++ if (my @l = difference2(\@l1, [ keys %listed ])) {
++ my %not_listed;
++ push @{$not_listed{$module2category{$_}}}, $_ foreach @l;
++ if (my $l = delete $not_listed{''}) {
++ print &quot;bad/old pcitable modules : &quot;, join(&quot; &quot;, @$l), &quot;\n&quot;;
++ }
++ print STDERR &quot;PCITABLE MODULES NOT LISTED $_: &quot;, join(&quot; &quot;, sort @{$not_listed{$_}}), &quot;\n&quot; foreach sort keys %not_listed;
++ #$error = 1;
++ }
++
++ my @l2 = uniq grep { !/:/ &amp;&amp; $_ ne 'unknown' } map { $_-&gt;[0] } values %$usbtable;
++ if (my @l = difference2(\@l2, [ keys %listed ])) {
++ my %not_listed;
++ push @{$not_listed{$module2category{$_}}}, $_ foreach @l;
++ print STDERR &quot;usbtable modules not listed $_: &quot;, join(&quot; &quot;, sort @{$not_listed{$_}}), &quot;\n&quot; foreach sort keys %not_listed;
++ }
++ }
++
++ exit $error;
++}
+
+</pre></div>
+
+</body>
+</html> \ No newline at end of file
diff --git a/zarb-ml/mageia-sysadm/attachments/20110207/4026f6a5/attachment.html b/zarb-ml/mageia-sysadm/attachments/20110207/4026f6a5/attachment.html
new file mode 100644
index 000000000..a42a9bbc0
--- /dev/null
+++ b/zarb-ml/mageia-sysadm/attachments/20110207/4026f6a5/attachment.html
@@ -0,0 +1,671 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<title>[449] Import cleaned kernel</title>
+</head>
+<body>
+
+<style type="text/css"><!--
+#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
+#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
+#msg dt:after { content:':';}
+#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
+#msg dl a { font-weight: bold}
+#msg dl a:link { color:#fc3; }
+#msg dl a:active { color:#ff0; }
+#msg dl a:visited { color:#cc6; }
+h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
+#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
+#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
+#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
+#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
+#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
+#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
+#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
+#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
+#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
+#logmsg pre { background: #eee; padding: 1em; }
+#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
+#logmsg dl { margin: 0; }
+#logmsg dt { font-weight: bold; }
+#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
+#logmsg dd:before { content:'\00bb';}
+#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
+#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
+#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
+#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
+#logmsg table th.Corner { text-align: left; }
+#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
+#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
+#patch { width: 100%; }
+--></style>
+<div id="msg">
+<dl class="meta">
+<dt>Revision</dt> <dd>449</dd>
+<dt>Author</dt> <dd>dmorgan</dd>
+<dt>Date</dt> <dd>2011-02-07 00:03:52 +0100 (Mon, 07 Feb 2011)</dd>
+</dl>
+
+<h3>Log Message</h3>
+<pre>Import cleaned kernel</pre>
+
+<h3>Added Paths</h3>
+<ul>
+<li>drakx/trunk/kernel/</li>
+<li><a href="#drakxtrunkkernelMakefile">drakx/trunk/kernel/Makefile</a></li>
+<li><a href="#drakxtrunkkernellist_modulespm">drakx/trunk/kernel/list_modules.pm</a></li>
+<li><a href="#drakxtrunkkernelmodulespl">drakx/trunk/kernel/modules.pl</a></li>
+</ul>
+
+</div>
+<div id="patch"><pre>
+<a id="drakxtrunkkernelMakefile">Added: drakx/trunk/kernel/Makefile</a>
+===================================================================
+--- drakx/trunk/kernel/Makefile (rev 0)
++++ drakx/trunk/kernel/Makefile 2011-02-06 23:03:52 UTC (rev 449)
+@@ -0,0 +1,8 @@
++clean:
++ rm -rf *~
++
++check:
++ perl modules.pl check &gt; /dev/null
++ @echo &quot;unlisted drivers: &quot;
++ @for i in $$(zcat /usr/share/ldetect-lst/pcitable.gz|cut -f 2 -d \&quot; |egrep -v '^#|ADSL:|Bad:|Card:|H[cs]f:|ISDN:|LT:'|sort|uniq|less);do fgrep -q $$i list_modules.pm|| echo -n &quot;$$i &quot;;done
++ @echo
+
+
+Property changes on: drakx/trunk/kernel/Makefile
+___________________________________________________________________
+<a id="svneolstyle">Added: svn:eol-style</a>
+ + native
+
+<a id="drakxtrunkkernellist_modulespm">Added: drakx/trunk/kernel/list_modules.pm</a>
+===================================================================
+--- drakx/trunk/kernel/list_modules.pm (rev 0)
++++ drakx/trunk/kernel/list_modules.pm 2011-02-06 23:03:52 UTC (rev 449)
+@@ -0,0 +1,418 @@
++package list_modules; # $Id: list_modules.pm 268192 2010-05-04 09:37:32Z pterjan $
++
++use MDK::Common;
++
++our @ISA = qw(Exporter);
++our @EXPORT = qw(load_dependencies dependencies_closure category2modules module2category sub_categories);
++
++# the categories have 2 purposes
++# - choosing modules to include on stage1's (cf update_kernel and mdk-stage1/pci-resource/update-pci-ids.pl)
++# - performing a load_category or probe_category (detect_devices.pm and many files in perl-install)
++
++our %l = (
++ ################################################################################
++ network =&gt;
++ {
++ atm =&gt; [ qw(ambassador eni firestream fore_200e he horizon idt77252 iphase lanai nicstar solos-pci zatm) ],
++ main =&gt; [
++ if_(arch() =~ /ppc/, qw(bmac fec_mpc52xx ibm_emac mace oaknet sungem)),
++ if_(arch() =~ /^sparc/, qw(sunbmac sunhme sunqe)),
++ if_(arch() !~ /alpha|sparc/,
++ qw(3c501 3c503 3c505 3c507 3c509 3c515 3c990 3c990fx),
++ qw(82596 ac3200 acenic aironet4500_card amd8111e at1700 atl2 atp),
++ qw(bcm4400 cassini cs89x0 de600 de620),
++ qw(depca dmfe e2100 eepro eexpress enic eth16i),
++ qw(ewrk3 hp hp-plus hp100),
++ qw(iph5526), #- fibre channel
++ qw(jme lance ne ni5010 ni52 ni65 nvnet),
++ qw(prism2_plx qlge r6040 rcpci rhineget),
++ qw(sb1000 sc92031 smc-ultra smc9194 smsc9420 smsc95xx),
++ qw(tc35815 tlan uli526x vmxnet3),
++ ),
++ if_(arch() !~ /alpha/,
++ qw(b44 com20020-pci de2104x),
++ qw(defxx), # most unused
++ qw(dgrs e100 eepro100 epic100 fealnx hamachi natsemi),
++ qw(ne2k-pci pcnet32 plip sis900 skfp starfire tulip),
++ qw(typhoon via-rhine winbond-840 forcedeth),
++ qw(sungem sunhme), # drivers for ultrasparc, but compiled in ix86 kernels...
++ ),
++ qw(3c59x 8139too 8139cp cpmac niu sundance), #rtl8139
++ ],
++ firewire =&gt; [ qw(eth1394 pcilynx) ],
++ gigabit =&gt; [
++ qw(atl1 atl1c atl1e be2net bnx2 bnx2x cxgb cxgb3 dl2k e1000 e1000e et131x igb ipg ixgb ixgbe myri_sbus netxen_nic ns83820 qla3xxx r8169 s2io sfc sxg_nic
++ sis190 sk98lin skge sky2 slicoss spidernet tehuti tg3 via-velocity virtio_net vxge yellowfin),
++ qw(bcm5820 bcm5700), #- encrypted
++ ],
++
++ raw =&gt; [
++ qw(ppp_generic ppp_async ppp_deflate bsd_comp),
++ ],
++ pcmcia =&gt; [
++ qw(3c574_cs 3c589_cs axnet_cs fmvj18x_cs),
++ qw(ibmtr_cs libertas_cs nmclan_cs pcnet_cs smc91c92_cs),
++ qw(xirc2ps_cs xircom_cb xircom_tulip_cb),
++ ],
++ #- generic NIC detection for USB seems broken (class, subclass,
++ #- protocol reported are not accurate) so we match network adapters against
++ #- known drivers :-(
++ usb =&gt; [
++ qw(asix catc cdc_ether kaweth pegasus rtl8150 usbnet),
++ ],
++ wireless =&gt; [
++ qw(acx-pci acx-usb adm8211 agnx airo airo_cs aironet4500_cs),
++ qw(aironet_cs ar9170usb arlan arusb_lnx at76_usb ath5k ath9k),
++ qw(ath_pci atmel_cs atmel_pci b43 b43legacy bcm43xx com20020_cs),
++ qw(dyc_ar5 hostap_cs hostap_pci hostap_plx i2400m-usb ipw2100),
++ qw(ipw2200 ipw3945 iwl3945 iwl4965 iwlagn iwlwifi madwifi_pci),
++ qw(mwl8k ndiswrapper netwave_cs orinoco orinoco_cs),
++ qw(orinoco_nortel orinoco_pci orinoco_plx orinoco_tmd p54pci),
++ qw(p54usb prism2_cs prism2_pci prism2_usb prism54 r8180),
++ qw(r8187se r8192_pci r8192s_usb r8192u_usb ray_cs rndis_wlan rt2400 rt2400pci rt2500),
++ qw(rt2500pci rt2500usb rt2570 rt2800pci rt2800usb rt2860 rt2860sta rt2870),
++ qw(rt2870sta rt3070sta rt61 rt61pci rt73 rt73usb rtl8180),
++ qw(rtl8187se rtusb spectrum_cs usbvnet_rfmd vt6655_stage vt6656_stage vt_ar5k w35und),
++ qw(wavelan_cs wl wl3501_cs wvlan_cs zd1201 zd1211rw),
++ if_(arch() =~ /ppc/, qw(airport)),
++ ],
++ isdn =&gt; [
++ qw(avmfritz c4 cdc-acm b1pci divas hfc4s8s_l1 hfc_usb hfc4s8s_l1 hisax hisax_st5481 hisax_fcpcipnp hysdn sedlfax t1pci tpam w6692pci),
++ qw(avmfritz hfcpci hfcmulti hfcsusb mISDNinfineon netjet), # mISDN
++ qw(fcpci fcdsl fcdsl fcdsl2 fcdslsl fcdslslusb fcdslusb fcdslusba fcusb fcusb2 fxusb fxusb_CZ)
++ ],
++ cellular =&gt; [
++ qw(hso nozomi option sierra),
++ ],
++ modem =&gt; [
++ qw(ltmodem mwave sm56),
++ ],
++ slmodem =&gt; [
++ qw(slamr slusb snd-ali5451 snd-atiixp-modem snd-intel8x0m snd-via82xx-modem),
++ ],
++ tokenring =&gt; [ qw(3c359 abyss ibmtr lanstreamer olympic proteon skisa smctr tms380tr tmspci) ],
++ wan =&gt; [ qw(c101 cosa cyclomx cycx_drv dlci dscc4 farsync hdlc hostess_sv11 lapbether lmc n2 pc300 pci200syn sbni sdla sdladrv sealevel syncppp wanxl z85230) ],
++ usb_dsl =&gt; [ qw(cxacru speedtch ueagle-atm usbatm xusbatm) ],
++ },
++
++ ################################################################################
++ disk =&gt;
++ {
++ # ide drivers compiled as modules:
++ ide =&gt; [
++ qw(aec62xx ali14xx alim15x3 amd74xx atiixp cmd64x cy82c693 cs5520 cs5530 cs5535 cs5536),
++ qw(delkin_cb dtc2278 hpt34x hpt366 ns87415 ht6560b it8172 it8213 it821x jmicron),
++ qw(opti621 pdc202xx_new pdc202xx_old piix qd65xx rz1000 sc1200 serverworks siimage sis5513 slc90e66),
++ qw(tc86c001 triflex trm290 tx4938ide tx4939ide umc8672 via82cxxx ide-pci-generic ide-generic),
++ ],
++ scsi =&gt; [
++ if_(arch() =~ /ppc/, qw(mesh mac53c94)),
++ if_(arch() =~ /^sparc/, qw(qlogicpti)),
++ if_(arch() !~ /alpha|sparc/,
++ '53c7,8xx',
++ qw(a100u2w advansys aha152x aha1542 aha1740 AM53C974 atp870u),
++ qw(be2iscsi bfa BusLogic dc395x dc395x_trm dmx3191d dtc eata eata_dma),
++ qw(eata_pio fdomain g_NCR5380 in2000 initio mpt2sas mvsas NCR53c406a),
++ qw(nsp32 pas16 pci2220i pm8001 psi240i qla1280 qla2x00 qla2xxx),
++ qw(qlogicfas qlogicfc seagate shasta sim710 stex sym53c416),
++ qw(t128 tmscsim u14-34f ultrastor vmw_pvscsi wd7000),
++ ),
++ qw(aic7xxx aic7xxx_old aic79xx pci2000 qlogicfas408 sym53c8xx lpfc lpfcdd), # ncr53c8xx
++ ],
++ sata =&gt; [
++ # note that ata_piix manage RAID devices on ICH6R
++ qw(ahci aic94xx ata_adma ata_piix pata_pdc2027x pdc_adma),
++ qw(sata_fsl sata_inic162x sata_mv sata_nv sata_promise),
++ qw(sata_qstor sata_sil sata_sil24 sata_sis sata_svw sata_sx4 sata_uli sata_via sata_vsc sx8),
++ # new drivers: old ide drivers ported over libata:
++ qw(ata_generic mv-ahci pata_ali pata_amd pata_artop pata_atiixp pata_atp867x),
++ qw(pata_bf54x pata_cmd640 pata_cmd64x pata_cs5520 pata_cs5530),
++ qw(pata_cs5535 pata_cs5536 pata_cypress pata_efar pata_hpt366),
++ qw(pata_hpt37x pata_hpt3x2n pata_hpt3x3 pata_isapnp pata_it8172),
++ qw(pata_it8213 pata_it821x pata_jmicron pata_legacy pata_marvell),
++ qw(pata_mpiix pata_netcell pata_ninja32 pata_ns87410),
++ qw(pata_ns87415 pata_oldpiix pata_opti pata_optidma),
++ qw(pata_pdc2027x pata_pdc202xx_old pata_piccolo pata_platform pata_qdi),
++ qw(pata_radisys pata_rdc pata_rz1000 pata_sc1200 pata_sch),
++ qw(pata_serverworks pata_sil680 pata_sis pata_sl82c105),
++ qw(pata_triflex pata_via pata_winbond),
++ if_(arch() =~ /ppc/, 'sata_fsl'),
++ qw(pata_acpi),
++ ],
++ hardware_raid =&gt; [
++ if_(arch() =~ /^sparc/, qw(pluto)),
++ if_(arch() !~ /alpha|sparc/,
++ # 3w-xxxx drives ATA-RAID, 3w-9xxx and arcmsr drive SATA-RAID
++ qw(3w-9xxx 3w-sas 3w-xxxx a320raid aacraid arcmsr cciss cpqarray),
++ qw(cpqfc DAC960 dpt_i2o gdth hpsa hptiop i2o_block imm ipr ips),
++ qw(it8212 it821x iteraid megaide megaraid megaraid_mbox),
++ qw(megaraid_sas mptfc mptsas mptscsih mptspi pdc-ultra pmcraid ppa),
++ qw(qla2100 qla2200 qla2300 qla2322 qla4xxx qla6312 qla6322),
++ ),
++ ],
++ virtual =&gt; [ qw(xenblk virtio_blk) ],
++ pcmcia =&gt; [ qw(aha152x_cs fdomain_cs nsp_cs qlogic_cs ide-cs pata_pcmcia sym53c500_cs) ],
++ raw =&gt; [ qw(ide-gd_mod sd_mod) ],
++ usb =&gt; [ qw(usb-storage) ],
++ firewire =&gt; [ qw(sbp2) ],
++ cdrom =&gt; [ qw(ide-cd_mod sr_mod) ],
++ card_reader =&gt; [ qw(sdhci tifm_sd tifm_7xx1) ],
++ },
++
++ ################################################################################
++
++ bus =&gt;
++ {
++ usb =&gt; [ qw(ehci-hcd hwa-hc isp116x-hcd isp1760 ohci-hcd r8a66597-hcd sl811_cs sl811-hcd uhci-hcd u132-hcd usb-uhci usb-ohci whci-hcd) ],
++ bluetooth =&gt; [ qw(bcm203x bfusb bpa10x btusb) ],
++ firewire =&gt; [ qw(ohci1394) ],
++ i2c =&gt; [
++ qw(i2c-ali1535 i2c-ali1563 i2c-ali15x3 i2c-amd756 i2c-amd8111 i2c-i801 i2c-i810 i2c-nforce2),
++ qw(i2c-piix4 i2c-prosavage i2c-savage4 i2c-sis5595 i2c-sis630 i2c-sis96x i2c-via i2c-viapro i2c-voodoo3),
++ if_(arch() !~ /^ppc/, qw(i2c-hydra i2c-ibm_iic i2c-mpc)),
++ ],
++ pcmcia =&gt; [
++ if_(arch() !~ /^sparc/, qw(au1x00_ss i82365 i82092 pd6729 tcic vrc4171_card vrc4173_cardu yenta_socket)), # cb_enabler
++ ],
++ hid =&gt; [ qw(hid-a4tech hid-apple hid-belkin hid-cherry hid-chicony
++ hid-cypress hid-drff hid-ezkey hid-gaff hid-gyration hid-kensington hid-kye
++ hid-logitech hid-microsoft hid-monterey hid-multilaser hid-ntrig
++ hid-petalynx hid-pl hid-samsung hid-sjoy hid-sony hid-sunplus
++ hid-tmff hid-topseed hid-zpff hid-wacom ff-memless)],
++ #serial_cs
++ #ftl_cs 3c575_cb apa1480_cb epic_cb serial_cb tulip_cb iflash2+_mtd iflash2_mtd
++ #cb_enabler
++ },
++
++ fs =&gt;
++ {
++ network =&gt; [ qw(af_packet nfs smbfs) ],
++ cdrom =&gt; [ qw(isofs) ],
++ loopback =&gt; [ qw(isofs loop squashfs) ],
++ local =&gt; [
++ if_(arch() =~ /^ppc/, qw(hfs)),
++ qw(reiserfs reiser4 jfs xfs ntfs vfat ext3 ext4 btrfs),
++ ],
++ various =&gt; [ qw(romfs ufs unionfs) ],
++
++ },
++
++ ################################################################################
++ multimedia =&gt;
++ {
++ sound =&gt; [
++ if_(arch() =~ /ppc/, qw(dmasound_pmac snd-aoa snd-powermac)),
++ if_(arch() =~ /sparc/, qw(snd-sun-amd7930 snd-sun-cs4231 snd-sun-dbri)),
++ if_(arch() !~ /^sparc/,
++ qw(ad1816 ad1848 ad1889 ali5455 audigy audio awe_wave cmpci cs4232 cs4281 cs46xx cx88-alsa),
++ qw(emu10k1 es1370 es1371 esssolo1 forte gus i810_audio ice1712 kahlua mad16 maestro),
++ qw(maestro3 mpu401 msnd_pinnacle nm256_audio nvaudio opl3 opl3sa opl3sa2 pas2 pss),
++ qw(rme96xx sam9407 sb sgalaxy snd-ad1816a snd-ad1848 snd-ad1889 snd-ali5451 snd-als100 snd-als300),
++ qw(snd-als4000 snd-atiixp snd-au8810 snd-au8820 snd-au8830 snd-audigyls snd-aw2 snd-azt2316 snd-azt2320 snd-azt3328 snd-azx),
++ qw(snd-asihpi snd-at73c213 snd-bt87x snd-ca0106 snd-cmi8330 snd-cmi8788 snd-cmipci),
++ qw(snd-cs4231 snd-cs4232 snd-cs4236 snd-cs4281 snd-cs46xx snd-cs5530 snd-cs5535audio),
++ qw(snd_ctxfi),
++ qw(snd-darla20 snd-darla24 snd-dt019x snd-echo3g snd-emu10k1 snd-emu10k1x),
++ qw(snd-ens1370 snd-ens1371 snd-es1688 snd-es18xx snd-es1938 snd-es1968 snd-es968),
++ qw(snd-fm801 snd-gina20 snd-gina24 snd-gina3g),
++ qw(snd-gusclassic snd-gusextreme snd-gusmax),
++ qw(snd-hda-intel snd-hdsp snd-hdspm snd-ice1712 snd-ice1724),
++ qw(snd-indi snd-indigo snd-indigodj snd-indigodjx snd-indigoio snd-indigoiox snd-intel8x0 snd-interwave),
++ qw(snd-interwave-stb snd-korg1212 snd-layla20 snd-layla24 snd-layla3g snd-lx6464es),
++ qw(snd-maestro3 snd-mia snd-mixart snd-mona snd-mpu401 snd-nm256),
++ qw(snd-opl3sa2 snd-opti92x-ad1848 snd-opti92x-cs4231 snd-opti93x snd-oxygen snd-pcsp snd-pcxhr snd-riptide snd-rme32),
++ qw(snd-rme96 snd-rme9652 snd-sb16 snd-sb8 snd-sbawe snd-sc6000 snd-sgalaxy snd-sis7019 snd-sonicvibes),
++ qw(snd-sscape snd-trident snd-via82xx snd-virtuoso snd-vx222 snd-vxp440 snd-vxpocket snd-wavefront),
++ qw(snd-ymfpci sonicvibes sscape trident via82cxxx_audio wavefront ymfpci),
++ ),
++ ],
++ tv =&gt; [ qw(bt878 bttv cx23885 cx25821 cx8800 cx8802 cx88-blackbird dpc7146),
++ qw(ivtv mxb pvrusb2 saa7134 saa7164 zr36067) ],
++ dvb =&gt; [
++ qw(b2c2-flexcop-pci b2c2-flexcop-usb budget budget-av),
++ qw(budget-ci cinergyT2 dm1105 dvb-dibusb dvb-ttpci),
++ qw(dvb-ttusb-budget dvb-usb-a800 dvb-usb-af9015 dvb-usb-ce6230),
++ qw(dvb-usb-cinergyT2 dvb-usb-cxusb dvb-usb-dib0700),
++ qw(dvb-usb-dibusb-mb dvb-usb-dibusb-mc dvb-usb-digitv),
++ qw(dvb-usb-dtt200u dvb-usb-dtv5100 dvb-usb-ec168 dvb-usb-friio dvb-usb-gp8ps),
++ qw(dvb-usb-nova-t-usb2 dvb-usb-ttusb2 dvb-usb-umt-010),
++ qw(dvb-usb-vp702x dvb-usb-vp7045 earth-pt1 firedtv hexium_gemini),
++ qw(hexium_orion pluto2 skystar2 smsusb ttusb_dec),
++ ],
++ photo =&gt; [ qw(dc2xx mdc800) ],
++ radio =&gt; [ qw(radio-gemtek-pci radio-maestro radio-maxiradio radio-miropcm20 radio-usb-si470x) ],
++ scanner =&gt; [ qw(scanner microtek) ],
++ gameport =&gt; [ qw(cs461x ns558 emu10k1-gp fm801-gp lightning ns558 vortex) ],
++ usb_sound =&gt; [ qw(audio dabusb dsbr100 snd-usb-audio snd-usb-caiaq snd-usb-usx2y usb-midi) ],
++ webcam =&gt; [
++ qw(cafe_ccic cpia2 cpia_usb cyber2000fb em28xx et61x251 gspca),
++ qw(ibmcam konicawc mod_quickcam ov511 ov511-alt ov518_decomp),
++ qw(ov51x-jpeg ovfx2 pwc qc-usb-messenger quickcam quickcam_messenger),
++ # both STV06xx &amp; stv06xx b/c drivers/media/video/gspca/stv06xx/stv06xx.h
++ # wrongly use upcase letters:
++ qw(se401 sn9c102 STV06xx stv06xx stv680 tcm825x ultracam),
++ qw(usbvideo usbvision vicam w9968cf zc0301),
++ ],
++ },
++
++ # USB input stuff get automagically loaded by hotplug and thus
++ # magically work through /dev/input/mice multiplexing:
++ input =&gt; {
++ joystick =&gt; [
++ qw(iforce xpad),
++ # there're more drivers in drivers/input/joystick but they support non USB or PCI devices
++ # and thus cannot be detected but by slow (and maybe dangerous?) load_category:
++ qw(a3d adi analog cobra db9 gamecon gf2k grip grip_mp guillemot interact),
++ qw(joydump magellan sidewinder spaceball spaceorb stinger tmdc turbografx warrior)
++ ],
++ remote =&gt; [ qw(ati_remote) ],
++ # USB tablets and touchscreens:
++ tablet =&gt; [ qw(acecad aiptek wacom kbtab) ],
++ touchscreen =&gt; [ qw(ads7846_ts gunze hp680_ts_input itmtouch mk712 mtouch usbtouchscreen) ],
++ },
++
++ various =&gt;
++ # just here for classification, unused categories (nor auto-detect, nor load_thiskind)
++ {
++ raid =&gt; [
++ qw(dm-crypt dm-mirror dm-mod dm-zero linear lvm-mod multipath raid0 raid1 raid10 raid456 raid5 raid6),
++ qw(dm-delay dm-log dm-mem-cache dm-message dm-raid4-5 dm-region_hash faulty md-mod),
++ ],
++ mouse =&gt; [
++ qw(atixlmouse busmouse generic_serial inport ioc3_serial logibm logibusmouse msbusmouse pcips2 qpmouse synclinkmp),
++ if_(arch() =~ /ppc/, 'macserial'),
++ qw(mousedev usbhid usbmouse),
++ ],
++ char =&gt; [
++ if_(arch() =~ /ia64/, qw(efivars)),
++ qw(applicom n_r3964 nvram pc110pad ppdev),
++ qw(wdt_pci i810-tco sx), #- what are these???
++ ],
++ crypto =&gt; [
++ qw(sha256_generic cbc amd768_rng amd7xx_tco i810_rng hw_random leedslite padlock),
++ ],
++ laptop =&gt; [
++ qw(i8k sonypi toshiba),
++ ],
++ serial =&gt; [
++ qw(8250_pci 8250 epca esp isicom istallion jsm moxa mxser mxser_new stallion sx synclink synclinkmp),
++ ],
++ other =&gt; [
++ qw(defxx ide-floppy ide-scsi ide-tape loop lp nbd sg st),
++ qw(parport_pc parport_serial),
++ qw(btaudio mmc_block),
++
++ 'cryptoloop', 'aes-i586', 'aes-x86_64', 'aes_generic',
++ if_(arch() =~ /sparc/, 'openprom'),
++
++ qw(crc32c crc32c-intel),
++
++ qw(evdev), qw(usblp printer), 'floppy',
++
++ #- these need checking
++ qw(rrunner meye),
++
++ qw(virtio_pci virtio_balloon),
++ ],
++ agpgart =&gt; [
++ if_(arch() =~ /alpha/, qw(alpha-agp)),
++ if_(arch() =~ /ia64/, qw(hp-agp i460-agp)),
++ if_(arch() =~ /ppc/, qw(uninorth-agp)),
++
++ qw(ali-agp amd64-agp amd-k7-agp ati-agp efficeon-agp intel-agp),
++ qw(k7-agp mch-agp nvidia-agp sis-agp sworks-agp via-agp),
++ ],
++ },
++);
++
++my %moddeps;
++
++sub load_dependencies {
++ my ($file, $o_root) = @_;
++
++ %moddeps = ();
++ foreach (cat_($o_root . $file)) {
++ my ($m, $d) = split ':';
++ my $path = $m;
++ my ($filename, @fdeps) = map {
++ s![^ ]*/!!g;
++ s!\.ko!!g;
++ s!\.gz!!g;
++ $_;
++ } $m, split(' ', $d);
++
++ my ($modname, @deps) = map { filename2modname($_) } $filename, @fdeps;
++ $moddeps{$modname}{deps} = \@deps;
++ $moddeps{$modname}{filename} = $filename;
++ if (!begins_with($path, &quot;/&quot;)) {
++ #- with newer module-init-tools, modules.dep can contain
++ #- relative paths
++ $path = dirname($file) . '/' . $path;
++ }
++ $moddeps{$modname}{path} = $path;
++ }
++}
++
++sub dependencies_closure {
++ my @l = map { dependencies_closure($_) } @{exists $moddeps{$_[0]} &amp;&amp; $moddeps{$_[0]}{deps} || []};
++ (@l, $_[0]);
++}
++
++sub filename2modname {
++ my ($modname) = @_;
++ $modname =~ s/-/_/g;
++ $modname;
++}
++
++sub load_default_moddeps() {
++ require c;
++ load_dependencies('/lib/modules/' . c::kernel_version() . '/modules.dep');
++}
++
++sub modname2filename {
++ load_default_moddeps() if !%moddeps;
++ $moddeps{$_[0]}{filename};
++}
++
++sub modname2path {
++ load_default_moddeps() if !%moddeps;
++ $moddeps{$_[0]}{path};
++}
++
++sub category2modules {
++ map {
++ my ($t1, $t2s) = m|(.*)/(.*)|;
++ my @sub = $t2s eq '*' ? keys %{$l{$t1}} : split('\|', $t2s);
++ map {
++ my $l = $l{$t1}{$_} or die &quot;bad category $t1/$_\n&quot; . backtrace();
++ map { filename2modname($_) } @$l;
++ } @sub;
++ } split(' ', $_[0]);
++}
++
++sub all_modules() {
++ map { @$_ } map { values %$_ } values %l;
++}
++
++sub module2category {
++ my ($module) = @_;
++ $module = filename2modname($module);
++ foreach my $t1 (keys %l) {
++ my $h = $l{$t1};
++ foreach my $t2 (keys %$h) {
++ $module eq filename2modname($_) and return &quot;$t1/$t2&quot; foreach @{$h-&gt;{$t2}};
++ }
++ }
++ return;
++}
++
++sub ethernet_categories() {
++ 'network/main|gigabit|pcmcia|tokenring|usb|wireless|firewire';
++}
++
++sub sub_categories {
++ my ($t1) = @_;
++ keys %{$l{$t1}};
++}
++
++1;
+
+<a id="drakxtrunkkernelmodulespl">Added: drakx/trunk/kernel/modules.pl</a>
+===================================================================
+--- drakx/trunk/kernel/modules.pl (rev 0)
++++ drakx/trunk/kernel/modules.pl 2011-02-06 23:03:52 UTC (rev 449)
+@@ -0,0 +1,155 @@
++use strict;
++
++
++BEGIN {
++ #- for testing purpose
++ (my $f = __FILE__) =~ s|/[^/]*$||;
++ push @INC, $f;
++}
++
++use MDK::Common;
++use list_modules;
++
++
++sub flatten_and_check {
++ my ($h) = @_;
++ map {
++ my $category = $_;
++ my @l = @{$h-&gt;{$category}};
++ if (my @bad = difference2(\@l, [ category2modules($category) ])) {
++ foreach (@bad) {
++ if (my $cat = module2category($_)) {
++ warn &quot;ERROR in modules.pl: module $_ is in category $cat, not in $category\n&quot;;
++ } else {
++ warn &quot;ERROR in modules.pl: unknown module $_\n&quot;;
++ }
++ }
++ exit 1;
++ }
++ @l;
++ } keys %$h;
++}
++
++my $images_cat = 'fs/* disk/* bus/* network/* input/* various/*'; #- ie everything except multimedia
++
++my $verbose = $ARGV[0] eq '-v' &amp;&amp; shift;
++my ($f, @para) = @ARGV;
++$::{$f}-&gt;(@para);
++
++sub modules() {
++ my @nls_modules = ('nls_cp437', 'nls_iso8859_1');
++ @nls_modules, map { category2modules($_) } split(' ', $images_cat);
++}
++
++sub get_firmwares() {
++ my ($kern_ver) = @_;
++
++ foreach (all(&quot;all.kernels/$kern_ver/modules&quot;)) {
++ foreach(`/sbin/modinfo -Ffirmware &quot;all.kernels/$kern_ver/modules/$_&quot;`) {
++ mkdir_p(dirname(&quot;all.kernels/$kern_ver/firmware/$_&quot;));
++ eval { cp_af(&quot;/lib/firmware/$_&quot;, &quot;all.kernels/$kern_ver/firmware/$_&quot;); };
++ }
++ }
++}
++
++sub remove_unneeded_modules {
++ my ($kern_ver) = @_;
++
++ load_dependencies(&quot;all.kernels/$kern_ver/modules.dep&quot;);
++
++ my @all = modules();
++ my @all_with_deps = map { dependencies_closure($_) } @all;
++ my %wanted_modules = map { (list_modules::modname2filename($_) . &quot;.ko.gz&quot; =&gt; 1) } @all_with_deps;
++ foreach (all(&quot;all.kernels/$kern_ver/modules&quot;)) {
++ $wanted_modules{$_} or unlink &quot;all.kernels/$kern_ver/modules/$_&quot;;
++ }
++}
++
++sub make_modules_per_image {
++ my ($kern_ver) = @_;
++
++ my $dir = &quot;all.kernels/$kern_ver/modules&quot;;
++
++ system(&quot;cd $dir ; tar cf ../all_modules.tar *.ko.gz&quot;) == 0 or die &quot;tar failed\n&quot;;
++}
++
++sub get_main_modules() {
++ my $base = dirname($0);
++ my $main = chomp_(cat_(&quot;$base/RPMS/.main&quot;));
++ chomp_(`tar tf $base/all.kernels/$main/all_modules.tar`);
++}
++
++sub pci_modules4stage1 {
++ my ($category) = @_;
++ my @modules = difference2([ category2modules($category) ]);
++ print &quot;$_\n&quot; foreach uniq(map { dependencies_closure($_) } @modules);
++}
++
++sub check() {
++ my $error;
++ my %listed;
++ while (my ($t1, $l) = each %list_modules::l) {
++ while (my ($t2, $l) = each %$l) {
++ ref $l or die &quot;bad $l in $t1/$t2&quot;;
++ foreach (@$l) {
++ $listed{$_} = &quot;$t1/$t2&quot;;
++ }
++ }
++ }
++
++ my %module2category;
++ my %deprecated_modules = %listed;
++ my $not_listed = sub {
++ my ($msg, $verbose, @l) = @_;
++ my %not_listed;
++ foreach (@l) {
++ my ($mod) = m|([^/]*)\.k?o(\.gz)?$| or next;
++ delete $deprecated_modules{$mod};
++ next if $listed{$mod};
++ s|.*?mdk/||;
++ s|kernel/||; s|drivers/||; s|3rdparty/||;
++ $_ = dirname $_;
++ $_ = dirname $_ if $mod eq basename($_);
++ $module2category{$mod} = $_;
++ push @{$not_listed{$_}}, $mod;
++ }
++ if ($verbose) {
++ print &quot;$msg $_: &quot;, join(&quot; &quot;, @{$not_listed{$_}}), &quot;\n&quot; foreach sort keys %not_listed;
++ }
++ };
++ $not_listed-&gt;('NOT LISTED', 1, get_main_modules());
++ $not_listed-&gt;('not listed', $verbose, chomp_(`rpm -qpl RPMS/kernel-*2.6*`));
++ if (%deprecated_modules) {
++ my %per_cat;
++ push @{$per_cat{$listed{$_}}}, $_ foreach keys %deprecated_modules;
++ foreach my $cat (sort keys %per_cat) {
++ print &quot;bad/old modules ($cat) : &quot;, join(&quot; &quot;, sort @{$per_cat{$cat}}), &quot;\n&quot;;
++ }
++ }
++
++ {
++ require '/usr/bin/merge2pcitable.pl';
++ my $pcitable = read_pcitable(&quot;/usr/share/ldetect-lst/pcitable&quot;);
++ my $usbtable = read_pcitable(&quot;/usr/share/ldetect-lst/usbtable&quot;);
++
++ my @l1 = uniq grep { !/:/ &amp;&amp; $_ ne 'unknown' } map { $_-&gt;[0] } values %$pcitable;
++ if (my @l = difference2(\@l1, [ keys %listed ])) {
++ my %not_listed;
++ push @{$not_listed{$module2category{$_}}}, $_ foreach @l;
++ if (my $l = delete $not_listed{''}) {
++ print &quot;bad/old pcitable modules : &quot;, join(&quot; &quot;, @$l), &quot;\n&quot;;
++ }
++ print STDERR &quot;PCITABLE MODULES NOT LISTED $_: &quot;, join(&quot; &quot;, sort @{$not_listed{$_}}), &quot;\n&quot; foreach sort keys %not_listed;
++ #$error = 1;
++ }
++
++ my @l2 = uniq grep { !/:/ &amp;&amp; $_ ne 'unknown' } map { $_-&gt;[0] } values %$usbtable;
++ if (my @l = difference2(\@l2, [ keys %listed ])) {
++ my %not_listed;
++ push @{$not_listed{$module2category{$_}}}, $_ foreach @l;
++ print STDERR &quot;usbtable modules not listed $_: &quot;, join(&quot; &quot;, sort @{$not_listed{$_}}), &quot;\n&quot; foreach sort keys %not_listed;
++ }
++ }
++
++ exit $error;
++}
+
+</pre></div>
+
+</body>
+</html> \ No newline at end of file