summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/TODO2
-rw-r--r--perl-install/Xconfigurator.pm2
-rw-r--r--perl-install/fsedit.pm2
-rw-r--r--perl-install/install2.pm3
-rw-r--r--perl-install/raid.pm21
5 files changed, 25 insertions, 5 deletions
diff --git a/docs/TODO b/docs/TODO
index 1ae073830..f43eaf8cb 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -39,6 +39,8 @@ suggested partition tables must be better foreach installClass
(done,pix)ask for more than the memory size detected
--------------------------------------------------------------------------------
+call kudzu in batch to initialize its list
+
XFdrake chooseResolutions with ask_from_list do not permit ``Show all''
have a better time estimation of the remaining time in install packages
diff --git a/perl-install/Xconfigurator.pm b/perl-install/Xconfigurator.pm
index 2e13138fa..16520e10f 100644
--- a/perl-install/Xconfigurator.pm
+++ b/perl-install/Xconfigurator.pm
@@ -714,7 +714,7 @@ sub main {
my ($o, $allowFB);
($prefix, $o, $in, $allowFB, $install) = @_;
$o ||= {};
-
+
XF86check_link();
{
diff --git a/perl-install/fsedit.pm b/perl-install/fsedit.pm
index a0c019c52..dec35b258 100644
--- a/perl-install/fsedit.pm
+++ b/perl-install/fsedit.pm
@@ -162,7 +162,7 @@ sub has_mntpoint($$) {
sub check_mntpoint {
my ($mntpoint, $hd, $part, $hds) = @_;
- $mntpoint eq '' || isSwap($part) and return;
+ $mntpoint eq '' || isSwap($part) || isRAID($part) and return;
local $_ = $mntpoint;
m|^/| or die _("Mount points must begin with a leading /");
diff --git a/perl-install/install2.pm b/perl-install/install2.pm
index d64272c97..71def4178 100644
--- a/perl-install/install2.pm
+++ b/perl-install/install2.pm
@@ -21,6 +21,7 @@ use keyboard;
use lilo;
use mouse;
use fs;
+use raid;
use timezone;
use fsedit;
use devices;
@@ -325,7 +326,7 @@ sub formatPartitions {
home mnt tmp var var/tmp var/lib var/lib/rpm);
mkdir "$o->{prefix}/$_", 0700 foreach qw(root);
- eval { commands::cp("-f", "/etc/raidtab", "$o->{prefix}/etc/raidtab") } if !is_empty_hash_ref($o->{raid});
+ raid::prepare_prefixed($o->{raid}, $o->{prefix});
}
#------------------------------------------------------------------------------
diff --git a/perl-install/raid.pm b/perl-install/raid.pm
index 8b4fb4c8e..5ee6f9c9d 100644
--- a/perl-install/raid.pm
+++ b/perl-install/raid.pm
@@ -27,12 +27,15 @@ sub new($$) {
my $nb = @$raid;
$raid->[$nb] = { 'chunk-size' => "64k", type => 0x83, disks => [ $part ], device => "md$nb", notFormatted => 1 };
$part->{raid} = $nb;
+ delete $part->{mntpoint};
+ $nb;
}
sub add($$$) {
my ($raid, $part, $nb) = @_; $nb = nb($nb);
$raid->[$nb]{isMounted} and die _("Can't add a partition to _formatted_ RAID md%d", $nb);
$part->{raid} = $nb;
+ delete $part->{mntpoint};
push @{$raid->[$nb]{disks}}, $part;
}
@@ -40,6 +43,7 @@ sub delete($$) {
my ($raid, $nb) = @_;
$nb = nb($nb);
+ run_program::run("raidstop", devices::make($raid->[$nb]{device}));
delete $_->{raid} foreach @{$raid->[$nb]{disks}};
$raid->[$nb] = undef;
}
@@ -109,8 +113,8 @@ chunk-size $_->{'chunk-size'}
persistent-superblock 1
EOF
print F "nr-raid-disks ", int @{$_->{disks}};
- map_index {
- print F " device /dev/$_->{device}";
+ map_index {
+ print F " device ", devices::make($_->{device});
print F " raid-disk $::i";
} @{$_->{disks}};
}
@@ -130,6 +134,9 @@ sub format_part($$) {
my ($raid, $part) = @_;
make($raid->{raid}, $part) if is($part);
fs::format_part($part);
+ if (is($part)) {
+ $_->{isFormatted} = 1 foreach @{$part->{disks}};
+ }
}
sub verify($) {
@@ -140,4 +147,14 @@ sub verify($) {
}
}
+sub prepare_prefixed($$) {
+ my ($raid, $prefix) = @_;
+ $raid && $raid->{raid} or return;
+
+ eval { commands::cp("-f", "/etc/raidtab", "$prefix/etc/raidtab") };
+ foreach (@{$raid->{raid}}) {
+ devices::make("$prefix/dev/$_->{device}") foreach @{$_->{disks}};
+ }
+}
+
1;