diff options
Diffstat (limited to 'perl-install')
-rw-r--r-- | perl-install/Xconfigurator.pm | 2 | ||||
-rw-r--r-- | perl-install/fsedit.pm | 2 | ||||
-rw-r--r-- | perl-install/install2.pm | 3 | ||||
-rw-r--r-- | perl-install/raid.pm | 21 |
4 files changed, 23 insertions, 5 deletions
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; |