diff options
author | Francesc Pinyol Margalef <francesc.pinyol.m@gmail.com> | 2013-12-21 13:37:33 +0100 |
---|---|---|
committer | Francesc Pinyol Margalef <francesc.pinyol.m@gmail.com> | 2013-12-21 13:37:33 +0100 |
commit | 095c6b25885ce3d22eedba8cdb98f1fd7e8708a5 (patch) | |
tree | 5bfc768996b3ddec185abeb02b602b48b14d10db /images | |
parent | df60191bdbddfa7c8e5bd11a2578aae6740963c0 (diff) | |
parent | f76dc0931e47338aa9c7db257d28e5015d8a2f47 (diff) | |
download | drakx-095c6b25885ce3d22eedba8cdb98f1fd7e8708a5.tar drakx-095c6b25885ce3d22eedba8cdb98f1fd7e8708a5.tar.gz drakx-095c6b25885ce3d22eedba8cdb98f1fd7e8708a5.tar.bz2 drakx-095c6b25885ce3d22eedba8cdb98f1fd7e8708a5.tar.xz drakx-095c6b25885ce3d22eedba8cdb98f1fd7e8708a5.zip |
Merge branch 'master' of git://git.mageia.org/software/drakx
Diffstat (limited to 'images')
-rw-r--r-- | images/Makefile | 15 | ||||
-rw-r--r-- | images/NEWS | 35 | ||||
-rw-r--r-- | images/dracut.conf | 4 | ||||
-rwxr-xr-x | images/make_boot_img | 140 | ||||
-rwxr-xr-x | images/update_kernel | 38 |
5 files changed, 110 insertions, 122 deletions
diff --git a/images/Makefile b/images/Makefile index 18956e2cf..142cfd577 100644 --- a/images/Makefile +++ b/images/Makefile @@ -1,6 +1,6 @@ include ../Makefile.config -VERSION=1.93 +VERSION=2.4 PRODUCT=drakx-installer-images KERNELS=$(shell rpm -qf /lib/modules/3.*) @@ -8,7 +8,12 @@ IMAGES_DEST = $(ROOTDEST)/install/images all: images -images: all.kernels +boot.iso: images/boot.iso + +images/boot.iso: all.kernels/.list make_boot_img + DISTRIB_DESCR=$(DISTRIB_DESCR) DISTRIB_VERSION=$(DISTRIB_VERSION) ./make_boot_img images/boot.iso + +images: all.kernels/.list DISTRIB_DESCR=$(DISTRIB_DESCR) DISTRIB_VERSION=$(DISTRIB_VERSION) ./make_boot_img rm -rf images/alternatives if [ `ls images/*.img-* 2>/dev/null | wc -l` -gt 0 ]; then \ @@ -16,7 +21,7 @@ images: all.kernels fi cd images ; md5sum *.{img,iso}* > MD5SUM -all.kernels: update_kernel ../kernel/list_modules.pm +all.kernels/.list: update_kernel ./update_kernel $(KERNELS) dist: tar @@ -26,7 +31,7 @@ tar: $(info $(PRODUCT)-$(VERSION).tar.xz is ready) clean: - rm -rf images isolinux all.kernels modules.description + rm -rf images isolinux all.kernels modules.description build find . -name "*~" -o -name ".#*" | xargs rm -f install: @@ -37,3 +42,5 @@ install: rm -rf $(ROOTDEST)/isolinux cp -af isolinux $(ROOTDEST) endif + +.PHONY: boot.iso install clean dist tar images diff --git a/images/NEWS b/images/NEWS index c82f1e4c9..1ec90f9b7 100644 --- a/images/NEWS +++ b/images/NEWS @@ -1,3 +1,38 @@ +Version 2.4 - 15 December 2013 by Anne Nicolas + +- remove buggy control caracters (#11602) +- use audit=0 in rescue isolinux config to allow systemd-nspawn to work smoothly + +Version 2.3 - 2 December 2013 by Thierry Vignaud + +- include "sdhci-acpi" for eMMC (mga#11812) + +Version 2.2 - 13 November 2013 by Colin Guthrie + +- pass the modules we want in modules.alias, but not in the initrd through to + dracut via an environment variable +- add BOOT_AUTOMATIC_METHOD to inject command line params into boot.iso syslinux + +Version 2.1 - 5 November 2013 by Colin Guthrie + +- revert back to static per-arch isolinux.cfg files + +Version 2.00 - 2 November 2013 by Thomas Backlund + +- ensure initrd is created with 644 perms (normally 600 for security reasons) +- fix 32-bit isolinux wrapper (s/i586/i386) + +Version 1.95 - 2 November 2013 by Colin Guthrie + +- omit the dracut network module now that we include our own networking kernel modules +- add a dracut.conf rather than adding lots of command line options +- ensure initrd is xz compressed +- include network modules as specified by kernel/list_modules.pm + +Version 1.94 - 29 October 2013 by Colin Guthrie + +- adapt to a dracut based stage1 + Version 1.93 - 14 October 2013 by Thierry Vignaud - sync with kernel-3.12 diff --git a/images/dracut.conf b/images/dracut.conf new file mode 100644 index 000000000..a1fd05e18 --- /dev/null +++ b/images/dracut.conf @@ -0,0 +1,4 @@ +hostonly=no +nofscks=yes +omit_dracutmodules+=" dash modsign systemd plymouth btrfs crypt lvm cifs resume rootfs-block biosdevname usrmount shutdown network " +compress=xz diff --git a/images/make_boot_img b/images/make_boot_img index 35a00cc30..613affd9a 100755 --- a/images/make_boot_img +++ b/images/make_boot_img @@ -62,10 +62,10 @@ foreach my $img (@images) { } elsif ($img =~ /boot.iso/) { boot_iso($img, \@kernels); } elsif ($extension eq 'rdz') { - initrd($type, $I, "$img-$_") foreach @kernels; + initrd($type, $I, "$img-$_", $_) foreach @kernels; } elsif ($extension eq 'img') { print STDERR "calling boot_img_$arch for $img\n"; - $::{"boot_img_$arch"}->($type, $I, "$img-$_", "all.kernels/$_/vmlinuz") foreach @kernels; + $::{"boot_img_$arch"}->($type, $I, "$img-$_", $_, "all.kernels/$_/vmlinuz") foreach @kernels; rename("$img-$kernels[0]", $img); } else { die "unknown image $img"; @@ -106,7 +106,7 @@ sub syslinux_msg { $tree->[0] eq 'document' or die "bad file $msg_xml_file\n"; my $text = xml_tree2syslinux('default', $tree->[1]); - pack("C*", 0x0E, 0x80, 0x03, 0x00) . "" + "" . $text . join('', @more_text) . "\n" . syslinux_color('red') . "[F1-Help] [F2-Advanced Help]" . syslinux_color('default') . "\n"; } @@ -143,71 +143,31 @@ EOF $header . ($b_gfxboot ? $header_gfxboot : $header_non_gfxboot) . join('', @l); } +sub trim { + return $_[0] =~ s/^\s+|\s+$//rg; +} + sub initrd { - my ($type, $I, $img) = @_; - my $stage1_root = $ENV{USE_LOCAL_STAGE1} ? "../mdk-stage1" : "/usr/$lib/drakx-installer-binaries"; + my ($type, $I, $img, $kernel) = @_; + my $stage1_binary = $ENV{USE_LOCAL_STAGE1} ? trim(`realpath ../mdk-stage1/stage1`) : ""; + my $init_binary = $ENV{USE_LOCAL_STAGE1} ? trim(`realpath ../mdk-stage1/init`) : ""; my ($ext) = $img =~ /rdz-(.*)/ or die "bad initrd name ($img)"; + my $modules = " mgainstaller "; + my $drivers = `perl ../kernel/modules.pl list_needed_modules $kernel | xargs`; + my $fakedrivers = `perl ../kernel/modules.pl list_fake_modules $kernel | xargs`; - _ "rm -rf $tmp_initrd"; - mkdir_p("$tmp_initrd$_") foreach qw(/etc /firmware /lib /modules /sbin /tmp /var); - symlink "../modules", "$tmp_initrd/lib/modules"; - symlink "../firmware", "$tmp_initrd/lib/firmware"; - - symlink "/proc/mounts", "$tmp_initrd/etc/mtab"; - symlink "../tmp", "$tmp_initrd/var/run"; - _ "install -D /usr/share/terminfo/l/linux $tmp_initrd/usr/share/terminfo/l/linux"; - foreach ('pcitable', 'usbtable') { - _ "install -D /usr/share/ldetect-lst/$_.gz $tmp_initrd/usr/share/ldetect-lst/$_.gz"; - } - _ "install -D /usr/share/pci.ids $tmp_initrd/usr/share/pci.ids"; - foreach ("dkms-modules.alias", "fallback-modules.alias", "/lib/module-init-tools/ldetect-lst-modules.alias") { - my $file = m!^/! ? $_ : "/usr/share/ldetect-lst/$_"; - _ "install -D $file $tmp_initrd$file"; - } - foreach my $firm (glob_("all.kernels$I/$ext/firmware/*")) { - my $dest=$firm; - $dest =~ s|all.kernels$I/$ext/||; - _ "cp -a $firm $tmp_initrd/$dest"; - } - - _ "install $stage1_root/init $tmp_initrd/"; - _ "install $stage1_root/stage1 $tmp_initrd/sbin/"; - foreach ('pppd', 'pppoe') { - _ "install /usr/sbin/${_}-diet $tmp_initrd/sbin/$_"; - } - - if ($arch !~ /ppc|ia64/) { - mkdir_p("$tmp_initrd/etc/pcmcia"); - _ "cp -a /etc/pcmcia/config.opts $tmp_initrd/etc/pcmcia"; - } - { - my $modz = "all.kernels$I/$ext"; - mkdir_p("$tmp_initrd/modules/$ext"); - __ "tar xC $tmp_initrd/modules/$ext -f $modz/${type}_modules.tar"; - _ "cp -f $modz/modules.$_ $tmp_initrd/modules/$ext" foreach qw(order builtin); - substInFile { s,.*/,, } "$tmp_initrd/modules/$ext/modules.order"; - _ "depmod -b $tmp_initrd $ext"; - # depmod keeps only available modules in modules.alias, but we want them all - _ "cp -f $modz/modules.alias $modz/modules.description $tmp_initrd/modules/$ext"; - } - mkdir_p("$tmp_initrd/$_") foreach qw(dev proc sys var/tmp tmp/stage2); - # ka deploy need some files in all.rdz if ($ENV{DEBUGSTAGE1} || $ENV{BUILD_KA}) { - symlink("/sbin", "$tmp_initrd/bin"); - cp_af("/bin/busybox.static", "$tmp_initrd/sbin/busybox"); - my @funct = map { /functions:/ .. /^$/ ? do { s/\s//g; split /,/ } : () } `busybox.static`; - shift @funct; - symlink('busybox', $tmp_initrd . "/sbin/$_") foreach @funct; - } - if ($ENV{BUILD_KA}) { - mkdir_p("$tmp_initrd/ka"); - cp_af("/usr/bin/ka-d-client", "$tmp_initrd/ka/ka-d-client"); + $modules="$modules busybox "; } + $modules="$modules mgakadeploy " if ($ENV{BUILD_KA}); - _ "(cd $tmp_initrd; find . | cpio -o -c --quiet) | xz --check=crc32 --lzma2=dict=512KiB > $img"; - _ "rm -rf $tmp_initrd"; + mkdir_p("build/dracut.conf.d"); + # TODO if --nofscks and --no-hostonly are switched, dracut gives an error - fix or report upstream + __ "DRAKX_STAGE1_BINARY=$stage1_binary DRAKX_INIT_BINARY=$init_binary DRAKX_FAKE_MODULES='$fakedrivers' dracut --conf dracut.conf --confdir ./build/dracut.conf.d --add ' $modules ' --add-drivers ' $drivers ' '$img' '$kernel'"; + chmod(0644, $img); } + sub entries_append { my ($type) = @_; @@ -220,7 +180,7 @@ sub entries_append { vgahi => "vga=791", text => "text", # patch => "patch $default_vga", - rescue => "rescue", + rescue => "audit=0 rescue", ); my @entries = ( (map { $_->[0] => "$automatic$default_acpi $_->[1]" } group_by2(@simple_entries)), @@ -252,17 +212,17 @@ sub remove_ending_zero { } sub boot_img_i386 { - my ($type, $I, $img, $kernel) = @_; + my ($type, $I, $img, $kernel, $vmlinuz) = @_; _ "rm -rf $tmp_mnt"; mkdir $tmp_mnt; - _ "cat $kernel > $tmp_mnt/vmlinuz"; + _ "cat $vmlinuz > $tmp_mnt/vmlinuz"; output("$tmp_mnt/help.msg", syslinux_msg('help.msg.xml')); output("$tmp_mnt/advanced.msg", syslinux_msg('advanced.msg.xml')); (my $rdz = $img) =~ s/\.img/.rdz/; (my $initrd_type = $type) =~ s/-changedisk//; - initrd($initrd_type, $I, $rdz); + initrd($initrd_type, $I, $rdz, $kernel); my $short_type = substr($type, 0, 8); output("$tmp_mnt/syslinux.cfg", @@ -287,7 +247,7 @@ sub boot_img_i386 { sub boot_img_x86_64 { &boot_img_i386 } sub boot_img_alpha { - my ($type, $I, $img) = @_; + my ($type, $I, $img, $kernel, $_vmlinuz) = @_; __ "$sudo umount $tmp_mnt 2>/dev/null"; _ "dd if=/dev/zero of=$img bs=1k count=1440"; @@ -295,7 +255,7 @@ sub boot_img_alpha { _ "/sbin/e2writeboot $img /boot/bootlx"; _ "$sudo mount -t ext2 $img $tmp_mnt -o loop"; _ "cp -f vmlinux.gz $tmp_mnt"; - -f "$type.rdz" ? _ "cp -f $type.rdz $tmp_mnt" : initrd($type, $I, "$tmp_mnt/$type.rdz"); + -f "$type.rdz" ? _ "cp -f $type.rdz $tmp_mnt" : initrd($type, $I, "$tmp_mnt/$type.rdz", $kernel); mkdir "$tmp_mnt/etc", 0777; output("$tmp_mnt/etc/aboot.conf", @@ -307,14 +267,14 @@ sub boot_img_alpha { } sub boot_img_ia64 { - my ($type, $_I, $img, $kernel) = @_; + my ($type, $_I, $img, $kernel, $vmlinuz) = @_; my $rdz = $img; $rdz =~ s/\.img/.rdz/; __ "$sudo umount $tmp_mnt 2>/dev/null"; _ "dd if=/dev/zero of=$img bs=1k count=16384"; _ "mkdosfs $img"; _ "$sudo mount -t vfat $img $tmp_mnt -o loop,umask=000"; - _ "$sudo cp -f $kernel $tmp_mnt/vmlinux"; + _ "$sudo cp -f $vmlinuz $tmp_mnt/vmlinux"; _ "cp -f $rdz $tmp_mnt/$type.rdz"; _ "$sudo cp -f tools/ia64/elilo.efi $tmp_mnt"; output("$tmp_mnt/elilo.conf", qq( @@ -338,7 +298,7 @@ image=vmlinux } sub boot_img_sparc { - my ($type, $I, $_img) = @_; + my ($type, $I, $_img, $kernel, $_vmlinuz) = @_; if ($type =~ /^live(.*)/) { #- hack to produce directly into /export the needed file for cdrom boot. my $dir = "/export"; @@ -347,7 +307,7 @@ sub boot_img_sparc { _ "mkdir -p $dir/$boot"; _ "cp -f /boot/cd.b /boot/second.b $dir/$boot"; _ "cp -f vmlinux$1 $dir/$boot/vmlinux$1"; - -f "live$1.rdz" ? _ "cp -f live$1.rdz $dir/$boot" : initrd($type, $I, "$dir/$boot/live$1.rdz"); + -f "live$1.rdz" ? _ "cp -f live$1.rdz $dir/$boot" : initrd($type, $I, "$dir/$boot/live$1.rdz", $kernel); output("$dir/$boot/silo.conf", qq( partition=1 @@ -427,7 +387,7 @@ To Build a Bootable CD-ROM, try: my $setarch = $1 ? "sparc64" : "sparc32"; _ "mkdir -p $dir/$boot"; - -f "$type.rdz" or initrd($type, $I, "$type.rdz"); + -f "$type.rdz" or initrd($type, $I, "$type.rdz", $kernel); _ "cp -f vmlinux$1.aout $dir/$boot/$type.img"; _ "$setarch kernel$1/src/arch/sparc$1/boot/piggyback $dir/$boot/$type.img kernel$1/boot/System.map $type.rdz"; } elsif ($type =~ /^tftp(.*)/) { @@ -443,7 +403,7 @@ To Build a Bootable CD-ROM, try: _ "mkdir -p $dir"; _ "cp -f /boot/fd.b /boot/second.b $dir"; _ "cp -f vmlinuz$I $dir/vmlinux$I.gz"; - -f "$type.rdz" ? _ "cp -f $type.rdz $dir" : initrd($type, $I, "$dir/$type.rdz"); + -f "$type.rdz" ? _ "cp -f $type.rdz $dir" : initrd($type, $I, "$dir/$type.rdz", $kernel); output("$dir/boot.msg", " Welcome to Mageia $ENV{DISTRIB_VERSION} @@ -474,16 +434,16 @@ image=/vmlinux$I.gz } sub boot_img_ppc { - my ($_type, $I, $_img, $_kernel) = @_; + my ($_type, $I, $_img, $kernel, $_vmlinuz) = @_; foreach (glob("all.kernels/*")) { my $ext = basename($_); if ($ext =~ /legacy/) { - initrd("all", $I, "images/all.rdz-$ext"); + initrd("all", $I, "images/all.rdz-$ext", $kernel); _ "mv images/all.rdz-$ext images/all.rdz-legacy"; _ "cp $_/vmlinuz images/vmlinux-legacy"; } elsif ($ext =~ /2.6/) { - initrd("all", $I, "images/all.rdz-$ext"); + initrd("all", $I, "images/all.rdz-$ext", $kernel); _ "mv images/all.rdz-$ext images/all.rdz"; _ "cp $_/vmlinuz images/vmlinux"; } @@ -696,9 +656,9 @@ sub syslinux_all_files { $default_vga =~ /788/ or die 'we rely on vga=788 for bootsplash'; each_index { - mkdir "$dir/alt$::i", 0777; + mkdir "$dir/$arch", 0777; _ "cp all.kernels/$_/vmlinuz $dir/$arch"; - initrd('all', '', "images/all.rdz-$_"); + initrd('all', '', "images/all.rdz-$_", $_); rename("images/all.rdz-$_", "$dir/$arch/all.rdz"); } @$kernels; @@ -715,9 +675,15 @@ sub isolinux { syslinux_all_files('isolinux', $kernels); - _ "cp $isolinux_bin ../isolinux/isolinux.bin"; - _ "cp /usr/lib/syslinux/gfxboot.c32 ../isolinux/gfxboot.c32"; - output("../isolinux/isolinux.cfg", syslinux_cfg_all('cdrom', 1)); + _ "cp $isolinux_bin isolinux/isolinux.bin"; + _ "cp /usr/lib/syslinux/ifcpu.c32 isolinux/ifcpu.c32"; + _ "cp /usr/lib/syslinux/ldlinux.c32 isolinux/ldlinux.c32"; + _ "cp /usr/lib/syslinux/libcom32.c32 isolinux/libcom32.c32"; + _ "cp /usr/lib/syslinux/libgpl.c32 isolinux/libgpl.c32"; + _ "cp /usr/lib/syslinux/libmenu.c32 isolinux/libmenu.c32"; + _ "cp /usr/lib/syslinux/libutil.c32 isolinux/libutil.c32"; + _ "cp /usr/lib/syslinux/gfxboot.c32 isolinux/gfxboot.c32"; + output("isolinux/isolinux.cfg", syslinux_cfg_all('cdrom', 1)); xbox_stage1() if arch() =~ /i.86/; } @@ -729,7 +695,7 @@ sub xbox_stage1() { eval { rm_rf($dir) }; mkdir_p($dir); _ "cp all.kernels/$xbox_kernel/vmlinuz $dir"; - initrd('all', '', "images/all.rdz-$xbox_kernel"); + initrd('all', '', "images/all.rdz-$xbox_kernel", $xbox_kernel); rename("images/all.rdz-$xbox_kernel", "$dir/initrd"); _ "cp /usr/share/cromwell/xromwell-installer.xbe $dir/default.xbe"; @@ -748,7 +714,13 @@ sub boot_iso { output('.boot_iso/VERSION', VERSION($kernels)); # for the boot iso, use standard isolinux - _ "cp /usr/lib/syslinux/isolinux.bin .boot_iso/isolinux/isolinux.bin"; + _ "cp $isolinux_bin .boot_iso/isolinux/isolinux.bin"; + _ "cp /usr/lib/syslinux/ifcpu.c32 .boot_iso/isolinux/ifcpu.c32"; + _ "cp /usr/lib/syslinux/ldlinux.c32 .boot_iso/isolinux/ldlinux.c32"; + _ "cp /usr/lib/syslinux/libcom32.c32 .boot_iso/isolinux/libcom32.c32"; + _ "cp /usr/lib/syslinux/libgpl.c32 .boot_iso/isolinux/libgpl.c32"; + _ "cp /usr/lib/syslinux/libmenu.c32 .boot_iso/isolinux/libmenu.c32"; + _ "cp /usr/lib/syslinux/libutil.c32 .boot_iso/isolinux/libutil.c32"; my $with_gfxboot = 0; _ "cp /usr/share/gfxboot/themes/Mageia/install/* .boot_iso/isolinux" if $with_gfxboot; @@ -758,6 +730,10 @@ sub boot_iso { output('.boot_iso/isolinux/isolinux.cfg', syslinux_cfg_all('', $with_gfxboot)); + if ($ENV{BOOT_AUTOMATIC_METHOD}) { + _ "sed -i 's#\\(append .*\\)\\(splash quiet\\|rescue\\)\$#\\1\\2 automatic=$ENV{BOOT_AUTOMATIC_METHOD}#' .boot_iso/isolinux/isolinux.cfg" + } + _ "genisoimage -r -f -J -cache-inodes -V 'Mga Boot ISO' -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o $iso .boot_iso"; _ "isohybrid -o 1 $iso"; rm_rf('.boot_iso'); diff --git a/images/update_kernel b/images/update_kernel index 934f5195e..a16513eac 100755 --- a/images/update_kernel +++ b/images/update_kernel @@ -15,18 +15,14 @@ use list_modules; my $rpm = 'rpm --nosignature'; -@ARGV or die "usage: ./update_kernel [--move] (<kernel rpm> ... | <installed kernel name> ...)\n"; +@ARGV or die "usage: ./update_kernel <installed kernel name> ...\n"; eval { rm_rf('all.kernels') }; #- remove old things mkdir 'all.kernels'; my @kernels = map { my $kern_ver = rpm2version($_); - if (/\.rpm$/) { - extract_kernel($_, $kern_ver); - } else { extract_installed_rpm('', $kern_ver); - } $kern_ver; } @ARGV; @@ -41,40 +37,10 @@ sub rpm2version { `$rpm $opt $kernel_rpm` =~ m!/boot/vmlinuz-(.*)! && $1 or die "can't find vmlinuz in $kernel_rpm (is it installed?)\n"; } -sub extract_kernel { - my ($kernel_rpm, $kern_ver) = @_; - - my $dir = "all.kernels/$kern_ver"; - - warn "Extracting kernel $kern_ver\n"; - - eval { rm_rf($dir) }; - mkdir_p("$dir/modules"); - sys("rpm2cpio $kernel_rpm | (cd $dir ; cpio -id)"); - - extract_installed_rpm($dir, $kern_ver); - - eval { rm_rf("$dir$_") } foreach qw(/boot /lib /usr); -} - sub extract_installed_rpm { my ($installed_dir, $kern_ver) = @_; my $local_dir = "all.kernels/$kern_ver"; - mkdir_p("$local_dir/modules"); + mkdir_p("$local_dir"); sys('cp', "$installed_dir/boot/vmlinuz-$kern_ver", "$local_dir/vmlinuz"); - sys("cp $installed_dir/lib/modules/$kern_ver/modules.* $local_dir"); - - open(my $F, "find $installed_dir/lib/modules/$kern_ver -name '*.ko.?z' |"); - my $file; while ($file = <$F>) { - chomp($file); - system('cp', $file, "$local_dir/modules/" . basename($file)) == 0 - or warn "conflict for $file\n"; - } - - sys('perl', '../kernel/modules.pl', 'remove_unneeded_modules', $kern_ver); - sys('perl', '../kernel/modules.pl', 'get_firmwares', $kern_ver); - sys('perl', '../kernel/modules.pl', 'make_modules_per_image', $kern_ver); - - rm_rf("$local_dir/modules"); } |