summaryrefslogtreecommitdiffstats
path: root/perl-install/modules
Commit message (Expand)AuthorAgeFilesLines
* (config_window) remove empty module parameter instead of writing them (#40581)Thierry Vignaud2009-02-251-2/+3
* (wait_load_module) add a less generic title (instead of "Please wait")Thierry Vignaud2008-09-111-1/+1
* harddrake: allow to set zero values in module options (#26515)Olivier Blin2008-01-021-1/+1
* make modules::*::get_above return a list, and thus fix loading of tifm_sd mod...Olivier Blin2007-09-162-2/+2
* re-sync after the big svn lossPascal Rigaux2007-04-253-52/+15
* (config_window) properly report no configurable parameter (#17579)Thierry Vignaud2005-10-061-4/+4
* (read_raw) explain (ie add comments)Thierry Vignaud2005-10-031-0/+2
* (remove_module) better written this wayThierry Vignaud2005-09-071-3/+5
* (remove_module) prevent wiping /etc/modprobe.preload if module isThierry Vignaud2005-09-071-0/+1
* - move functions using /proc/partitions out of fsedit to fs::proc_partitionsPascal Rigaux2005-06-101-2/+2
* don't need prefixing with current packagePascal Rigaux2005-06-091-2/+2
* read in existing modprobe.conf on upgrade (bugzilla #13309)Pascal Rigaux2005-06-021-1/+9
* (load_category__prompt_for_more) enable one to load ide drivers if neededThierry Vignaud2005-03-251-1/+1
* (remove_module) handle removal of cards (#7049)Thierry Vignaud2005-02-141-0/+4
* (load_category__prompt_for_more)Thierry Vignaud2005-01-201-1/+1
* move SATA in its own categoryThierry Vignaud2005-01-201-1/+1
* a somewhat nicer message when loading a modulePascal Rigaux2005-01-031-6/+17
* better english (writing style rather than spoken one)Thierry Vignaud2004-12-131-1/+1
* ensure that explanations go into /var/log/explanations is standalone modeThierry Vignaud2004-11-251-7/+7
* (load_category__prompt) fix spacing in module listThierry Vignaud2004-09-151-1/+2
* when installing on kernel 2.4, do generate a valid modprobe.conf anywayPascal Rigaux2004-09-072-2/+11
* really parse modules file according to its type when reading it (always call ...Olivier Blin2004-08-243-13/+19
* perl_checker compliancePascal Rigaux2004-08-102-2/+2
* internally keep module names according to what we configure (and our kernel, ...Pascal Rigaux2004-08-103-18/+48
* perl_checker enhancementPascal Rigaux2004-07-221-1/+1
* add $IdPascal Rigaux2004-07-223-3/+3
* modules::modprobe_conf now works (at least a little :)Pascal Rigaux2004-07-223-91/+223
* - %modules::conf is no more a global, so many functions need passing $modules...Pascal Rigaux2004-07-214-16/+281
* modules::mergein_conf() doesn't need to be given /etc/modules.confPascal Rigaux2004-07-071-1/+1
* (load_category__prompt_for_more) do not list probed category in detected hard...Thierry Vignaud2004-02-231-1/+1
* (load_category__prompt_for_more) show quotes around detected hardware in orderThierry Vignaud2004-02-231-1/+1
* don't have a wait_message above another empty wait_message when probing hardwarePascal Rigaux2004-02-131-1/+1
* (config_window) do not even try to hint the user about the parameterThierry Vignaud2004-02-031-1/+2
* (parameters) fix modinfo parsing (format had been altered betweenThierry Vignaud2004-02-031-1/+5
* help perl_checkerPascal Rigaux2004-01-221-0/+1
* kernel 2.6 .ko adaptationPascal Rigaux2004-01-201-2/+1
* write_conf() doesn't need $prefix anymorePascal Rigaux2004-01-051-1/+1
* minor cleanupThierry Vignaud2003-10-171-1/+1
* if some module has no parameter, instead of not displaying the configThierry Vignaud2003-09-111-1/+5
* translate one more stringThierry Vignaud2003-09-111-1/+1
* do translate choices N_("Yes"), N_("No"), N_("See hardware info")Pascal Rigaux2003-08-191-1/+1
* full pci probe does not freeze anymore, removing code work-arounding the freezePascal Rigaux2003-08-191-1/+0
* fix BUG 2530, no more spurious window when insmoding failDamien Chaumette2003-05-201-1/+2
* new perl_checker compliancePascal Rigaux2003-04-171-4/+4
* join detect_devices::stringlist() to have it in a text box (eurk!)Pascal Rigaux2003-02-251-1/+1
* - set_help is deprecatedPascal Rigaux2003-02-131-1/+4
* use run_program::get_stdoutPascal Rigaux2003-02-031-3/+1
* pixelize(tm)Thierry Vignaud2003-02-031-3/+1
* (load_category__prompt_for_more): cleanup, propose "See hardware info" in any...Pascal Rigaux2003-01-231-3/+2
* English proofreading by Stew BenedictsPablo Saratxaga2003-01-211-2/+2
class="hl num">1; } sub partitionWizardSolutions { my ($o, $all_hds) = @_; my $hds = $all_hds->{hds}; my $fstab = [ fsedit::get_all_fstab($all_hds) ]; my @wizlog; my (%solutions); my $min_linux = 400 << 11; my $max_linux = 2000 << 11; my $min_swap = 50 << 11; my $max_swap = 300 << 11; my $min_freewin = 100 << 11; # each solution is a [ score, text, function ], where the function retunrs true if succeeded my @hds_rw = grep { !$_->{readonly} } @$hds; my @hds_can_add = grep { $_->can_raw_add } @hds_rw; if (fsedit::free_space(@hds_can_add) > $min_linux) { $solutions{free_space} = [ 20, N("Use free space"), sub { fsedit::auto_allocate($all_hds); 1 } ] } else { push @wizlog, N("Not enough free space to allocate new partitions") . ": " . (@hds_can_add ? fsedit::free_space(@hds_can_add) . " < $min_linux" : "no harddrive on which partitions can be added"); } if (my @truefs = grep { isTrueLocalFS($_) } @$fstab) { #- value twice the ext2 partitions $solutions{existing_part} = [ 6 + @truefs + @$fstab, N("Use existing partitions"), sub { $o->ask_mntpoint_s($fstab) } ] } else { push @wizlog, N("There is no existing partition to use"); } my @fats = grep { isFat($_) } @$fstab; fs::df($_) foreach @fats; if (my @ok_forloopback = sort { $b->{free} <=> $a->{free} } grep { $_->{free} > $min_linux + $min_swap + $min_freewin } @fats) { $solutions{loopback} = [ -10 - @fats, N("Use the Windows partition for loopback"), sub { my ($s_root, $s_swap); my $part = $o->ask_from_listf('', N("Which partition do you want to use for Linux4Win?"), \&partition_table::description, \@ok_forloopback) or return; $max_swap = $min_swap + 1 if $part->{free} - $max_swap < $min_linux; $o->ask_from('', N("Choose the sizes"), [ { label => N("Root partition size in MB: "), val => \$s_root, min => $min_linux >> 11, max => min($part->{free} - $max_swap, $max_linux) >> 11, type => 'range' }, { label => N("Swap partition size in MB: "), val => \$s_swap, min => $min_swap >> 11, max => $max_swap >> 11, type => 'range' }, ]) or return; push @{$part->{loopback}}, { type =>0x483, loopback_file => '/lnx4win/linuxsys.img', mntpoint => '/', size => $s_root << 11, loopback_device => $part, notFormatted => 1 }, { type => 0x82, loopback_file => '/lnx4win/swapfile', mntpoint => 'swap', size => $s_swap << 11, loopback_device => $part, notFormatted => 1 }; fsedit::recompute_loopbacks($all_hds); 1; } ]; } else { push @wizlog, N("There is no FAT partition to use as loopback (or not enough space left)") . (@fats ? "\nFAT partitions:" . join('', map { "\n $_->{device} $_->{free} (" . ($min_linux + $min_swap + $min_freewin) . ")" } @fats) : ''); } if (my @ok_for_resize_fat = grep { isFat_or_NTFS($_) && !fsedit::part2hd($_, $all_hds)->{readonly} } @$fstab) { $solutions{resize_fat} = [ 6 - @ok_for_resize_fat, N("Use the free space on the Windows partition"), sub { my $part = $o->ask_from_listf_raw({ messages => N("Which partition do you want to resize?"), interactive_help_id => 'resizeFATChoose', }, \&partition_table::description, \@ok_for_resize_fat) or return; my $hd = fsedit::part2hd($part, $all_hds); my $resize_fat = eval { my $pkg = isFat($part) ? do { require resize_fat::main; 'resize_fat::main'; } : do { require diskdrake::resize_ntfs; 'diskdrake::resize_ntfs'; }; $pkg->new($part->{device}, devices::make($part->{device})); }; $@ and die N("The FAT resizer is unable to handle your partition, the following error occured: %s", formatError($@)); my $min_win = do { my $_w = $o->wait_message(N("Resizing"), N("Computing the size of the Windows partition")); $resize_fat->min_size; }; #- make sure that even after normalizing the size to cylinder boundaries, the minimun will be saved, #- this save at least a cylinder (less than 8Mb). $min_win += partition_table::raw::cylinder_size($hd); $part->{size} > $min_linux + $min_swap + $min_freewin + $min_win or die N("Your Windows partition is too fragmented. Please reboot your computer under Windows, run the ``defrag'' utility, then restart the Mandrakelinux installation."); $o->ask_okcancel('', formatAlaTeX(N("WARNING! DrakX will now resize your Windows partition. Be careful: this operation is dangerous. If you have not already done so, you first need to exit the installation, run \"chkdsk c:\" from a Command Prompt under Windows (beware, running graphical program \"scandisk\" is not enough, be sure to use \"chkdsk\" in a Command Prompt!), optionally run defrag, then restart the installation. You should also backup your data. When sure, press Ok."))) or return; my $mb_size = $part->{size} >> 11; $o->ask_from('', N("Which size do you want to keep for Windows on"), [ { label => N("partition %s", partition_table::description($part)), val => \$mb_size, min => $min_win >> 11, max => ($part->{size} - $min_linux - $min_swap) >> 11, type => 'range' }, ]) or return; my $oldsize = $part->{size}; $part->{size} = from_Mb($mb_size, $min_win, $part->{size}); $hd->adjustEnd($part); eval { my $_w = $o->wait_message(N("Resizing"), N("Resizing Windows partition")); $resize_fat->resize($part->{size}); }; if (my $err = $@) { $part->{size} = $oldsize; die N("FAT resizing failed: %s", formatError($err)); } $o->ask_warn('', N("To ensure data integrity after resizing the partition(s), filesystem checks will be run on your next boot into Windows(TM)")) if !isFat($part); $part->{isFormatted} = 1; partition_table::will_tell_kernel($hd, resize => $part); #- down-sizing, write_partitions is not needed partition_table::adjust_local_extended($hd, $part); partition_table::adjust_main_extended($hd); fsedit::auto_allocate($all_hds); 1; } ]; } else { push @wizlog, N("There is no FAT partition to resize (or not enough space left)"); } if (@$fstab && @hds_rw) { $solutions{wipe_drive} = [ 10, fsedit::is_one_big_fat_or_NT($hds) ? N("Remove Windows(TM)") : N("Erase entire disk"), sub { my $hd = $o->ask_from_listf_raw({ messages => N("You have more than one hard drive, which one do you install linux on?"), interactive_help_id => 'takeOverHdChoose', }, \&partition_table::description, \@hds_rw) or return; $o->ask_okcancel_({ messages => N("ALL existing partitions and their data will be lost on drive %s", partition_table::description($hd)), interactive_help_id => 'takeOverHdConfirm' }) or return; partition_table::raw::zero_MBR($hd); fsedit::auto_allocate($all_hds); 1; } ]; } if (@hds_rw) { $solutions{diskdrake} = [ 0, N("Custom disk partitioning"), sub { partition_with_diskdrake($o, $all_hds, 'nowizard') } ]; } $solutions{fdisk} = [ -10, N("Use fdisk"), sub { $o->enter_console; foreach (@$hds) { print "\n" x 10, N("You can now partition %s. When you are done, don't forget to save using `w'", partition_table::description($_)); print "\n\n"; my $pid = 0; if (arch() =~ /ppc/) { $pid = fork() or exec "pdisk", devices::make($_->{device}); } else { $pid = fork() or exec "fdisk", devices::make($_->{device}); } waitpid($pid, 0); } $o->leave_console; 0; } ] if $o->{partitioning}{fdisk}; log::l("partitioning wizard log:\n", (map { ">>wizlog>>$_\n" } @wizlog)); %solutions; } sub partitionWizard { my ($o, $b_nodiskdrake) = @_; my %solutions = partitionWizardSolutions($o, $o->{all_hds}); delete $solutions{diskdrake} if $b_nodiskdrake; my @solutions = sort { $b->[0] <=> $a->[0] } values %solutions; my $level = $::expert ? -9999 : 0; my @sol = grep { $_->[0] >= $level } @solutions; log::l('' . "solutions found: " . join('', map { $_->[1] } @sol) . " (all solutions found: " . join('', map { $_->[1] } @solutions) . ")"); @solutions = @sol if @sol > 1; log::l("solutions: ", int @solutions); @solutions or $o->ask_warn('', N("I can't find any room for installing")), die 'already displayed'; log::l('HERE: ', join(',', map { $_->[1] } @solutions)); my $sol; $o->ask_from_({ messages => N("The DrakX Partitioning wizard found the following solutions:"), interactive_help_id => 'doPartitionDisks', }, [ { val => \$sol, list => \@solutions, format => sub { $_[0][1] }, type => 'list' } ]); log::l("partitionWizard calling solution $sol->[1]"); my $ok = eval { $sol->[2]->() }; $@ and $o->ask_warn('', N("Partitioning failed: %s", formatError($@))); $ok or goto &partitionWizard; 1; } sub upNetwork { my ($o, $b_pppAvoided) = @_; my $_w = $o->wait_message('', N("Bringing up the network")); install_steps::upNetwork($o, $b_pppAvoided); } sub downNetwork { my ($o, $b_pppOnly) = @_; my $_w = $o->wait_message('', N("Bringing down the network")); install_steps::downNetwork($o, $b_pppOnly); } 1;