summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/diskdrake/interactive.pm26
-rw-r--r--perl-install/fs.pm31
-rw-r--r--perl-install/install_steps_interactive.pm8
3 files changed, 40 insertions, 25 deletions
diff --git a/perl-install/diskdrake/interactive.pm b/perl-install/diskdrake/interactive.pm
index 8dc8b4179..2656f06b6 100644
--- a/perl-install/diskdrake/interactive.pm
+++ b/perl-install/diskdrake/interactive.pm
@@ -761,7 +761,12 @@ sub Format {
sub Mount {
my ($in, $hd, $part) = @_;
write_partitions($in, $hd) or return;
- fs::mount_part($part);
+ my $w;
+ fs::mount_part($part, sub {
+ my ($msg) = @_;
+ $w ||= $in->wait_message('', $msg);
+ $w->set($msg);
+ });
}
sub Add2RAID {
my ($in, $_hd, $part, $all_hds) = @_;
@@ -866,7 +871,7 @@ sub Loopback {
sub Options {
my ($in, $hd, $part, $all_hds) = @_;
- my @simple_options = qw(user noauto supermount);
+ my @simple_options = qw(user noauto supermount username= password=);
my (undef, $user_implies) = fs::mount_options();
my ($options, $unknown) = fs::mount_options_unpack($part);
@@ -877,7 +882,7 @@ sub Options {
'',
[
(map {
- { label => $_, text => scalar warp_text(formatAlaTeX($help{$_})), val => \$options->{$_},
+ { label => $_, text => scalar warp_text(formatAlaTeX($help{$_})), val => \$options->{$_}, hidden => scalar(/password/),
advanced => !$part->{rootDevice} && !member($_, @simple_options), if_(!/=$/, type => 'bool'), }
} keys %$options),
{ label => N("Various"), val => \$unknown, advanced => 1 },
@@ -1054,10 +1059,12 @@ sub format_ {
write_partitions($in, $_) or return foreach isRAID($part) ? @{$all_hds->{hds}} : $hd;
ask_alldatawillbelost($in, $part, N_("After formatting partition %s, all data on this partition will be lost")) or return;
$part->{isFormatted} = 0; #- force format;
- my $_w = $in->wait_message(N("Formatting"),
- isLoopback($part) ? N("Formatting loopback file %s", $part->{loopback_file}) :
- N("Formatting partition %s", $part->{device}));
- fs::format_part($all_hds->{raids}, $part);
+ my $w;
+ fs::format_part($all_hds->{raids}, sub {
+ my ($msg) = @_;
+ $w ||= $in->wait_message('', $msg);
+ $w->set($msg);
+ });
1;
}
@@ -1198,7 +1205,10 @@ sub format_raw_hd_info {
my $type = substr(type2name($raw_hd->{type}), 0, 40); # limit the length
$info .= N("Type: ") . $type . "\n";
}
- $info .= N("Options: %s", $raw_hd->{options}) if $raw_hd->{options};
+ if (my $s = $raw_hd->{options}) {
+ $s =~ s/password=([^\s,]*)/'password=' . ('x' x length($1))/e;
+ $info .= N("Options: %s", $s);
+ }
$info;
}
diff --git a/perl-install/fs.pm b/perl-install/fs.pm
index 48a66c265..a1758d57c 100644
--- a/perl-install/fs.pm
+++ b/perl-install/fs.pm
@@ -605,13 +605,16 @@ sub real_format_part {
$part->{isFormatted} = 1;
}
sub format_part {
- my ($raids, $part, $prefix) = @_;
+ my ($raids, $part, $prefix, $wait_message) = @_;
if (isRAID($part)) {
+ $wait_message->(N("Formatting partition %s", $part->{device})) if $wait_message;
require raid;
raid::format_part($raids, $part);
} elsif (isLoopback($part)) {
+ $wait_message->(N("Creating and formatting file %s", $part->{loopback_file})) if $wait_message;
loopback::format_part($part, $prefix);
} else {
+ $wait_message->(N("Formatting partition %s", $part->{device})) if $wait_message;
real_format_part($part);
}
}
@@ -628,27 +631,26 @@ sub set_loop {
}
sub formatMount_part {
- my ($part, $raids, $fstab, $prefix, $callback) = @_;
+ my ($part, $raids, $fstab, $prefix, $wait_message) = @_;
if (isLoopback($part)) {
- formatMount_part($part->{loopback_device}, $raids, $fstab, $prefix, $callback);
+ formatMount_part($part->{loopback_device}, $raids, $fstab, $prefix, $wait_message);
}
if (my $p = up_mount_point($part->{mntpoint}, $fstab)) {
- formatMount_part($p, $raids, $fstab, $prefix, $callback) unless loopback::carryRootLoopback($part);
+ formatMount_part($p, $raids, $fstab, $prefix, $wait_message) unless loopback::carryRootLoopback($part);
}
if ($part->{encrypt_key}) {
set_loop($part);
}
if ($part->{toFormat}) {
- $callback->($part) if $callback;
- format_part($raids, $part, $prefix);
+ format_part($raids, $part, $prefix, $wait_message);
}
- mount_part($part, $prefix);
+ mount_part($part, $prefix, 0, $wait_message);
}
sub formatMount_all {
- my ($raids, $fstab, $prefix, $callback) = @_;
- formatMount_part($_, $raids, $fstab, $prefix, $callback)
+ my ($raids, $fstab, $prefix, $wait_message) = @_;
+ formatMount_part($_, $raids, $fstab, $prefix, $wait_message)
foreach sort { isLoopback($a) ? 1 : isSwap($a) ? -1 : 0 } grep { $_->{mntpoint} } @$fstab;
#- ensure the link is there
@@ -664,7 +666,7 @@ sub formatMount_all {
}
sub mount {
- my ($dev, $where, $fs, $rdonly, $options) = @_;
+ my ($dev, $where, $fs, $rdonly, $options, $wait_message) = @_;
log::l("mounting $dev on $where as type $fs, options $options");
-d $where or mkdir_p($where);
@@ -674,6 +676,7 @@ sub mount {
my @fs_modules = qw(vfat hfs romfs ufs reiserfs xfs jfs ext3);
if (member($fs, 'smb', 'smbfs', 'nfs', 'davfs', 'ntfs') && $::isStandalone) {
+ $wait_message->(N("Mounting partition %s", $dev)) if $wait_message;
system('mount', '-t', $fs, $dev, $where, if_($options, '-o', $options)) == 0 or die N("mounting partition %s in directory %s failed", $dev, $where);
return; #- do not update mtab, already done by mount(8)
} elsif (member($fs, 'ext2', 'proc', 'usbdevfs', 'iso9660', @fs_modules)) {
@@ -691,6 +694,7 @@ sub mount {
# if $where =~ m|/(boot)?$|;
$mount_opt = 'notail'; #- notail in any case
} elsif ($fs eq 'jfs' && !$rdonly) {
+ $wait_message->(N("Checking %s", $dev)) if $wait_message;
#- needed if the system is dirty otherwise mounting read-write simply fails
run_program::raw({ timeout => 60 * 60 }, "fsck.jfs", $dev) or do {
my $err = $?;
@@ -698,6 +702,7 @@ sub mount {
};
} elsif ($fs eq 'ext2' || $fs eq 'ext3' && $::isInstall) {
if (!$rdonly) {
+ $wait_message->(N("Checking %s", $dev)) if $wait_message;
foreach ('-a', '-y') {
run_program::raw({ timeout => 60 * 60 }, "fsck.ext2", $_, $dev);
my $err = $?;
@@ -721,6 +726,7 @@ sub mount {
eval { modules::load('isofs') };
}
log::l("calling mount($dev, $where, $fs, $flag, $mount_opt)");
+ $wait_message->(N("Mounting partition %s", $dev)) if $wait_message;
syscall_('mount', $dev, $where, $fs, $flag, $mount_opt) or die N("mounting partition %s in directory %s failed", $dev, $where) . " ($!)";
} else {
log::l("skipping mounting $fs partition");
@@ -742,7 +748,7 @@ sub umount {
}
sub mount_part {
- my ($part, $prefix, $rdonly) = @_;
+ my ($part, $prefix, $rdonly, $wait_message) = @_;
#- root carrier's link can't be mounted
loopback::carryRootCreateSymlink($part, $prefix);
@@ -767,6 +773,7 @@ sub mount_part {
unless ($::testing) {
if (isSwap($part)) {
+ $wait_message->(N("Enabling swap partition %s", $part->{device})) if $wait_message;
swap::swapon($part->{device});
} else {
$part->{mntpoint} or die "missing mount point for partition $part->{device}";
@@ -778,7 +785,7 @@ sub mount_part {
$mntpoint = "/initrd/loopfs";
}
my $dev = $part->{real_device} || $part->{device};
- mount($dev, $mntpoint, type2fs($part), $rdonly, $part->{options});
+ mount($dev, $mntpoint, type2fs($part), $rdonly, $part->{options}, $wait_message);
rmdir "$mntpoint/lost+found";
}
}
diff --git a/perl-install/install_steps_interactive.pm b/perl-install/install_steps_interactive.pm
index 9df720bf9..2ea0cc363 100644
--- a/perl-install/install_steps_interactive.pm
+++ b/perl-install/install_steps_interactive.pm
@@ -332,11 +332,9 @@ sub formatMountPartitions {
my $w;
catch_cdie {
fs::formatMount_all($o->{all_hds}{raids}, $o->{fstab}, $o->{prefix}, sub {
- my ($part) = @_;
- $w ||= $o->wait_message('', N("Formatting partitions"));
- $w->set(isLoopback($part) ?
- N("Creating and formatting file %s", $part->{loopback_file}) :
- N("Formatting partition %s", $part->{device}));
+ my ($msg) = @_;
+ $w ||= $o->wait_message('', $msg);
+ $w->set($msg);
});
} sub {
$@ =~ /fsck failed on (\S+)/ or return;