From 84adb9036e99bc2e7560135694197b9312faa9e6 Mon Sep 17 00:00:00 2001 From: Guillaume Cottenceau Date: Thu, 29 Mar 2001 22:47:09 +0000 Subject: support more than one boot kernel :-) --- .cvsignore | 1 + Makefile | 20 +++++---- docs/HACKING | 21 ++++----- docs/README | 7 +-- make_boot_img | 48 +++++++++++++------- mdk-stage1/pci-resource/update-pci-ids.pl | 12 +++-- perl-install/Makefile | 13 +----- perl-install/modules.pm | 8 +++- rescue/make_rescue_img | 9 +++- tools/make_mdkinst_stage2 | 1 + update_kernel | 74 +++++++++++++++++++------------ 11 files changed, 131 insertions(+), 83 deletions(-) diff --git a/.cvsignore b/.cvsignore index 1e8ace8c2..53455e9dc 100644 --- a/.cvsignore +++ b/.cvsignore @@ -9,3 +9,4 @@ vmlinu* install_pcmcia_modules System.map drakxtools.tar.bz2 +all.kernels diff --git a/Makefile b/Makefile index 9e962519b..0b1a13a68 100644 --- a/Makefile +++ b/Makefile @@ -33,10 +33,10 @@ UPLOAD_SPARC_DEST = /mnt/BIG/distrib/sparc install: build autoboot rescue for i in images misc Mandrake Mandrake/base; do install -d $(ROOTDEST)/$$i ; done ifneq (ppc,$(ARCH)) - cp -f $(RELEASE_BOOT_IMG) $(ROOTDEST)/images + for i in $(RELEASE_BOOT_IMG); do cp -f $${i}* $(ROOTDEST)/images; done endif ifeq (alpha,$(ARCH)) - cp -f $(BOOT_RDZ) $(ROOTDEST)/boot + for i in $(BOOT_RDZ); do cp -f $${i}* $(ROOTDEST)/boot; done cp -f vmlinux.gz $(ROOTDEST)/boot/instboot.gz make -C tools/$(ARCH)/cd install ROOTDEST=$(ROOTDEST) endif @@ -49,8 +49,9 @@ autoboot: ifeq (i386,$(ARCH)) install -d $(ROOTDEST)/boot # cp -f vmlinuz {hd,cdrom,pcmcia,network,all,other}.rdz $(ROOTDEST)/boot - cp -f vmlinuz $(BOOT_RDZ) $(ROOTDEST)/boot - /usr/sbin/rdev -v $(ROOTDEST)/boot/vmlinuz 788 + cp -f all.kernels/*/boot/vmlinuz* $(ROOTDEST)/boot + for i in $(BOOT_RDZ); do cp -f $${i}* $(ROOTDEST)/boot; done + for i in $(ROOTDEST)/boot/vmlinuz*; do /usr/sbin/rdev -v $$i 788; done endif dirs: @@ -58,12 +59,12 @@ dirs: [ "$$n" = "." ] || make -C $$n all ;\ done -rescue: modules +rescue: all.modules make -C $@ network_ks.rdz pcmcia_ks.rdz: %_ks.rdz: %.rdz -$(BOOT_RDZ): dirs modules +$(BOOT_RDZ): dirs all.modules ./make_boot_img $@ $(@:%.rdz=%) $(BOOT_IMG): %.img: %.rdz @@ -74,7 +75,7 @@ tar: clean cd .. ; tar cfy gi.tar.bz2 gi rm needed_rpms.lst -modules: +all.modules: `./tools/specific_arch ./update_kernel` $(BOOT_IMG:%=%f): %f: % @@ -82,7 +83,8 @@ $(BOOT_IMG:%=%f): %f: % xmessage "Floppy done" clean: - rm -rf $(BOOT_IMG) $(BOOT_RDZ) $(BINS) modules modules64 install_pcmcia_modules vmlinu* System*.map + for i in $(BOOT_IMG) $(BOOT_RDZ); do rm -rf $${i}*; done + rm -rf $(BINS) all.modules all.modules64 install_pcmcia_modules all.kernels/cardmgr for i in $(DIRS) rescue; do make -C $$i clean; done find . -name "*~" -o -name ".#*" | xargs rm -f @@ -107,7 +109,7 @@ upload: upload misc rpmtools.pm ;\ upload misc auto ;\ upload '' live_update ;\ - for i in $(RELEASE_BOOT_IMG); do upload images $$i; done ;\ + for i in $(RELEASE_BOOT_IMG); do for j in $${i}*; do upload images $$j; done; done;\ echo upload_sparc: diff --git a/docs/HACKING b/docs/HACKING index b35825449..313866401 100644 --- a/docs/HACKING +++ b/docs/HACKING @@ -61,20 +61,21 @@ gc ALL=(root) NOPASSWD:/usr/bin/patch,NOPASSWD:/bin/rpm,NOPASSWD:/bin/mount,NOPA (4) boot kernel -you need a boot kernel and some kind of modules for each boot floppy. it's -located in subdirectory "kernel" in DrakX-*.src.rpm ; if you ever grab (or -build) another boot kernel, re-do following step (c). +you need one or more kernels and (all?) their modules. it's located in +subdirectory "all.kernels" in DrakX-*.src.rpm ; if you ever grab (or +build) another boot kernel, replace or add an entry in "all.kernels" as: - (a) build the packager software for stage1 (read README file to know what's stage1) - [gc@obiwan ~/cvs/gi] cd mdk-stage1/mar - [gc@obiwan ~/cvs/gi/mdk-stage1/mar] make + (a) create your modules subdir (useful to describe the + VERSION_RELEASE) and untar your kernel - (b) build the perl stuff for stage2 - [gc@obiwan ~/cvs/gi] cd perl-install - [gc@obiwan ~/cvs/gi/perl-install] make +[gc@obiwan ~/cvs/gi/all.kernels] mkdir 2.4.1-BOOTcustom +[gc@obiwan ~/cvs/gi/all.kernels] cd 2.4.1-BOOTcustom +[gc@obiwan ~/cvs/gi/all.kernels/2.4.1-BOOTcustom] tar jxvf ~/mycustomkernel.tar.bz2 +[gc@obiwan ~/cvs/gi/all.kernels/2.4.1-BOOTcustom] ls +boot/ cardmgr/ lib/ (c) build kernel/modules stuff for stage1 and stage2 - [gc@obiwan ~/cvs/gi] ./update_kernel +[gc@obiwan ~/cvs/gi] ./update_kernel (5) pray diff --git a/docs/README b/docs/README index 7cbdd66c0..71b23c84d 100644 --- a/docs/README +++ b/docs/README @@ -193,7 +193,7 @@ For pcmcia, it depends on the type of install. ******************************************************************************** Modules can be found in at least 2 places: - in /modules/modules.mar -- in /lib/modules.cz2 +- in /lib/modules.cz /modules/modules.mar is used in mdk-stage1. It contains only modules interesting for one kind of install. For example in an hd install, it @@ -202,7 +202,8 @@ modules. (To create, extract or view files in a ``mar'' archive, please use gi/mdk-stage1/mar/mar; this is basically an archive format meant to be minimalistic) -/lib/modules.cz2 contains every module, it is used in stage2. +/lib/modules.cz contains all modules, it is used +in stage2. To install a module, use modprobe which is in /usr/bin. It's a perl wrapper @@ -210,7 +211,7 @@ around /usr/bin/insmod. It uses the dependencies found in /modules/modules.dep (stage1). /usr/bin/insmod is a wrapper around /usr/bin/insmod_. It just extracts the -module out of /lib/modules.cz2 in /tmp. Then it calls insmod_. +module out of /lib/modules.cz in /tmp. Then it calls insmod_. /usr/bin/insmod_ is the real prog (which you usually find in /sbin/). You need to give it the complete path. diff --git a/make_boot_img b/make_boot_img index 040288345..f18bed11b 100755 --- a/make_boot_img +++ b/make_boot_img @@ -44,12 +44,24 @@ $install = $ {{ hd64 => "stage1-disk", }}{$type} or die; -$img =~ /rdz$/ ? initrd($mnt, $img) : $::{"boot_img_$arch"}->($mnt, $img); +if ($img =~ /rdz$/) { + foreach (glob('all.modules/*')) { + -f $_ and next; + initrd($mnt, $img, $_) ; + } +} else { + foreach (glob('all.kernels/*')) { + $_ =~ 'cardmgr' and next; + my ($kern) = $_ =~ /all.kernels\/([^\/]+)/; + _ "$sudo cp -f all.kernels/$kern/boot/vmlinuz* all.kernels/$kern/vmlinuz"; + $::{"boot_img_$arch"}->($mnt, $img, "all.kernels/$kern/", "all.modules/$kern"); + } +} sub install_stripped { _ "strip $_[0]"; _ "$sudo install $_[0] $_[1]" } sub initrd { - my ($mnt, $img) = @_; + my ($mnt, $img, $modz) = @_; my ($ltype, $I) = $type =~ /(.*?)(64)/; $ltype ||= $type; my $tmp = "$ENV{HOME}/tmp/initrd"; my $tar = "$instdir/stage1-data/stage1.tar.bz2"; @@ -68,44 +80,50 @@ sub initrd { _ "$sudo cp -a /etc/pcmcia $mnt/etc"; _ "$sudo patch -p0 -d $mnt/etc < $instdir/pcmcia_config.patch"; } - _ "$sudo cp -f modules$I/${ltype}_modules.mar $mnt/modules/modules$I.mar" if $type !~ /blank/; - _ "$sudo cp -f modules$I/modules.dep $mnt/modules/"; + $modz ||= "modules$I"; + _ "$sudo cp -f $modz/${ltype}_modules.mar $mnt/modules/modules$I.mar" if $type !~ /blank/; + _ "$sudo cp -f $modz/modules.dep $mnt/modules/"; _ "$sudo umount $mnt"; + + my ($extension) = $modz =~ /.*\/([^\/]+)/; # Workaround for vfat-loop bug (quite touchy) _ "gzip -9f $tmp"; - _ "cp -f $tmp.gz $img"; + _ "cp -f $tmp.gz $img$extension"; _ "rm -f $tmp.gz"; # _ "gzip -9 -c $tmp > $img"; # _ "rm -f $tmp"; } sub boot_img_i386 { - my ($mnt, $img) = @_; + my ($mnt, $img, $kern, $modz) = @_; __ "$sudo umount $mnt 2>/dev/null"; my $automatic = ""; + my ($imgext) = $modz =~ /.*\/([^\/]+)/; if ($type eq "hd") { - _ "bunzip2 -c $instdir/init-data/msgboot.img.bz2 > $img"; + _ "bunzip2 -c $instdir/init-data/msgboot.img.bz2 > $img$imgext"; } elsif ($type eq "all") { - _ "bunzip2 -c $instdir/init-data/msgboot-graphicallogo-2880.img.bz2 > $img"; + _ "bunzip2 -c $instdir/init-data/msgboot-graphicallogo-2880.img.bz2 > $img$imgext"; } else { - _ "bunzip2 -c $instdir/init-data/msgboot-graphicallogo.img.bz2 > $img"; + _ "bunzip2 -c $instdir/init-data/msgboot-graphicallogo.img.bz2 > $img$imgext"; } $automatic = "automatic=method:cdrom" if ($type eq "cdrom"); $automatic = "automatic=method:disk" if ($type eq "hd"); - _ "$sudo mount -t vfat -o umask=0 $img $mnt -o loop"; - _ "cat vmlinuz > $mnt/vmlinuz" if $type !~ /blank/; - initrd("${mnt}2", "$type.rdz") if !-f "$type.rdz"; - eval { _ "cp -f $type.rdz $mnt" }; + _ "$sudo mount -t vfat -o umask=0 $img$imgext $mnt -o loop"; + _ "cat $kern"."vmlinuz > $mnt/vmlinuz" if $type !~ /blank/; + + my ($extension) = $modz =~ /.*\/([^\/]+)/; + initrd("${mnt}2", "$type.rdz", $modz) if !-f "$type.rdz$extension"; + eval { _ "cp -f $type.rdz$extension $mnt/$type.rdz" }; if ($@) { unlink "$mnt/$type.rdz"; my $avail = (split ' ', `df $mnt`)[-3]; - my $s = int((-s "$type.rdz") / 1024); - die sprintf("not enough room for $type.rdz: need %dKB (available %dKB < needed %dKB)\n", $s - $avail, $avail, $s); + my $s = int((-s "$type.rdz$extension") / 1024); + die sprintf("not enough room for $type.rdz$extension: need %dKB (available %dKB < needed %dKB)\n", $s - $avail, $avail, $s); } # my $ftype = $type =~ /^(other|all)$/ ? "cdrom" : $type; diff --git a/mdk-stage1/pci-resource/update-pci-ids.pl b/mdk-stage1/pci-resource/update-pci-ids.pl index 84c5b7063..1ea4ffc60 100755 --- a/mdk-stage1/pci-resource/update-pci-ids.pl +++ b/mdk-stage1/pci-resource/update-pci-ids.pl @@ -19,9 +19,13 @@ struct pci_module_map { my %t = (scsi => 'scsi', eth => 'net'); -if (-x "../mar/mar" && -f "../../modules/network_modules.mar" && -f "../../modules/hd_modules.mar") { - $modulez{'eth'} = [ `../mar/mar -l ../../modules/network_modules.mar` ]; - $modulez{'scsi'} = [ `../mar/mar -l ../../modules/hd_modules.mar` ]; +my @modulz = sort grep { -d $_ } glob("../../all.modules/*"); +my $selected_mod = pop @modulz; +my ($kern) = $selected_mod =~ /.*\/([^\/]+)/; + +if (-x "../mar/mar" && -f "../../all.modules/$kern/network_modules.mar" && -f "../../all.modules/$kern/hd_modules.mar") { + $modulez{'eth'} = [ `../mar/mar -l ../../all.modules/$kern/network_modules.mar` ]; + $modulez{'scsi'} = [ `../mar/mar -l ../../all.modules/$kern/hd_modules.mar` ]; $check_marfiles = 1; } @@ -34,7 +38,7 @@ foreach $type (keys %t) { struct pci_module_map ${type}_pci_ids[] = { "; my %l; - foreach (glob("../../kernel/lib/modules/*/$t{$type}/*.o"), glob("../../kernel/lib/modules/*/kernel/drivers/$t{$type}/{*/,}*.o")) { + foreach (glob("../../all.kernels/$kern/lib/modules/*/$t{$type}/*.o"), glob("../../all.kernels/$kern/lib/modules/*/kernel/drivers/$t{$type}/{*/,}*.o")) { m|([^/]*)\.o$|; $l{$1} = 1; } diff --git a/perl-install/Makefile b/perl-install/Makefile index 9b016160f..6bf08fa15 100644 --- a/perl-install/Makefile +++ b/perl-install/Makefile @@ -89,7 +89,7 @@ ifeq (sparc,$(ARCH)) ln -s /usr/X11R6/lib/X11/xkb/xkbcomp $(DEST)/usr/bin/xkbcomp endif ifeq (i386,$(ARCH)) - install -s ../kernel/cardmgr/cardmgr $(DEST)/usr/bin + install -s ../all.kernels/cardmgr/* $(DEST)/usr/bin install -s ../tools/i386/mkreiserfs $(DEST)/usr/bin endif @@ -134,16 +134,7 @@ endif cd share ; cp -a themes $(DEST)/usr/share/gtk cd share ; cp compssUsers compssUsers.desktop rpmsrate $(ROOTDEST)/Mandrake/base - if [ -f ../modules/modules.cz* ]; then \ - cp -f ../modules/modules.cz* $(DEST)/lib/; \ - if [ -f ../modules64/modules.cz* ]; then \ - cp -f ../modules64/modules.cz* $(DEST)/lib/modules64.cz2; \ - fi \ - else \ - cp -f ../modules/modules.cpio.bz2 $(DEST)/lib/; \ - install -d $(DEST)/lib/modules; \ - cp -f ../modules/pristine/* $(DEST)/lib/modules ||: ; \ - fi + for i in ../all.modules/modules.cz*; do cp -f $$i $(DEST)/lib/; done # echo -e '#!/bin/sh\n\nexec "/usr/bin/sh"' > $(DEST)/usr/bin/runinstall2 # chmod a+x $(DEST)/usr/bin/runinstall2 diff --git a/perl-install/modules.pm b/perl-install/modules.pm index df5592fbc..b2aa1ae58 100644 --- a/perl-install/modules.pm +++ b/perl-install/modules.pm @@ -525,7 +525,11 @@ sub unload { sub load_raw { my @l = map { my ($i, @i) = @$_; [ $i, \@i ] } grep { $_->[0] !~ /ignore/ } @_; - my $cz = "/lib/modules" . (arch() eq 'sparc64' && "64") . ".cz"; -e $cz or $cz .= "2"; + my $cz = "/lib/modules" . (arch() eq 'sparc64' && "64") . ".cz" . c::kernel_version(); + if (!-e $cz) { + unlink $_ foreach glob_("/lib/modules*.cz*"); + install_any::getAndSaveFile("Mandrake/mdkinst$cz", $cz) or die "failed to get modules $cz: $!"; + } eval { require packdrake; my $packer = new packdrake($cz); @@ -728,7 +732,7 @@ sub configure_pcmcia { }; #- run cardmgr in foreground while it is configuring the card. - run_program::run("cardmgr", "-f", "-m" ,"/modules"); + run_program::run("cardmgr" . c::kernel_version(), "-f", "-m" ,"/modules"); sleep(3); #- make sure to be aware of loaded module by cardmgr. diff --git a/rescue/make_rescue_img b/rescue/make_rescue_img index 0ecd835a7..777ff286c 100755 --- a/rescue/make_rescue_img +++ b/rescue/make_rescue_img @@ -63,7 +63,14 @@ foreach (cat_("aliases")) { chomp; my ($f, $dest) = split; symlink $dest, "$tmp$f"; } -_ "cp ../modules/modules.{cz*,dep} $tmp/modules"; + +my @modulz = sort grep { -d $_ } glob("../all.modules/*"); +my $selected_mod = pop @modulz; +my ($kern) = $selected_mod =~ /.*\/([^\/]+)/; +print "\tChoosing kernel modules from $kern\n"; + +_ "cp ../all.modules/modules.cz$kern $tmp/modules/modules.cz"; +_ "cp ../all.modules/$kern/modules.dep $tmp/modules"; installown("drvinst", "/usr/bin"); diff --git a/tools/make_mdkinst_stage2 b/tools/make_mdkinst_stage2 index c18841d49..442984327 100755 --- a/tools/make_mdkinst_stage2 +++ b/tools/make_mdkinst_stage2 @@ -38,6 +38,7 @@ $SUDO cp -a $DEST/* $STAGE2TMP # hack to reduce the STAGE2 image (do not edit without modifying in DrakX) # be sure to keep the biggest server rm -f $STAGE2TMP/usr/X11R6/bin/XF86_{VGA16,3DLabs,TGA,S3} +rm -f $STAGE2TMP/lib/modules.cz2.2* rm -f $STAGE2TMP/$REP4PMS/po/DrakX.pot #for i in /usr/share/locale; do \ # name=`basename $i` ; \ diff --git a/update_kernel b/update_kernel index 7f143f8be..b0b687ec8 100755 --- a/update_kernel +++ b/update_kernel @@ -1,8 +1,9 @@ #!/bin/bash -KERNEL_BOOT_PATH="kernel" +ALL_KERNELS="all.kernels" function f() { + echo -n "." v=`perl -Iperl-install -Mmodules -e "print qq(\\$_.o\n) foreach modules::module_of_type__4update_kernel(\"$1\")"` } @@ -20,18 +21,32 @@ function create_marfile() { && echo "WARNING! in $marfile, $k is missing (required by $i)" done done - ../mdk-stage1/mar/mar -c $marfile $(ls $*) + $GIBASEDIR/mdk-stage1/mar/mar -c $marfile $(ls $*) +} + +function create_modules() { + kernel_path=$1 + kern=$2 + echo "Updating modules in '`pwd`' for kernel '$kern'" + cp -f `find $kernel_path/lib/modules/ -name "*.o"` . + /sbin/depmod -F $kernel_path/boot/System.map* -e *.o | perl -pe 's/\\\n//' \ + | perl -ne 's/\.o//g; s/[ \t]+/ /g; print if /: /' > modules.dep + perl -pi -e 's/((plip|ppa|imm): parport)/$1 parport_pc/' modules.dep + ls *.o | packdrake -b9s modules.cz 400000 + mv modules.cz "../modules.cz$kern" + create_marfile network_modules.mar $NETWORK_MODULES $GENERIC_MODULES + create_marfile cdrom_modules.mar $CDROM_MODULES $GENERIC_MODULES + create_marfile hd_modules.mar $HD_MODULES $GENERIC_MODULES + create_marfile pcmcia_modules.mar $PCMCIA_MODULES $PCMCIA_COREMODULES $GENERIC_MODULES + create_marfile other_modules.mar $BIG_MODULES $GENERIC_MODULES + create_marfile all_modules.mar $ALL_MODULES $GENERIC_MODULES + rm -f $ALL_MODULES $PCMCIA_COREMODULES $NOT_USEFULL_IN_STAGE1 # leave in the directory non-install1 used modules } -[ -e kernel/cardmgr ] && ( - cd kernel/cardmgr - # pixel ? conflicts ? - echo "int main(int argc, char **argv) { cardmgr_main(argc, argv); }" > main.c - gcc -o cardmgr *.o main.c -) ARCH=`uname -m | sed -e 's/i.86/i386/' -e 's/sparc.*/sparc/'` +echo -n "Finding modules categories" f "scsi" ; SCSI_DRIVERS=$v f "disk" ; DISK_DRIVERS=$v f "net" ; NETWORK_DRIVERS=$v @@ -40,6 +55,7 @@ f "pcmcia net_raw cdrom_raw scsi_raw disk_raw" ; PCMCIA_DRIVERS=$v f "big net_raw cdrom_raw scsi_raw disk_raw" ; BIG_DRIVERS=$v f "pcmcia net cdrom scsi disk keepbig" ; ALL_DRIVERS=$v [ $ARCH == "i386" ] && DOSMODULES="vfat.o fat.o" +echo "done." NETWORK_MODULES=" $NETWORK_DRIVERS" CDROM_MODULES=" $CD_DRIVERS" @@ -55,11 +71,10 @@ PCMCIA_COREMODULES="pcmcia_core.o tcic.o ds.o i82365.o" if [ "$ARCH" == "i386" ]; then - #disable any existing resolution!!! - cp -f $KERNEL_BOOT_PATH/boot/vmlinuz* vmlinuz - /usr/sbin/rdev -v vmlinuz 65535 #788 #785 - - rm -rf install_pcmcia_modules ; install -d install_pcmcia_modules + for i in $ALL_KERNELS/*/boot/vmlinuz*; do + #disable any existing resolution!!! + /usr/sbin/rdev -v $i 65535 #788 #785 + done else if [ "$ARCH" == "ppc" ]; then cp -f "$KERNEL_BOOT_PATH"/boot/vmlinux . @@ -67,22 +82,25 @@ else cp -f "$KERNEL_BOOT_PATH"/boot/vmlinux.gz . fi fi -cp -f $KERNEL_BOOT_PATH/boot/System.map* System.map -rm -rf modules ; install -d modules -(cd modules ; - cp -f `find ../"$KERNEL_BOOT_PATH"/lib/modules/ -name "*.o"` . - /sbin/depmod -F ../System.map -e *.o | perl -pe 's/\\\n//' | perl -ne 's/\.o//g; s/[ \t]+/ /g; print if /: /' > modules.dep - perl -pi -e 's/((plip|ppa|imm): parport)/$1 parport_pc/' modules.dep - ls *.o | packdrake -b9s modules.cz 400000 - create_marfile network_modules.mar $NETWORK_MODULES $GENERIC_MODULES - create_marfile cdrom_modules.mar $CDROM_MODULES $GENERIC_MODULES - create_marfile hd_modules.mar $HD_MODULES $GENERIC_MODULES - create_marfile pcmcia_modules.mar $PCMCIA_MODULES $PCMCIA_COREMODULES $GENERIC_MODULES - create_marfile other_modules.mar $BIG_MODULES $GENERIC_MODULES - create_marfile all_modules.mar $ALL_MODULES $GENERIC_MODULES - rm -f $ALL_MODULES $PCMCIA_COREMODULES $NOT_USEFULL_IN_STAGE1 # leave in the directory non-install1 used modules -) + +GIBASEDIR=`pwd` + +rm -rf all.modules ; mkdir all.modules +rm -rf $ALL_KERNELS/cardmgr +for i in $ALL_KERNELS/*; do + [ -d $ALL_KERNELS/cardmgr ] || mkdir $ALL_KERNELS/cardmgr + kern=`basename $i` + [ -e $i/cardmgr ] && ( + cd $i/cardmgr + echo "int main(int argc, char **argv) { cardmgr_main(argc, argv); }" > main.c + gcc -o cardmgr *.o main.c + cp cardmgr $GIBASEDIR/$ALL_KERNELS/cardmgr/cardmgr$kern + ) + ( mkdir all.modules/$kern ; cd all.modules/$kern + create_modules ../../$i $kern ; cd ../.. ) +done + # v=kernel-2.2.17-BOOT3.tar.bz2 # scp kenobi:~chmou/work/kernel/archive/$v /tmp -- cgit v1.2.1