diff options
Diffstat (limited to 'perl-install/fs/dmcrypt.pm')
-rw-r--r-- | perl-install/fs/dmcrypt.pm | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/perl-install/fs/dmcrypt.pm b/perl-install/fs/dmcrypt.pm index e2d67b37a..0b9c58337 100644 --- a/perl-install/fs/dmcrypt.pm +++ b/perl-install/fs/dmcrypt.pm @@ -16,10 +16,8 @@ sub _crypttab() { "$::prefix/etc/crypttab" } sub init() { whereis_binary('cryptsetup') or die "cryptsetup not installed"; - eval { modules::load('dm-crypt', 'cbc', 'sha256_generic', arch() =~ /i.86/ ? 'aes-i586' : 'aes') }; + eval { modules::load('dm-crypt', 'cbc', 'sha256_generic', if_(arch() =~ /i.86/, 'aes-i586'), if_( arch() =~ /x86_64/, 'aes-x86_64'), 'aes_generic') }; devices::init_device_mapper(); - if ($::isInstall) { - } 1; } my $initialized; @@ -80,6 +78,7 @@ sub open_part { _run_or_die('luksOpen', devices::make($part->{device}), $part->{dm_name}, '--key-file', $_[0]); }); + run_program::run('udevadm', 'settle') unless $::isInstall; my $active_dmcrypt = _parse_dmsetup_table($part->{dm_name}, run_program::get_stdout('dmsetup', 'table', $part->{dm_name})); @@ -110,8 +109,11 @@ sub get_existing { sub _get_existing_one { my ($fstab, $active_dmcrypt) = @_; + my $p = fs::wild_device::to_subpart("/dev/mapper/$active_dmcrypt->{name}"); + my $part = { device => "mapper/$active_dmcrypt->{name}", size => $active_dmcrypt->{size}, - options => 'noatime', dmcrypt_name => $active_dmcrypt->{name} }; + options => 'noatime', dmcrypt_name => $active_dmcrypt->{name}, + major => $p->{major}, minor => $p->{minor} }; if (my $raw_part = find { fs::get::is_same_hd($active_dmcrypt, $_) } @$fstab) { $part->{rootDevice} = $raw_part->{device}; @@ -126,7 +128,7 @@ sub _get_existing_one { } fs::type::set_isFormatted($part, to_bool($part->{fs_type})); - $part->{fs_type} or fs::type::set_fs_type($part, 'ext3'); + $part->{fs_type} or fs::type::set_fs_type($part, defaultFS()); log::l("dmcrypt: found $part->{device} type $part->{fs_type} with rootDevice $part->{rootDevice}"); @@ -146,7 +148,7 @@ sub _parse_dmsetup_table { } sub active_dm() { - run_program::run('udevadm', 'settle'); + run_program::run('udevadm', 'settle') unless $::isInstall; map { my $name = s/(.*?):\s*// && $1; |