diff options
author | Pascal Rigaux <pixel@mandriva.com> | 2004-09-07 07:08:37 +0000 |
---|---|---|
committer | Pascal Rigaux <pixel@mandriva.com> | 2004-09-07 07:08:37 +0000 |
commit | dc1c46d9d842e2a9b09ceeef930f0659aa183b58 (patch) | |
tree | f1da0d23bb5aa4d7a5e216bb87cf151c78bc5d3e | |
parent | ce0a1b887671ac54480bb133b4fb5ae23c333de7 (diff) | |
download | drakx-dc1c46d9d842e2a9b09ceeef930f0659aa183b58.tar drakx-dc1c46d9d842e2a9b09ceeef930f0659aa183b58.tar.gz drakx-dc1c46d9d842e2a9b09ceeef930f0659aa183b58.tar.bz2 drakx-dc1c46d9d842e2a9b09ceeef930f0659aa183b58.tar.xz drakx-dc1c46d9d842e2a9b09ceeef930f0659aa183b58.zip |
take care of symlink based bootloader entries
-rwxr-xr-x | perl-install/standalone/bootloader-config | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/perl-install/standalone/bootloader-config b/perl-install/standalone/bootloader-config index 9e21d1ee9..0115e6de6 100755 --- a/perl-install/standalone/bootloader-config +++ b/perl-install/standalone/bootloader-config @@ -75,19 +75,37 @@ 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 { - $_->{kernel_or_dev} && $_->{kernel_or_dev} eq $image; + 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; -# foreach (@$to_keep) { -# $_->{kernel_or_dev} && bootloader::expand_vmlinuz_symlink($_->{kernel_or_dev}) eq $image or next; -# } - @{$bootloader->{entries}} = @$to_keep; + foreach (@new_entries) { + bootloader::add_kernel($bootloader, $_, {}); + } modify_bootloader(); } |