diff options
Diffstat (limited to 'perl-install/fs/any.pm')
-rw-r--r-- | perl-install/fs/any.pm | 44 |
1 files changed, 21 insertions, 23 deletions
diff --git a/perl-install/fs/any.pm b/perl-install/fs/any.pm index 65ca02403..bd5f99b7e 100644 --- a/perl-install/fs/any.pm +++ b/perl-install/fs/any.pm @@ -1,4 +1,4 @@ -package fs::any; # $Id: any.pm 269745 2010-06-02 11:21:42Z pterjan $ +package fs::any; use diagnostics; use strict; @@ -6,6 +6,7 @@ use strict; use common; use fsedit; use fs::mount_point; +use run_program; sub get_hds { my ($all_hds, $fstab, $manual_fstab, $partitioning_flags, $skip_mtab, $o_in) = @_; @@ -58,8 +59,7 @@ sub set_cdrom_symlink { my $alias = basename($_->{mntpoint}) or next; log::l("using alias $alias for $_->{device}"); $_->{device_alias} = $alias; - symlink($_->{device}, "/dev/$alias") if $::prefix; # do create the symlink to have it during install (otherwise fs::wild_device::from_part will give a non accessible device) - symlink($_->{device}, "$::prefix/dev/$alias"); + symlink($_->{device}, "/dev/$alias"); } } @@ -67,12 +67,8 @@ sub check_hds_boot_and_root { my ($all_hds, $fstab) = @_; fs::get::root_($fstab) or die "Oops, no root partition"; - if (arch() =~ /ppc/ && detect_devices::get_mac_generation() =~ /NewWorld/) { - die "Need bootstrap partition to boot system!" if !(defined $partition_table::mac::bootstrap_part); - } - - if (arch() =~ /ia64/ && !fs::get::has_mntpoint("/boot/efi", $all_hds)) { - die N("You must have a FAT partition mounted in /boot/efi"); + if (is_uefi() && !fs::get::has_mntpoint("/boot/EFI", $all_hds)) { + die N("You must have a ESP FAT32 partition mounted in /boot/EFI"); } } @@ -81,28 +77,24 @@ sub create_minimal_files() { qw(dev etc etc/profile.d etc/rpm etc/sysconfig etc/sysconfig/console etc/sysconfig/network-scripts etc/sysconfig/console/consolefonts etc/sysconfig/console/consoletrans - home mnt tmp var var/tmp var/lib var/lib/rpm var/lib/urpmi); + home mnt run tmp var var/tmp var/lib var/lib/rpm var/lib/urpmi); mkdir "$::prefix/$_", 0700 foreach qw(root root/tmp root/drakx); - - devices::make("$::prefix/dev/null"); - chmod 0666, "$::prefix/dev/null"; } -sub prepare_minimal_root { - my ($all_hds) = @_; +sub prepare_minimal_root() { - fs::any::create_minimal_files(); + create_minimal_files(); + # ensure we've all needed devices, for bootloader install and mkinitrd: + run_program::run('mount', '--bind', '/dev', "$::prefix/dev"); + run_program::run('mount', '--bind', '/run', "$::prefix/run"); eval { fs::mount::mount('none', "$::prefix/proc", 'proc') }; eval { fs::mount::mount('none', "$::prefix/sys", 'sysfs') }; - eval { fs::mount::usbfs($::prefix) }; - - # copy all needed devices, for bootloader install and mkinitrd - cp_af("/dev", "$::prefix"); + eval { fs::mount::sys_kernel_debug($::prefix) }; } -sub getAvailableSpace { - my ($fstab, $o_skip_mounted) = @_; +sub getNeededMinSpace { + my ($n) = @_; #- make sure of this place to be available for installation, this could help a lot. #- currently doing a very small install use 36Mb of postinstall-rpm, but installing @@ -110,9 +102,15 @@ sub getAvailableSpace { #- 65mb may be a good choice to avoid almost all problem of insuficient space left... my $minAvailableSize = 65 * sqr(1024); + max(0.1 * $n, $minAvailableSize); +} + +sub getAvailableSpace { + my ($fstab, $o_skip_mounted, $o_skip_min_space) = @_; + my $n = !$::testing && !$o_skip_mounted && getAvailableSpace_mounted($::prefix) || getAvailableSpace_raw($fstab) * 512 / 1.07; - $n - max(0.1 * $n, $minAvailableSize); + $o_skip_min_space ? $n : $n - getNeededMinSpace($n); } sub getAvailableSpace_mounted { |