#!/usr/bin/perl use lib qw(/usr/lib/libDrakX); use common qw(:common :file :functional); use interactive; use any; use bootloader; use detect_devices; use fsedit; use fs; use c; local $_ = join '', @ARGV; /-h/ and die "usage: drakboot [--expert]\n"; $::expert = /-expert/; $::isStandalone = 1; my $in = interactive->vnew('su'); my %l = ( arch() !~ /sparc|alpha/ ? ( _("Configure LILO/GRUB") => '', _("Create a boot floppy") => ['/usr/X11R6/bin/drakfloppy'], ) : (), _("Format floppy") => [ '/usr/bin/kfloppy', '/usr/bin/gfloppy' ], ); while (my ($k, $v) = each %l) { $v or next; foreach (@$v) { -x $_ and $l{$k} = $_, last; } -x $l{$k} or delete $l{$k}; } if ($ENV{DISPLAY} && c::Xtest($ENV{DISPLAY})) { my $cmd = $l{$in->ask_from_list(_("Choice"), _("What do you want to do?"), [ keys %l ])}; exec $cmd if $cmd; } my $bootloader = bootloader::read('', '/etc/lilo.conf'); local ($_) = `detectloader`; $bootloader->{methods} = { lilo => 1, grub => !!/grub/i }; my $hds = catch_cdie { fsedit::hds([ detect_devices::hds() ], {}) } sub { 1 }; my $fstab = [ fsedit::get_fstab(@$hds) ]; fs::get_mntpoints_from_fstab($fstab); ask: any::setupBootloader($in, $bootloader, $hds, $fstab, $ENV{SECURE_LEVEL}) or $in->exit(0); eval { bootloader::install('', $bootloader, $fstab, $hds) }; if ($@) { $in->ask_warn('', [ _("Installation of LILO failed. The following error occured:"), grep { !/^Warning:/ } cat_("/tmp/.error") ]); unlink "/tmp/.error"; goto ask; } $in->exit(0);