diff options
Diffstat (limited to 'perl-install/standalone/bootloader-config')
-rwxr-xr-x | perl-install/standalone/bootloader-config | 188 |
1 files changed, 0 insertions, 188 deletions
diff --git a/perl-install/standalone/bootloader-config b/perl-install/standalone/bootloader-config deleted file mode 100755 index 0bcd4d377..000000000 --- a/perl-install/standalone/bootloader-config +++ /dev/null @@ -1,188 +0,0 @@ -#!/usr/bin/perl - -use lib qw(/usr/lib/libDrakX); -use Getopt::Long; - -use common; -use bootloader; - -$::isStandalone = 1; #- not using standalone which messes with @ARGV and usage - -my %options = ( - 'action=s' => \ (my $action), - - 'label=s' => \ (my $label), - - 'chainload=s' => \ (my $chainload), - - 'image=s' => \ (my $image), - 'kernel-version=s' => \ (my $kernel_version), - - 'initrd-options=s' => \ (my $initrd_options), - 'no-short-name' => \ (my $no_short_name), - 'no-entry' => \ (my $no_entry), - 'no-launch' => \ (my $no_launch), - 'no-initrd' => \ (my $no_initrd), - ); - -GetOptions(%options) or die <<'EOF'; -usage: bootloader-config --action add-kernel (--image <vmlinuz> | --kernel-version <2.6.xxx>) [--label <...>] [--no-short-name] [--initrd-options <options>] - bootloader-config --action remove-kernel (--image <vmlinuz> | --kernel-version <2.6.xxx>) - - bootloader-config --action add-entry (--image <image> | --chainload <device>) --label <...> - bootloader-config --action remove-entry (--image <image> | --chainload <device> | --label <...>) - - bootloader-config --action update-splash - bootloader-config --action remove-splash -EOF - -my @known_actions = qw(add-kernel remove-kernel update-splash remove-splash detectloader add-entry remove-entry); -$action && member($action, @known_actions) or die "<action> must be one of " . join(' ', @known_actions) . "\n"; - -if ($image) { - if (my $ver = bootloader::vmlinuz2version($image)) { - if ($kernel_version) { - $kernel_version eq $ver or die "$kernel_version and $ver don't match (hint: don't pass both --image and --kernel-version)\n"; - } else { - $kernel_version = $ver; - } - } - $image = "/boot/$image" if $image !~ m!^/!; -} elsif ($kernel_version) { - $image = "/boot/vmlinuz-$kernel_version"; -} - - -my $all_hds = fsedit::get_hds(); -fs::get_info_from_fstab($all_hds); - -my $bootloader = bootloader::read($all_hds) or die "Cannot find a boot loader installed\n"; - - -$action =~ s/-/_/g; -$::{$action}->(); - - -#-############################################################################### -sub remove_now_broken_boot_symlinks() { - foreach (glob("/boot/vmlinuz*"), glob("/boot/initrd*")) { - -l $_ && !-e $_ or next; - log::l("removing now broken symlink $_"); - unlink $_; - } -} -sub remove_kernel() { - unlink "/lib/modules/$kernel_version/build"; - remove_now_broken_boot_symlinks(); - - my %proposed_labels; - my @new_entries; - - my ($to_remove, $to_keep) = partition { - if ($_->{kernel_or_dev} && $_->{kernel_or_dev} eq $image) { - 1; - } else { - my $vmlinuz = $_->{kernel_or_dev} && bootloader::expand_vmlinuz_symlink($_->{kernel_or_dev}); - if ($vmlinuz && "/boot/$vmlinuz" eq $image) { - if (!%proposed_labels) { - %proposed_labels = bootloader::get_kernels_and_labels_before_kernel_remove($vmlinuz); - } - if (my $proposed = $proposed_labels{$_->{label}}) { - my %to_add = %$_; - put_in_hash(\%to_add, $proposed); - push @new_entries, \%to_add; - } - 1; - } else { - 0; - } - } - } @{$bootloader->{entries}}; - - $_->{initrd} && unlink $_->{initrd} foreach @$to_remove; - - @{$bootloader->{entries}} = @$to_keep; - - foreach (@new_entries) { - bootloader::add_kernel($bootloader, $_, {}); - } - - modify_bootloader(); -} - - -#-############################################################################### -sub add_kernel() { - bootloader::create_link_source(); - - my $kernel_str = bootloader::vmlinuz2kernel_str($image) or die "bad kernel name $image\n"; - - my $root_part = fs::get::root([ fs::get::fstab($all_hds) ]) or die "can't find root partition\n"; - my %opts = ( - root => "/dev/$root_part->{device}", - initrd_options => $initrd_options, - if_($label, label => $label), - if_($bootloader->{default_vga}, vga => $bootloader->{default_vga}), - ); - #- short name - bootloader::add_kernel($bootloader, $kernel_str, { %opts }, 0, $no_initrd) if !$no_short_name; - - #- long name - $kernel_str->{use_long_name} = 1; - bootloader::add_kernel($bootloader, $kernel_str, { %opts }, 1, $no_initrd); - - modify_bootloader(); -} - -sub modify_bootloader() { - !$no_entry or return; - - bootloader::action($bootloader, 'write', $all_hds); - bootloader::action($bootloader, 'when_config_changed') if !$no_launch; -} - -#-############################################################################### -sub add_entry() { - $label or die "you must give a label\n"; - ($image xor $chainload) or die "you must give an image or a chainload\n"; - - my $entry = { - type => $image ? 'image' : 'other', - label => $label, - kernel_or_dev => $image || $chainload, - }; - bootloader::add_entry($bootloader, $entry); - modify_bootloader(); -} - -sub remove_entry() { - listlength(grep { $_ } $label, $image, $chainload) == 1 or die "you must give one of --label, --image and --chainload\n"; - - my $e = $label ? bootloader::get_label($label, $bootloader) : - find { $_->{kernel_or_dev} && $_->{kernel_or_dev} eq ($image || $chainload) } @{$bootloader->{entries}}; - - if ($e) { - @{$bootloader->{entries}} = grep { $_ != $e } @{$bootloader->{entries}}; - } - - modify_bootloader(); -} - -#-############################################################################### -sub update_splash() { - foreach (@{$bootloader->{entries}}) { - bootloader::add_boot_splash($_->{initrd}, $_->{vga}) if $_->{initrd}; - } - bootloader::action($bootloader, 'when_config_changed') if !$no_launch; -} - -sub remove_splash() { - foreach (@{$bootloader->{entries}}) { - bootloader::remove_boot_splash($_->{initrd}) if $_->{initrd}; - } - bootloader::action($bootloader, 'when_config_changed') if !$no_launch; -} - -sub detectloader() { - print uc(bootloader::main_method($bootloader->{method})), "\n" if $bootloader; -} |