diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/.cvsignore | 2 | ||||
| -rw-r--r-- | kernel/Makefile | 12 | ||||
| -rw-r--r-- | kernel/list_modules.pm | 343 | ||||
| -rw-r--r-- | kernel/modules.pl | 173 | ||||
| -rwxr-xr-x | kernel/strip_modules | 129 | ||||
| -rwxr-xr-x | kernel/update_kernel | 104 |
6 files changed, 268 insertions, 495 deletions
diff --git a/kernel/.cvsignore b/kernel/.cvsignore deleted file mode 100644 index 66624465e..000000000 --- a/kernel/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -modules.description -all.kernels diff --git a/kernel/Makefile b/kernel/Makefile index 0b4695ba1..ea4cc1a54 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -1,16 +1,8 @@ -all: all.kernels - -all.kernels: ../mdk-stage1/mar/mar update_kernel list_modules.pm - ./update_kernel - -../mdk-stage1/mar/mar: - make -C `dirname $@` mar - clean: - rm -rf *~ modules.description all.kernels + rm -rf *~ check: perl modules.pl check > /dev/null @echo "unlisted drivers: " - @for i in $$(cut -f 2 -d \" /usr/share/ldetect-lst/pcitable|egrep -v '^#|ADSL:|Bad:|Card:|H[cs]f:|ISDN:|LT:'|sort|uniq|less);do fgrep -q $$i list_modules.pm|| echo -n "$$i ";done + @for i in $$(zcat /usr/share/ldetect-lst/pcitable.gz|cut -f 2 -d \" |egrep -v '^#|ADSL:|Bad:|Card:|H[cs]f:|ISDN:|LT:'|sort|uniq|less);do fgrep -q $$i list_modules.pm|| echo -n "$$i ";done @echo diff --git a/kernel/list_modules.pm b/kernel/list_modules.pm index 5a6b0d426..11516e72c 100644 --- a/kernel/list_modules.pm +++ b/kernel/list_modules.pm @@ -1,41 +1,52 @@ -package list_modules; # $Id$ +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 kernel_is_26 module_extension); +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 (modules.pm and many files in perl-install) +# - performing a load_category or probe_category (detect_devices.pm and many files in perl-install) our %l = ( ################################################################################ network => { + atm => [ qw(ambassador eni firestream fore_200e he horizon idt77252 iphase lanai nicstar solos-pci zatm) ], main => [ - if_(arch() =~ /ppc/, qw(bmac ibm_emac mace oaknet sungem)), + 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 atp), - qw(b44 bcm4400 com20020-pci cs89x0 de2104x de600 de620), - qw(defxx), # most unused - qw(depca dgrs dmfe e100 e2100 eepro eepro100 eexpress epic100 eth16i), - qw(ewrk3 fealnx hamachi hp hp-plus hp100), + qw(82596 ac3200 acenic aironet4500_card amd8111e at1700 atl2 atp), + qw(bcm4400 cassini cs89x0 cx82310_eth de600 de620), + qw(depca dmfe e2100 eepro eexpress enic eth16i), + qw(ewrk3 hp hp-plus hp100), qw(iph5526), #- fibre channel - qw(lance natsemi ne ne2k-pci ni5010 ni52 ni65 nvnet), - qw(pcnet32 plip prism2_plx rcpci rhineget), - qw(sb1000 sis900 skfp smc-ultra smc9194 starfire), - qw(tc35815 tlan tulip typhoon uli526x via-rhine), - qw(wd winbond-840 forcedeth), + 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 sundance), #rtl8139 + qw(3c59x 8139too 8139cp cpmac niu sundance), #rtl8139 + # add all phys + qw(amd broadcom cicada davicom et1011c icplus lxt marvell micrel), + qw(national qsemi realtek smsc ste10Xp vitesse), ], firewire => [ qw(eth1394 pcilynx) ], gigabit => [ - qw(cxgb dl2k e1000 ixgb myri_sbus ns83820 r8169 s2io sis190 sk98lin skge tg3 via-velocity yellowfin ), + qw(atl1 atl1c atl1e be2net bna bnx2 bnx2x cxgb cxgb3 cxgb4 dl2k e1000 e1000e et131x igb ipg ixgb ixgbe), + qw(myri_sbus myri10ge netxen_nic ns83820 pch_gbe qla3xxx r8169 s2io sfc sxg_nic), + qw(sis190 sk98lin skge sky2 slicoss spidernet stmmac tehuti tg3 via-velocity virtio_net vxge yellowfin), qw(bcm5820 bcm5700), #- encrypted ], @@ -44,90 +55,123 @@ our %l = ( ], pcmcia => [ qw(3c574_cs 3c589_cs axnet_cs fmvj18x_cs), - qw(ibmtr_cs nmclan_cs pcnet_cs smc91c92_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 => [ - qw(catc CDCEther kaweth pegasus rtl8150 usbnet), + qw(asix catc cdc_ether dm9601 kaweth mcs7830 pegasus rtl8150 smsc75xx smsc95xx usbnet), ], wireless => [ - qw(acx100_pci adm8211 airo airo_cs aironet4500_cs aironet_cs), - qw(at76c503-i3861 at76c503-i3863 at76c503-rfmd at76c503-rfmd-acc at76c505-rfmd at76c505-rfmd2958 at76c505a-rfmd2958), - qw(ath_pci atmel_cs atmel_pci dyc_ar5), - qw(hostap_pci hostap_plx ipw2100 ipw2200 madwifi_pci netwave_cs orinoco orinoco_cs orinoco_pci orinoco_plx), - qw(prism2_cs prism2_pci prism2_usb prism54 r8180 ray_cs rt2400 rt2500 usbvnet_rfmd vt_ar5k wavelan_cs wvlan_cs zd1201), + qw(acx-pci acx-usb adm8211 agnx airo airo_cs aironet4500_cs), + qw(aironet_cs ar9170usb arlan arusb_lnx at76_usb at76c50x_usb ath5k ath6kl ath6kl_usb ath9k ath9k_htc), + qw(ath_pci atmel_cs atmel_pci b43 b43legacy bcm43xx bcm_wimax brcm80211 brcmsmac brcmfmac carl9170 com20020_cs), + qw(dyc_ar5 hostap_cs hostap_pci hostap_plx i2400m-usb ipw2100), + qw(i2400m_usb ipw2200 ipw3945 iwl3945 iwl4965 iwlagn iwlwifi madwifi_pci), + qw(mwifiex_usb mwl8k ndiswrapper netwave_cs orinoco orinoco_cs), + qw(orinoco_nortel orinoco_pci orinoco_plx orinoco_tmd orinoco_usb p54pci), + qw(p54usb prism2_cs prism2_pci prism2_usb prism54 qmi_wwan r8180), + qw(r8187se r8192_pci r8192s_usb r8192u_usb r8712u ray_cs rndis_wlan rt2400 rt2400pci rt2500), + qw(rt2500pci rt2500usb rt2570 rt2800pci rt2800usb rt2860 rt2860sta rt2870), + qw(rt3070sta rt61 rt61pci rt73 rt73usb rtl8180 rtl8187 rtl8187se rtusb ), + qw(rtl8192se rtl8192cu rtl8192de spectrum_cs usb8xxx 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 => [ - qw(avmfritz c4 cdc-acm b1pci divas hfc4s8s_l1 hfc_usb hisax hisax_st5481 hisax_fcpcipnp hysdn sedlfax t1pci tpam w6692pci), + 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 => [ + qw(hso nozomi option sierra), + ], modem => [ - qw(ltmodem mwave ), + qw(ltmodem mwave sm56 ft1000), ], slmodem => [ - qw(slamr slusb snd-atiixp-modem snd-intel8x0m snd-via82xx-modem), + qw(slamr slusb snd-ali5451 snd-atiixp-modem snd-intel8x0m snd-via82xx-modem), ], - tokenring => [ qw(3c359 abyss ibmtr lanstreamer olympic proteon skisa smctr tms380tr tmspci) ], - wan => [ qw(c101 cosa cyclomx cycx_drv dlci farsync hdlc hostess_sv11 n2 pc300 pci200syn sbni sdla sdladrv sealevel syncppp wanxl z85230) ], + wan => [ 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 => [ qw(cxacru speedtch ueagle-atm usbatm xusbatm) ], + virtual => [ qw(xen-netfront) ], }, ################################################################################ disk => { # ide drivers compiled as modules: - ide => [ qw(aec62xx cs5520 cs5530 delkin_cb ide-generic rz1000 sc1200 slc90e66 triflex trm290) ], - # ide drivers compiled in core kernel: - all_ide => [ - qw(ali14xx amd74xx dtc2278 ht6560b qd65xx umc8672 aec62xx alim15x3 atiixp cmd64x cs5520 cs5530 cy82c693), - qw(hpt34x hpt366 ns87415 opti621 pdc202xx_new pdc202xx_old piix rz1000 sc1200 serverworks), - qw(siimage sis5513 slc90e66 triflex trm290 via82cxxx), + ide => [ + 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 => [ if_(arch() =~ /ppc/, qw(mesh mac53c94)), if_(arch() =~ /^sparc/, qw(qlogicpti)), - if_(arch() !~ /alpha/ && arch() !~ /sparc/, + if_(arch() !~ /alpha|sparc/, '53c7,8xx', - qw(AM53C974 BusLogic NCR53c406a a100u2w advansys aha152x aha1542 aha1740), - qw(atp870u dc395x dc395x_trm dmx3191d dtc g_NCR5380 in2000 initio pas16 pci2220i psi240i fdomain), - qw(qla1280 qla2x00 qlogicfas qlogicfc), - qw(seagate wd7000 sim710 sym53c416 t128 tmscsim u14-34f ultrastor), - qw(eata eata_pio eata_dma nsp32), + 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 qlogicisp sym53c8xx lpfc lpfcdd), # ncr53c8xx + qw(aic7xxx aic7xxx_old aic79xx pci2000 qlogicfas408 sym53c8xx lpfc lpfcdd), # ncr53c8xx ], sata => [ # note that ata_piix manage RAID devices on ICH6R - qw(ahci ata_adma ata_piix sata_nv sata_promise sata_qstor sata_sil sata_sis sata_svw sata_sx4 sata_uli sata_via sata_vsc sx8), + 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 => [ if_(arch() =~ /^sparc/, qw(pluto)), - if_(arch() !~ /alpha/ && arch() !~ /sparc/, + if_(arch() !~ /alpha|sparc/, # 3w-xxxx drives ATA-RAID, 3w-9xxx and arcmsr drive SATA-RAID - qw(a320raid), - qw(3w-9xxx 3w-xxxx aacraid arcmsr cciss cpqfc cpqarray DAC960 dpt_i2o gdth i2o_block ipr it821x it8212), - qw(iteraid megaraid megaraid_mbox megaraid_sas mptscsih qla2100 qla2200 qla2300 qla2322 qla4xxx qla6312 qla6322 pdc-ultra), - qw(ips ppa imm), - if_(c::kernel_version =~ /^\Q2.4/, - qw(ataraid hptraid silraid pdcraid) - ), + 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 isci), + 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), ), ], - pcmcia => [ qw(aha152x_cs fdomain_cs nsp_cs qlogic_cs ide-cs) ], #ide_cs - raw => [ qw(sd_mod) ], - usb => [ qw(usb-storage) ], + virtual => [ qw(hv_storvsc virtio_blk virtio_scsi xenblk) ], + pcmcia => [ qw(aha152x_cs fdomain_cs nsp_cs qlogic_cs ide-cs pata_pcmcia sym53c500_cs) ], + raw => [ qw(ide-gd_mod sd_mod) ], + usb => [ qw(keucr uas ums-alauda ums-cypress ums-datafab ums-eneub6250 ums-freecom ums-isd200), + qw(ums-jumpshot ums-karma ums-onetouch ums-realtek ums-sddr09 ums-sddr55 ums-usbat usb-storage) ], firewire => [ qw(sbp2) ], - cdrom => [ qw(ide-cd sr_mod) ], + cdrom => [ qw(ide-cd_mod sr_mod) ], + card_reader => [ qw(sdhci sdhci-pci tifm_sd tifm_7xx1) ], }, ################################################################################ bus => { - usb => [ qw(usb-uhci usb-ohci ehci-hcd uhci-hcd ohci-hcd) ], + usb => [ qw(c67x00 ehci-hcd fhci hwa-hc imx21-hcd isp116x-hcd isp1362-hcd + isp1760 ohci-hcd oxu210hp-hcd r8a66597-hcd renesas-usbhs sl811_cs + sl811-hcd u132-hcd uhci-hcd usb-ohci usb-uhci whci-hcd xhci-hcd) ], + bluetooth => [ qw(bcm203x bfusb bpa10x btusb) ], firewire => [ qw(ohci1394) ], i2c => [ qw(i2c-ali1535 i2c-ali1563 i2c-ali15x3 i2c-amd756 i2c-amd8111 i2c-i801 i2c-i810 i2c-nforce2), @@ -137,7 +181,19 @@ our %l = ( pcmcia => [ if_(arch() !~ /^sparc/, qw(au1x00_ss i82365 i82092 pd6729 tcic vrc4171_card vrc4173_cardu yenta_socket)), # cb_enabler ], - usb_keyboard => [ qw(usbkbd keybdev) ], + hid => [ qw(ff-memless hid-a4tech hid-apple hid-aureal hid-belkin hid-cypress + hid-cherry hid hid-axff hid-dr hid-elecom hid-emsff hid-generic hid-holtekff + hid-hyperv hid-lcpower hid-magicmouse hid-multitouch hid-ortek + hid-picolcd hid-primax hid-prodikeys hid-roccat hid-roccat-arvo + hid-roccat-common hid-roccat-isku hid-roccat-kone + hid-roccat-koneplus hid-roccat-kovaplus hid-roccat-pyra + hid-speedlink hid-twinhan hid-waltop hid-wiimote hid-zydacron + hid-chicony hid-drff hid-ezkey hid-gaff hid-gyration hid-kensington + hid-keytouch hid-kye hid-logitech hid-logitech-dj hid-microsoft + hid-monterey hid-multilaser hid-ntrig hid-petalynx hid-pl hid-saitek + hid-samsung hid-sjoy hid-sony hid-sunplus hid-tivo hid-tmff hid-topseed + hid-uclogic hid-wacom hid-zpff ) ], + #serial_cs #ftl_cs 3c575_cb apa1480_cb epic_cb serial_cb tulip_cb iflash2+_mtd iflash2_mtd #cb_enabler @@ -145,15 +201,14 @@ our %l = ( fs => { - network => [ qw(af_packet nfs) ], + network => [ qw(af_packet nfs smbfs) ], cdrom => [ qw(isofs) ], - loopback => [ qw(isofs loop cryptoloop gzloop), if_($ENV{MOVE}, qw(supermount)) ], + loopback => [ qw(isofs loop squashfs) ], local => [ - if_(arch() =~ /^i.86|x86_64/, qw(vfat ntfs)), if_(arch() =~ /^ppc/, qw(hfs)), - qw(reiserfs), + qw(btrfs ext3 ext4 jfs nilfs2 ntfs reiserfs vfat xfs), ], - various => [ qw(smbfs romfs ext3 xfs jfs ufs ntfs) ], + various => [ qw(romfs ufs unionfs fuse) ], }, @@ -161,44 +216,90 @@ our %l = ( multimedia => { sound => [ - if_(arch() =~ /ppc/, qw(dmasound_pmac snd-powermac)), + 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), + 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-ali5451 snd-als100), - qw(snd-als4000 snd-atiixp snd-au8810 snd-au8820 snd-au8830 snd-audigyls snd-azt2320 snd-azt3328 snd-azx), - qw(snd-bt87x snd-ca0106 snd-cmi8330 snd-cmipci snd-cs4231 snd-cs4232 snd-cs4236 snd-cs4281), - qw(snd-cs46xx snd-darla20 snd-darla24 snd-dt019x snd-emu10k1 snd-emu10k1x snd-ens1370 snd-ens1371 snd-es1688 snd-es18xx), - qw(snd-es1938 snd-es1968 snd-es968 snd-fm801 snd-gina20 snd-gina24 snd-gina3g snd-gusclassic snd-gusextreme), - qw(snd-gusmax snd-hda-intel snd-hdsp snd-hdspm snd-ice1712 snd-ice1724 snd-indi snd-indigo snd-indigodj snd-indigoio snd-intel8x0 snd-interwave), - qw(snd-interwave-stb snd-korg1212 snd-layla20 snd-layla24 snd-layla3g snd-maestro3 snd-mia snd-mixart snd-mona snd-mpu401 snd-nm256), - qw(snd-opl3sa2 snd-opti92x-ad1848 snd-opti92x-cs4231 snd-opti93x snd-pcxhr snd-rme32), - qw(snd-rme96 snd-rme9652 snd-sb16 snd-sb8 snd-sbawe snd-sgalaxy snd-sonicvibes), - qw(snd-sscape snd-trident snd-via82xx snd-vx222 snd-vxp440 snd-vxpocket snd-wavefront), + 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-lola 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 => [ qw(bt878 bttv cx23885 cx25821 cx8800 cx8802 cx88-blackbird dpc7146), + qw(ivtv mxb pvrusb2 saa7134 saa7164 zr36067) ], + dvb => [ + 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), ], - tv => [ qw(bt878 bttv cx8800 cx88-blackbird dpc7146 ivtv saa7134 zr36067) ], - dvb => [ qw(budget budget-av budget-ci cinergyT2 dvb-dibusb dvb-ttpci dvb-ttusb-budget hexium_orion hexium_gemini skystar2) ], photo => [ qw(dc2xx mdc800) ], - radio => [ qw(radio-gemtek-pci radio-maxiradio) ], + radio => [ qw(radio-gemtek-pci radio-maestro radio-maxiradio radio-miropcm20 radio-usb-si470x) ], scanner => [ qw(scanner microtek) ], - joystick => [ qw(cs461x ns558 emu10k1-gp fm801-gp iforce lightning ns558 vortex) ], - webcam => [ qw(cpia_usb cyber2000fb ibmcam mod_quickcam ov511 ov511-alt ov518_decomp ovfx2 pwc quickcam ultracam usbvideo usbvision) ], + firewire => [ qw(snd-firewire-speakers snd-isight) ], + gameport => [ qw(cs461x ns558 emu10k1-gp fm801-gp lightning ns558 vortex) ], + usb_sound => [ qw(audio dabusb dsbr100 snd-usb-audio snd-usb-6fire snd-usb-caiaq snd-usb-usx2y usb-midi) ], + webcam => [ + 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 & 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 zc3xx), + ], + }, + + # USB input stuff get automagically loaded by hotplug and thus + # magically work through /dev/input/mice multiplexing: + input => { + joystick => [ + 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 => [ qw(ati_remote) ], + # USB tablets and touchscreens: + tablet => [ qw(acecad aiptek wacom kbtab) ], + touchscreen => [ qw(ads7846_ts gunze hp680_ts_input itmtouch mk712 mtouch usbtouchscreen) ], }, various => # just here for classification, unused categories (nor auto-detect, nor load_thiskind) { raid => [ - qw(dm-crypt dm-mirror dm-mod linear lvm-mod multipath raid0 raid1 raid10 raid5), + qw(dm-crypt dm-log dm-log-userspace dm-mirror dm-mod dm-multipath dm-queue-length dm-raid dm-region-hash dm-round-robin), + qw(dm-service-time dm-snapshot dm-zero faulty linear lvm-mod md-mod multipath md-mod raid0 raid10 raid1 raid456), + # needed by raid456 and dm-raid 456 target + qw(async_memcpy async_pq async_raid6_recov async_tx async_xor raid6_pq xor), ], mouse => [ - qw(atixlmouse busmouse generic_serial inport logibm logibusmouse msbusmouse pcips2 qpmouse synclinkmp), + qw(atixlmouse busmouse generic_serial inport ioc3_serial logibm logibusmouse msbusmouse pcips2 qpmouse synclinkmp), if_(arch() =~ /ppc/, 'macserial'), - qw(hid mousedev usbhid usbmouse), + qw(mousedev usbhid usbmouse synaptics_usb), ], char => [ if_(arch() =~ /ia64/, qw(efivars)), @@ -206,26 +307,31 @@ our %l = ( qw(wdt_pci i810-tco sx), #- what are these??? ], crypto => [ - qw(amd768_rng amd7xx_tco i810_rng hw_random leedslite padlock), + qw(aes-i586 aes-x86_64 aes_generic aesni_intel amd768_rng amd7xx_tco cbc cryptd hw_random i810_rng leedslite padlock sha256_generic xts), ], laptop => [ qw(i8k sonypi toshiba), ], serial => [ - qw(8250_pci 8250 epca esp isicom istallion moxa mxser stallion sx synclink synclinkmp), + qw(8250_pci 8250 epca esp isicom istallion jsm moxa mxser mxser_new stallion sx synclink synclinkmp), ], other => [ - qw(defxx i810fb ide-floppy ide-scsi ide-tape loop lp nbd sg st), + qw(defxx ide-floppy ide-scsi ide-tape loop lp nbd sg st), qw(parport_pc parport_serial), - qw(btaudio eagle-usb speedtch), + qw(btaudio mmc_block), - arch() =~ /i.86/ ? 'aes-i586' : 'aes', + 'cryptoloop', if_(arch() =~ /sparc/, 'openprom'), + + qw(crc32c crc32c-intel), - qw(wacom evdev), qw(usblp printer), 'floppy', + qw(evdev), qw(usblp printer), 'floppy', 'microcode', #- these need checking qw(rrunner meye), + + qw(virtio_pci virtio_balloon), + qw(mei pch_phub), ], agpgart => [ if_(arch() =~ /alpha/, qw(alpha-agp)), @@ -238,29 +344,67 @@ our %l = ( }, ); -my %dependencies; +my %moddeps; sub load_dependencies { - my ($file) = @_; + my ($file, $o_root) = @_; - %dependencies = map { - my ($f, $deps) = split ':'; - $f => [ split ' ', $deps ]; - } cat_($file); + %moddeps = (); + foreach (cat_($o_root . $file)) { + my ($m, $d) = split ':'; + my $path = $m; + my ($filename, @fdeps) = map { + s![^ ]*/!!g; + s!\.ko!!g; + s!\.[gx]z!!g; + $_; + } $m, split(' ', $d); + + my ($modname, @deps) = map { filename2modname($_) } $filename, @fdeps; + $moddeps{$modname}{deps} = \@deps; + $moddeps{$modname}{filename} = $filename; + if (!begins_with($path, "/")) { + #- 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($_) } @{$dependencies{$_[0]} || []}; + my @l = map { dependencies_closure($_) } @{exists $moddeps{$_[0]} && $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 "bad category $t1/$_\n" . backtrace(); - @$l; + map { filename2modname($_) } @$l; } @sub; } split(' ', $_[0]); } @@ -271,17 +415,18 @@ sub all_modules() { sub module2category { my ($module) = @_; + $module = filename2modname($module); foreach my $t1 (keys %l) { my $h = $l{$t1}; foreach my $t2 (keys %$h) { - $module eq $_ and return "$t1/$t2" foreach @{$h->{$t2}}; + $module eq filename2modname($_) and return "$t1/$t2" foreach @{$h->{$t2}}; } } return; } sub ethernet_categories() { - 'network/main|gigabit|pcmcia|tokenring|usb|wireless|firewire'; + 'network/main|gigabit|pcmcia|usb|wireless|firewire'; } sub sub_categories { @@ -289,8 +434,4 @@ sub sub_categories { keys %{$l{$t1}}; } -sub kernel_is_26 { $_[0] =~ /^2\.6/ } - -sub module_extension { kernel_is_26($_[0]) ? 'ko' : 'o' } - 1; diff --git a/kernel/modules.pl b/kernel/modules.pl index 22f71e048..b64c92fa2 100644 --- a/kernel/modules.pl +++ b/kernel/modules.pl @@ -10,61 +10,6 @@ BEGIN { use MDK::Common; use list_modules; -#- seldom used modules -#- we don't bother making a special floppy for those -my %modules_only_for_all_img = ( - - 'network/main' => [ - qw(acenic), - qw(aironet4500_card com20020-pci hamachi starfire winbond-840), - - if_(arch() =~ /alpha|ppc/, qw(sb1000)), - qw(iph5526), - - qw(ac3200 at1700 atp ni5010 ni52 ni65), #- unused from Jeff - ], - - 'disk/scsi' => [ - # ISA cards: - qw(NCR53c406a aha152x psi240i qlogicfas qlogicfc wd7000 sim710 t128 ultrastor), '53c7,8xx', - qw(qla2x00 in2000 pas16 a100u2w seagate g_NCR5380), - if_(arch() =~ /x86_64/, qw(53c7,8xx nsp32 initio advansys atp870u)), #- old - qw(AM53C974), # deprecated by tmscsim - qw(u14-34f), #- duplicate from ultrastor.o - #- still used, keeping them: qw(aha1542 sym53c416), - qw(lpfcdd), #- HUGE!! - - qw(dc395x dc395x_trm dmx3191d qla1280 BusLogic fdomain), - qw(pci2220i eata eata_pio eata_dma), - 'aic7xxx_old', 'qlogicisp', - 'dtc', - ], - 'disk/sata' => [ - qw(ahci ata_piix sata_nv sata_promise sata_sil sata_sis sata_svw sata_sx4 sata_uli sata_via sata_vsc sx8), - ], - - 'disk/hardware_raid' => [ - qw(i2o_block qla2200 qla2300 cpqfc DAC960 gdth pdc-ultra mptscsih), - ], -); - -#- modules that will only be available in stage2 -#- those modules are NOT in all.img, network.img... -#- there should only be modules that can't be used on stage1 -#- completly unused modules should be removed directly from the kernel -#- (and so be removed from stage2 too) -my %modules_removed_from_stage1 = ( - 'network/main' => [ - 'plip' - ], - - 'disk/hardware_raid' => [ - qw(imm ppa), - ], -); - -my @modules_always_on_stage1 = qw(floppy); - sub flatten_and_check { my ($h) = @_; @@ -85,51 +30,36 @@ sub flatten_and_check { } keys %$h; } -my @modules_only_for_all_img = flatten_and_check(\%modules_only_for_all_img); -my @modules_removed_from_stage1 = flatten_and_check(\%modules_removed_from_stage1); - - -my %images = ( - pcmcia => 'fs/cdrom|loopback disk/cdrom|raw|pcmcia bus/pcmcia', - cdrom => 'fs/cdrom|loopback disk/cdrom|raw|scsi', - network => 'bus/usb|usb_keyboard|pcmcia disk/raw|usb', - network_drivers => 'fs/network|loopback network/main|pcmcia|usb|raw|gigabit', - all => 'fs/cdrom disk/cdrom|raw bus/usb|usb_keyboard disk/usb|scsi fs/loopback|local bus/pcmcia disk/ide|pcmcia|sata|hardware_raid fs/network network/main|pcmcia|usb|raw|gigabit|wireless|tokenring bus/firewire disk/firewire', -); +my $images_cat = 'fs/* disk/* bus/* network/* input/* various/*'; #- ie everything except multimedia my $verbose = $ARGV[0] eq '-v' && shift; my ($f, @para) = @ARGV; $::{$f}->(@para); -sub image2modules { - my ($image) = @_; - my $l = $images{$image}; +sub modules() { + my @nls_modules = ('nls_cp437', 'nls_iso8859_1'); + @nls_modules, map { category2modules($_) } split(' ', $images_cat); +} - my @modules = if_($image !~ /drivers/, @modules_always_on_stage1); - push @modules, map { category2modules($_) } split(' ', $l); - - @modules = difference2(\@modules, \@modules_removed_from_stage1); +sub get_firmwares() { + my ($kern_ver) = @_; - if ($image !~ /all/) { - @modules = difference2(\@modules, \@modules_only_for_all_img); + foreach (all("all.kernels/$kern_ver/modules")) { + foreach(`/sbin/modinfo -Ffirmware "all.kernels/$kern_ver/modules/$_"`) { + mkdir_p(dirname("all.kernels/$kern_ver/firmware/$_")); + eval { cp_af("/lib/firmware/$_", "all.kernels/$kern_ver/firmware/$_"); }; + } } - - @modules; } sub remove_unneeded_modules { my ($kern_ver) = @_; - #- need creating a first time the modules.dep for all modules - #- it will be redone in make_modules_dep when unneeded modules are removed - make_modules_dep($kern_ver); load_dependencies("all.kernels/$kern_ver/modules.dep"); - my $ext = module_extension($kern_ver); - - my @all = list_modules::all_modules(); + my @all = modules(); my @all_with_deps = map { dependencies_closure($_) } @all; - my %wanted_modules = map {; "$_.$ext" => 1 } @all_with_deps; + my %wanted_modules = map { (list_modules::modname2filename($_) . ".ko.xz" => 1) } @all_with_deps; foreach (all("all.kernels/$kern_ver/modules")) { $wanted_modules{$_} or unlink "all.kernels/$kern_ver/modules/$_"; } @@ -138,75 +68,20 @@ sub remove_unneeded_modules { sub make_modules_per_image { my ($kern_ver) = @_; - make_modules_dep($kern_ver); - load_dependencies("all.kernels/$kern_ver/modules.dep"); - - my $ext = module_extension($kern_ver); - - foreach my $image (keys %images) { - my @modules_with_deps = uniq(map { dependencies_closure($_) } image2modules($image)); - my @l = map { "$_.$ext" } @modules_with_deps; - - my $dir = "all.kernels/$kern_ver/modules"; - @l = grep { -e "$dir/$_" } @l; - - if ($image =~ /all/) { - system("cd $dir ; tar cf ../${image}_modules.tar @l") == 0 or die "tar failed\n"; - } else { - my $gi_base_dir = chomp_(`pwd`) . '/..'; - system("cd $dir ; $gi_base_dir/mdk-stage1/mar/mar -c ../${image}_modules.mar @l") == 0 or die "mar failed\n"; - } - } -} - -sub make_modules_dep { - my ($kern_ver) = @_; - - my @l = - kernel_is_26($kern_ver) ? - cat_("all.kernels/$kern_ver/lib/modules/$kern_ver/modules.dep") : - `/sbin/depmod-24 -F all.kernels/$kern_ver/boot/System.map-$kern_ver -e *.o | perl -pe 's/\\\n//'`; - - @l = map { - if (/(\S+):\s+(.*)/) { - my ($module, @deps) = map { m!.*/(.*)\.k?o(\.gz)$! && $1 } $1, split(' ', $2); - if (member($module, 'plip', 'ppa', 'imm')) { - @deps = map { $_ eq 'parport' ? 'parport_pc' : $_ } @deps; - } elsif ($module eq 'vfat') { - push @deps, 'nls_cp437', 'nls_iso8859-1'; - } - if_(@deps, join(' ', "$module:", @deps)); - } else { - (); - } - } @l; + my $dir = "all.kernels/$kern_ver/modules"; - output("all.kernels/$kern_ver/modules.dep", map { "$_\n" } @l); + system("cd $dir ; tar cf ../all_modules.tar *.ko.*") == 0 or die "tar failed\n"; } -sub make_modules_description { - my ($kern_ver) = @_; - my $ext = module_extension($kern_ver); - my $dir = "all.kernels/$kern_ver/modules"; - - my @l; - if (kernel_is_26(`uname -r`)) { #- modinfo behaves differently depending on the build kernel used - my $name; - @l = map { - $name = $1 if m!^filename:\s*(.*)\.$ext!; - if_($name && /^description:\s*(.*)/, "$name\t$1"); - } `cd $dir ; /sbin/modinfo *.$ext`; - } else { - @l = map { - if_(/(.*?)\.$ext "(.*)"/, "$1\t$2\n"); - } `cd $dir ; /sbin/modinfo-24 -f '%{filename} %{description}\n' *.$ext`; - } - output("modules.description", @l); +sub get_main_modules() { + my $base = dirname($0); + my $main = chomp_(cat_("$base/RPMS/.main")); + chomp_(`tar tf $base/all.kernels/$main/all_modules.tar`); } sub pci_modules4stage1 { my ($category) = @_; - my @modules = difference2([ category2modules($category) ], \@modules_removed_from_stage1); + my @modules = difference2([ category2modules($category) ]); print "$_\n" foreach uniq(map { dependencies_closure($_) } @modules); } @@ -231,7 +106,7 @@ sub check() { my ($mod) = m|([^/]*)\.k?o(\.gz)?$| or next; delete $deprecated_modules{$mod}; next if $listed{$mod}; - s|.*?mdk(BOOT)?/||; + s|.*?mdk/||; s|kernel/||; s|drivers/||; s|3rdparty/||; $_ = dirname $_; $_ = dirname $_ if $mod eq basename($_); @@ -242,8 +117,8 @@ sub check() { print "$msg $_: ", join(" ", @{$not_listed{$_}}), "\n" foreach sort keys %not_listed; } }; - $not_listed->('NOT LISTED', 1, `cd all.kernels/2.6* ; find -name "*.k?o" -o -name "*.k?o.gz"`); - $not_listed->('not listed', $verbose, `rpm -qpl /RPMS/kernel-2.6*`); + $not_listed->('NOT LISTED', 1, get_main_modules()); + $not_listed->('not listed', $verbose, chomp_(`rpm -qpl RPMS/kernel-*2.6*`)); if (%deprecated_modules) { my %per_cat; push @{$per_cat{$listed{$_}}}, $_ foreach keys %deprecated_modules; diff --git a/kernel/strip_modules b/kernel/strip_modules deleted file mode 100755 index cd4077a66..000000000 --- a/kernel/strip_modules +++ /dev/null @@ -1,129 +0,0 @@ -#!/bin/sh -# -# Given a list of objects, strip all static symbols except those -# required by insmod. -# -# Copyright Keith Owens <kaos@ocs.com.au>. GPL. -# Sat Feb 1 12:52:17 EST 1997 -# -# Mainly intended for reducing the size of modules to save space -# on emergency and install disks. Be aware that removing the -# static symbols reduces the amount of diagnostic information -# available for oops. Not recommended for normal module usage. -# -# This code requires the modules use MODULE_PARM and EXPORT_. -# Do not strip modules that have not been converted to use -# MODULE_PARM or are using the old method of exporting symbols. -# In particular do not use on modules prior to 2.1.20 (approx). -# -# The objects are stripped in /tmp, only if the strip works is -# the original overwritten. If the command line to strip the -# symbols becomes too long, the strip is done in multiple passes. -# Running strip_module twice on the same object is safe (and a -# waste of time). -# - -sizeofptr="/tmp/$$.sizeofptr" -echo 'int main() { return sizeof(void *); }' | gcc -xc - -o $sizeofptr -$sizeofptr -export SIZEOF_POINTER=$? -rm -f $sizeofptr - -cat > /tmp/$$.awk <<\EOF -BEGIN { - strip = "/usr/bin/objcopy"; - nm = "/usr/bin/nm"; - cp = "/bin/cp"; - mv = "/bin/mv"; - rm = "/bin/rm"; - tmp = "/tmp"; - command_size = 400; # arbitrary but safe - - getline < "/proc/self/stat"; - pid = $1; - tmpcopy = tmp "/" pid ".object"; - nmout = tmp "/" pid ".nmout"; - - for (i = 1; i < ARGC; ++i) - strip_module(ARGV[i]); - - do_command(rm " -f " tmpcopy " " nmout); - - exit(0); -} - -function strip_module(object, - keep_symbol, to_strip, symbol, command, changed) { - do_command(cp " -a " object " " tmpcopy); - do_command(nm " " tmpcopy " > " nmout); - # delete array_name sometimes breaks, internal error, play safe - for (symbol in keep_symbol) - delete keep_symbol[symbol]; - for (symbol in to_strip) - delete to_strip[symbol]; - new_module_format = 0; - ptrskip = 2 + 2 * ENVIRON["SIZEOF_POINTER"]; - while ((getline < nmout) > 0) { - $0 = substr($0, ptrskip); - # b static variable, uninitialised - # d static variable, initialised - # r static array, initialised - # t static label/procedures - if ($1 ~ /[bdrt]/) - to_strip[$2] = ""; - else if ($2 ~ /R __ksymtab_/) - keep_symbol[substr($2, 11)] = ""; - else if ($0 ~ /R __module_parm_/) - keep_symbol[substr($2, 15)] = ""; - else if ($0 ~ /D __parm_/) - keep_symbol[substr($2, 8)] = ""; - else if ($3 ~ /__ksymtab/) { - keep_symbol[$5] = ""; - } - else if ($1 != "?") - keep_symbol[$2] = ""; - if ($2 ~ /__module/) - new_module_format = 1; - } - close(nmout); - command = ""; - changed = 0; - failure = 0; - if (new_module_format) { - for (symbol in to_strip) { - if (!(symbol in keep_symbol)) { - changed = 1; - if (length(command) > command_size) { - failure = failure || do_command(strip command " " tmpcopy); - command = ""; - } - command = command " --strip-symbol=" symbol; - } - } - } - if (command != "") { - changed = 1; - failure = failure || do_command(strip command " " tmpcopy); - } - if (changed && !failure) - do_command(mv " " tmpcopy " " object); -} - -function do_command(command) { - if ((ret = system(command)) != 0) { - giveup("command \"" command "\" failed " ret, ret); - return 1; - } - return 0; -} - -function giveup(message, ret) { - print "strip_module: " message > "/dev/stderr"; -# exit(ret); -} -EOF - -awk -f /tmp/$$.awk "$@" -ret=$? -rm -f /tmp/$$.awk -exit $ret diff --git a/kernel/update_kernel b/kernel/update_kernel deleted file mode 100755 index adef926d9..000000000 --- a/kernel/update_kernel +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/perl - -use MDK::Common; -use list_modules; - -my $RPMS = '/export/media/main'; -my $rpm = 'rpm --nosignature'; - - -my $MOVE = $ARGV[0] eq '--move' && shift; - -@ARGV <= 1 or die "usage: ./update_kernel [--move] [<kernel rpm>]\n"; - - -mkdir 'all.kernels'; # make sure "all.kernels" directory exists -eval { rm_rf('all.modules') }; #- not used anymore - -my $main = chomp_(cat_('all.kernels/.main')); -my $main_BOOT = chomp_(cat_('all.kernels/.main-BOOT')); - -if (@ARGV) { - install_kernel($ARGV[0]); -} else { - update_kernel_from_repository($RPMS, '2.6', 0); - update_kernel_from_repository($RPMS, '2.6', 1); -# update_kernel_from_repository($RPMS, '2.4', 1); - install_kernel(glob("$RPMS/kernel-xbox*"), 1) if arch() =~ /i.86/; -} - - -sub system_verbose { print join(' ', @_), "\n"; system(@_) } -sub sys { &system_verbose; $? and die } - -sub rpm2version { - my ($kernel_rpm) = @_; - `$rpm -qpl $kernel_rpm` =~ m!/boot/vmlinuz-(.*)! && $1 or die "can't find vmlinuz in $kernel_rpm\n"; -} - -sub update_kernel_from_repository { - my ($RPMS, $main_ver, $is_BOOT) = @_; - my $rpm_wildcard = 'kernel-' . ($is_BOOT ? 'BOOT-' : (arch() =~ /i.86/ ? 'i586-up-1GB-' : '')) . $main_ver . '*.rpm'; - my @kernels = glob("$RPMS/$rpm_wildcard"); - - install_kernel($_, 1) foreach @kernels; -} - -sub install_kernel { - my ($kernel_rpm, $o_update) = @_; - - my $kern_ver = rpm2version($kernel_rpm); - my $dir = "all.kernels/$kern_ver"; - - -d $dir and return if $o_update; - - my $is_BOOT = $kern_ver =~ /BOOT/; - - if (!$main || !-d "all.kernels/$main") { - $main = $kern_ver; - output('all.kernels/.main', "$main\n"); - } - if ($is_BOOT && (!$main_BOOT || !-d "all.kernels/$main_BOOT")) { - $main_BOOT = $kern_ver; - output('all.kernels/.main-BOOT', "$main_BOOT\n"); - } - - warn "Installing kernel $kern_ver\n"; - - eval { rm_rf($dir) }; - mkdir_p("$dir/modules"); - sys("rpm2cpio $kernel_rpm | (cd $dir ; cpio -id)"); - - rename "$dir/boot/vmlinuz-$kern_ver", "$dir/vmlinuz" or die "can't find vmlinuz\n"; - - sys("find $dir -name '*.gz' | xargs gunzip"); - - my $ext = module_extension($kern_ver); - - open(my $F, "find $dir -name '*.$ext' |"); - my $file; while ($file = <$F>) { - chomp($file); - rename $file, "$dir/modules/" . basename($file) or warn "conflict for $file\n"; - } - - if (kernel_is_26($kern_ver)) { - warn "no stripping on 2.6 since it breaks modules\n"; - } else { - print STDERR "stripping $kern_ver: "; - sys("./strip_modules $dir/modules/*.$ext"); - print STDERR "done\n"; - } - - sys('perl', 'modules.pl', 'remove_unneeded_modules', $kern_ver) if $kern_ver !~ /BOOT/; - - sys('perl', 'modules.pl', 'make_modules_per_image', $kern_ver); - sys('perl', 'modules.pl', 'make_modules_description', $kern_ver) if $kern_ver eq $main; - - if (!$MOVE) { - print STDERR "packdrake $kern_ver: "; - sys("cd $dir/modules ; ls *.$ext | packdrake -b9s ../modules.cz 400000"); - print STDERR "done\n"; - } - - eval { rm_rf("$dir$_") } foreach qw(/boot /lib /usr /modules); -} |
