diff options
Diffstat (limited to 'perl-install/share/po/nl.po')
0 files changed, 0 insertions, 0 deletions
![]() |
index : drakx | |
Mageia Installer and base platform for many utilities | Thierry Vignaud [tv] |
summaryrefslogtreecommitdiffstats |
package any; # $Id$
use diagnostics;
use strict;
#-######################################################################################
#- misc imports
#-######################################################################################
use common;
use detect_devices;
use partition_table;
use fs::type;
use lang;
use run_program;
use devices;
use modules;
use log;
use fs;
use c;
sub facesdir() {
"$::prefix/usr/share/mdk/faces/";
}
sub face2png {
my ($face) = @_;
facesdir() . $face . ".png";
}
sub facesnames() {
my $dir = facesdir();
my @l = grep { /^[A-Z]/ } all($dir);
map { if_(/(.*)\.png/, $1) } (@l ? @l : all($dir));
}
sub addKdmIcon {
my ($user, $icon) = @_;
my $dest = "$::prefix/usr/share/faces/$user.png";
eval { cp_af(facesdir() . $icon . ".png", $dest) } if $icon;
}
sub alloc_user_faces {
my ($users) = @_;
my @m = my @l = facesnames();
foreach (grep { !$_->{icon} || $_->{icon} eq "automagic" } @$users) {
$_->{auto_icon} = splice(@m, rand(@m), 1); #- known biased (see cookbook for better)
log::l("auto_icon is $_->{auto_icon}");
@m = @l unless @m;
}
}
sub create_user {
my ($u, $authentication) = @_;
my @existing = stat("$::prefix/home/$u->{name}");
if (!getpwnam($u->{name})) {
my $uid = $u->{uid} || $existing[4];
if ($uid && getpwuid($uid)) {
undef $uid; #- suggested uid already in use
}
my $gid = $u->{gid} || $existing[5] || int getgrnam($u->{name});
if ($gid) {
if (getgrgid($gid)) {
undef $gid if getgrgid($gid) ne $u->{name};
} else {
run_program::rooted($::prefix, 'groupadd', '-g', $gid, $u->{name});
}
} elsif ($u->{rename_from}) {
run_program::rooted($::prefix, 'groupmod', '-n', $u->{name}, $u->{rename_from});
}
require authentication;
my $symlink_home_from = $u->{rename_from} && (getpwnam($u->{rename_from}))[7];
run_program::raw({ root => $::prefix, sensitive_arguments => 1 },
($u->{rename_from} ? 'usermod' : 'adduser'),
'-p', authentication::user_crypted_passwd($u, $authentication),
if_($uid, '-u', $uid), if_($gid, '-g', $gid),
if_($u->{realname}, '-c', $u->{realname}),
if_($u->{home}, '-d', $u->{home}, if_($u->{rename_from}, '-m')),
if_($u->{shell}, '-s', $u->{shell}),
($u->{rename_from}
? ('-l', $u->{name}, $u->{rename_from})
: $u->{name}));
symlink($u->{home}, $symlink_home_from) if $symlink_home_from;
}
my (undef, undef, $uid, $gid, undef, undef, undef, $home) = getpwnam($u->{name});
if (@existing && $::isInstall && ($uid != $existing[4] || $gid != $existing[5])) {
log::l("chown'ing $home from $existing[4].$existing[5] to $uid.$gid");
eval { common::chown_('recursive', $uid, $gid, "$::prefix$home") };
}
}
sub add_users {
my ($users, $authentication) = @_;
alloc_user_faces($users);
foreach (@$users) {
create_user($_, $authentication);
run_program::rooted($::prefix, "usermod", "-G", join(",", @{$_->{groups}}), $_->{name}) if !is_empty_array_ref($_->{groups});
addKdmIcon($_->{name}, delete $_->{auto_icon} || $_->{icon});
}
}
sub install_bootloader_pkgs {
my ($do_pkgs, $b) = @_;
bootloader::ensure_pkg_is_installed($do_pkgs, $b);
install_acpi_pkgs($do_pkgs, $b);
}
sub install_acpi_pkgs {
my ($do_pkgs, $b) = @_;
my $acpi = bootloader::get_append_with_key($b, 'acpi');
my $use_acpi = !member($acpi, 'off', 'ht');
if ($use_acpi) {
$do_pkgs->ensure_is_installed('acpi', '/usr/bin/acpi', $::isInstall);
$do_pkgs->ensure_is_installed('acpid', '/usr/sbin/acpid', $::isInstall);
}
require services;
services::set_status($_, $use_acpi, $::isInstall) foreach qw(acpi acpid);
}
sub setupBootloaderBeforeStandalone {
my ($do_pkgs, $b, $all_hds, $fstab) = @_;
require keyboard;
my $keyboard = keyboard::read_or_default();
my $allow_fb = listlength(cat_("/proc/fb"));
my $cmdline = cat_('/proc/cmdline');
my $vga_fb = first($cmdline =~ /\bvga=(\S+)/);
my $quiet = $cmdline =~ /\bsplash=silent\b/;
setupBootloaderBefore($do_pkgs, $b, $all_hds, $fstab, $keyboard, $allow_fb, $vga_fb, $quiet);
}
sub setupBootloaderBefore {
my ($do_pkgs, $bootloader, $all_hds, $fstab, $keyboard, $allow_fb, $vga_fb, $quiet) = @_;
require bootloader;
#- auto_install backward compatibility
#- one should now use {message_text}
if ($bootloader->{message} =~ m!^[^/]!) {
$bootloader->{message_text} = delete $bootloader->{message};
}
#- remove previous ide-scsi lines
bootloader::modify_append($bootloader, sub {
my ($_simple, $dict) = @_;
@$dict = grep { $_->[1] ne 'ide-scsi' } @$dict;
});
if (cat_("/proc/cmdline") =~ /mem=nopentium/) {
bootloader::set_append_with_key($bootloader, mem => 'nopentium');
}
if (cat_("/proc/cmdline") =~ /\b(pci)=(\S+)/) {
bootloader::set_append_with_key($bootloader, $1, $2);
}
if (my ($acpi) = cat_("/proc/cmdline") =~ /\bacpi=(\w+)/) {
if ($acpi eq 'ht') {
#- the user is using the default, which may not be the best
my $year = detect_devices::computer_info()->{BIOS_Year};
if ($year >= 2002) {
log::l("forcing ACPI on recent bios ($year)");
$acpi = '';
}
}
bootloader::set_append_with_key($bootloader, acpi => $acpi);
}
if (cat_("/proc/cmdline") =~ /\bnoapic/) {
bootloader::set_append_simple($bootloader, 'noapic');
}
if (cat_("/proc/cmdline") =~ /\bnoresume/) {
bootloader::set_append_simple($bootloader, 'noresume');
} elsif (bootloader::get_append_simple($bootloader, 'noresume')) {
} else {
my ($MemTotal) = cat_("/proc/meminfo") =~ /^MemTotal:\s*(\d+)/m;
if (my ($biggest_swap) = sort { $b->{size} <=> $a->{size} } grep { isSwap($_) } @$fstab) {
log::l("MemTotal: $MemTotal < ", $biggest_swap->{size} / 2);
if ($MemTotal < $biggest_swap->{size} / 2) {
bootloader::set_append_with_key($bootloader, resume => fs::wild_device::from_part('', $biggest_swap));
}
}
}
#- check for valid fb mode to enable a default boot with frame buffer.
my $vga = $allow_fb && (!detect_devices::matching_desc__regexp('3D Rage LT') &&
!detect_devices::matching_desc__regexp('Rage Mobility [PL]') &&
!detect_devices::matching_desc__regexp('i740') &&
!detect_devices::matching_desc__regexp('Matrox') &&
!detect_devices::matching_desc__regexp('Tseng.*ET6\d00') &&
!detect_devices::matching_desc__regexp('SiS.*SG86C2.5') &&
!detect_devices::matching_desc__regexp('SiS.*559[78]') &&
!detect_devices::matching_desc__regexp('SiS.*300') &&
!detect_devices::matching_desc__regexp('SiS.*540') &&
!detect_devices::matching_desc__regexp('SiS.*6C?326') &&
!detect_devices::matching_desc__regexp('SiS.*6C?236') &&
!detect_devices::matching_desc__regexp('Voodoo [35]|Voodoo Banshee') && #- 3d acceleration seems to bug in fb mode
!detect_devices::matching_desc__regexp('828[14][05].* CGC') #- i810 & i845 now have FB support during install but we disable it afterwards
);
my $force_vga = $allow_fb && (detect_devices::matching_desc__regexp('SiS.*630') || #- SiS 630 need frame buffer.
detect_devices::matching_desc__regexp('GeForce.*Integrated') #- needed for fbdev driver (hack).
);
#- propose the default fb mode for kernel fb, if aurora or bootsplash is installed.
my $need_fb = $do_pkgs->are_installed('bootsplash');
bootloader::suggest($bootloader, $all_hds,
vga_fb => ($force_vga || $vga && $need_fb) && $vga_fb,
quiet => $quiet);
$bootloader->{keytable} ||= keyboard::keyboard2kmap($keyboard);
}
sub setupBootloader {
my ($in, $b, $all_hds, $fstab, $security) = @_;
require bootloader;
general:
{
local $::Wizard_no_previous = 1 if $::isStandalone;
setupBootloader__general($in, $b, $all_hds, $fstab, $security) or return 0;
}
setupBootloader__boot_bios_drive($in, $b, $all_hds->{hds}) or goto general;
{
local $::Wizard_finished = 1 if $::isStandalone;
setupBootloader__entries($in, $b, $all_hds, $fstab) or goto general;
}
1;
}
sub setupBootloaderUntilInstalled {
my ($in, $b, $all_hds, $fstab, $security) = @_;
do {
my $before = fs::fstab_to_string($all_hds);
setupBootloader($in, $b, $all_hds, $fstab, $security) or $in->exit;
if ($before ne fs::fstab_to_string($all_hds)) {
#- for /tmp using tmpfs when "clean /tmp" is chosen
fs::write_fstab($all_hds);
}
} while !installBootloader($in, $b, $all_hds);
}
sub installBootloader {
my ($in, $b, $all_hds) = @_;
return if detect_devices::is_xbox();
install_bootloader_pkgs($in->do_pkgs, $b);
eval { run_program::rooted($::prefix, 'echo | lilo -u') } if $::isInstall && !$::o->{isUpgrade} && -e "$::prefix/etc/lilo.conf" && glob("$::prefix/boot/boot.*");
retry:
eval {
my $_w = $in->wait_message(N("Please wait"), N("Bootloader installation in progress"));
bootloader::install($b, $all_hds);
};
if (my $err = $@) {
$err =~ /wizcancel/ and return;
$err =~ s/^\w+ failed// or die;
$err = formatError($err);
while ($err =~ s/^Warning:.*//m) {}
if (my ($dev) = $err =~ /^Reference:\s+disk\s+"(.*?)".*^Is the above disk an NT boot disk?/ms) {
if ($in->ask_yesorno('',
formatAlaTeX(N("LILO wants to assign a new Volume ID to drive %s. However, changing
the Volume ID of a Windows NT, 2000, or XP boot disk is a fatal Windows error.
This caution does not apply to Windows 95 or 98, or to NT data disks.
Assign a new Volume ID?", $dev)))) {
$b->{force_lilo_answer} = 'n';
} else {
$b->{'static-bios-codes'} = 1;
}
goto retry;
} else {
$in->ask_warn('', [ N("Installation of bootloader failed. The following error occurred:"), $err ]);
return;
}
} elsif (arch() =~ /ppc/) {
if (detect_devices::get_mac_model() !~ /IBM/) {
my $of_boot = bootloader::dev2yaboot($b->{boot});
$in->ask_warn('', N("You may need to change your Open Firmware boot-device to\n enable the bootloader. If you do not see the bootloader prompt at\n reboot, hold down Command-Option-O-F at reboot and enter:\n setenv boot-device %s,\\\\:tbxi\n Then type: shut-down\nAt your next boot you should see the bootloader prompt.", $of_boot));
}
}
1;
}
sub setupBootloader_simple {
my ($in, $b, $all_hds, $fstab, $security) = @_;
my $hds = $all_hds->{hds};
require bootloader;
bootloader::ensafe_first_bios_drive($hds)
|| $b->{bootUnsafe} || arch() =~ /ppc/ or return 1; #- default is good enough
if (arch() !~ /ia64/) {
setupBootloader__mbr_or_not($in, $b, $hds, $fstab) or return 0;
} else {
general:
setupBootloader__general($in, $b, $all_hds, $fstab, $security) or return 0;
}
setupBootloader__boot_bios_drive($in, $b, $hds) or goto general;
1;
}
sub setupBootloader__boot_bios_drive {
my ($in, $b, $hds) = @_;
if (arch() =~ /ppc/ ||
!is_empty_hash_ref($b->{bios})) {
#- some bios mapping already there
return 1;
} elsif (bootloader::mixed_kind_of_disks($hds) && $b->{boot} =~ /\d$/) { #- on a partition
# see below
} else {
return 1;
}
log::l("_ask_boot_bios_drive");
my $hd = $in->ask_from_listf('', N("You decided to install the bootloader on a partition.
This implies you already have a bootloader on the hard drive you boot (eg: System Commander).
On which drive are you booting?"), \&partition_table::description, $hds) or return 0;
log::l("mixed_kind_of_disks chosen $hd->{device}");
$b->{first_hd_device} = "/dev/$hd->{device}";
1;
}
sub setupBootloader__mbr_or_not {
my ($in, $b, $hds, $fstab) = @_;
log::l("setupBootloader__mbr_or_not");
if (arch() =~ /ppc/) {
if (defined $partition_table::mac::bootstrap_part) {
$b->{boot} = $partition_table::mac::bootstrap_part;
log::l("set bootstrap to $b->{boot}");
} else {
die "no bootstrap partition - yaboot.conf creation failed";
}
} else {
my $floppy = detect_devices::floppy();
my @l = (
bootloader::ensafe_first_bios_drive($hds) ?
(map { [ N("First sector (MBR) of drive %s", partition_table::description($_)) => '/dev/' . $_->{device} ] } @$hds)
:
[ N("First sector of drive (MBR)") => '/dev/' . $hds->[0]{device} ],
[ N("First sector of the root partition") => '/dev/' . fs::get::root($fstab, 'boot')->{device} ],
if_($floppy,
[ N("On Floppy") => "/dev/$floppy" ],
),
[ N("Skip") => '' ],
);
my $default = find { $_->[1] eq $b->{boot} } @l;
$in->ask_from_({ title => N("LILO/grub Installation"),
interactive_help_id => 'setupBootloaderBeginner',
},
[
{ label => N("Where do you want to install the bootloader?"), title => 1 },
{ val => \$default, list => \@l, format => sub { $_[0][0] }, type => 'list' },
]
);
my $new_boot = $default->[1];
#- remove bios mapping if the user changed the boot device
delete $b->{bios} if $new_boot && $new_boot ne $b->{boot};
$b->{boot} = $new_boot or return;
}
1;
}
sub setupBootloader__general {
my ($in, $b, $all_hds, $fstab, $security) = @_;
return if detect_devices::is_xbox();
my @method_choices = bootloader::method_choices($all_hds);
my $prev_force_acpi = my $force_acpi = bootloader::get_append_with_key($b, 'acpi') !~ /off|ht/;
my $prev_enable_apic = my $enable_apic = !bootloader::get_append_simple($b, 'noapic');
my $prev_enable_lapic = my $enable_lapic = !bootloader::get_append_simple($b, 'nolapic');
my $memsize = bootloader::get_append_memsize($b);
my $prev_clean_tmp = my $clean_tmp = any { $_->{mntpoint} eq '/tmp' } @{$all_hds->{special} ||= []};
my $prev_boot = $b->{boot};
my $prev_method = $b->{method};
$b->{password2} ||= $b->{password} ||= '';
$::Wizard_title = N("Boot Style Configuration");