#!/usr/bin/perl use lib qw(/usr/lib/libDrakX); use common qw(:system :file :functional); use interactive; use any; use lilo; use detect_devices; use fsedit; use c; local $_ = join '', @ARGV; /-h/ and die "usage: drakboot [--expert]\n"; $::expert = /-expert/; $::isStandalone = 1; my $in = vnew interactive('su'); my %l = ( _("Configure LILO/GRUB") => '', _("Create a boot floppy") => '/usr/X11R6/bin/drakfloppy', _("Format floppy") => '/usr/bin/gfloppy', ); -x $l{$_} or delete $l{$_} foreach grep { $l{$_} } keys %l; my $cmd = $l{$in->ask_from_list(_("Choice"), _("What do you want to do?"), [ keys %l ])}; exec $cmd if $cmd; my $bootloader = lilo::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 { lilo::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);