Mageia Bugzilla – Attachment 8048 Details for
Bug 18560
MCC->boot->Set up boot system fails to set correct default menu entry for grub2
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
New Account
|
Forgot Password
[patch]
save menu ID instead of menu label (mga#18560)
0001-save-menu-ID-instead-of-menu-label-mga-18560.patch (text/plain), 2.39 KB, created by
Thierry Vignaud
on 2016-06-22 02:12:28 CEST
(
hide
)
Description:
save menu ID instead of menu label (mga#18560)
Filename:
MIME Type:
Creator:
Thierry Vignaud
Created:
2016-06-22 02:12:28 CEST
Size:
2.39 KB
patch
obsolete
>From 7a59a1ba513ae3eea5e2bd4a8c5d45b9309c3e16 Mon Sep 17 00:00:00 2001 >From: Thierry Vignaud <tvignaud@redhat.com> >Date: Fri, 27 May 2016 16:48:01 +0200 >Subject: [PATCH] save menu ID instead of menu label (mga#18560) > >--- > perl-install/bootloader.pm | 16 +++++++++++++--- > 1 file changed, 13 insertions(+), 3 deletions(-) > >diff --git a/perl-install/bootloader.pm b/perl-install/bootloader.pm >index 463f9ed..22e53a6 100644 >--- a/perl-install/bootloader.pm >+++ b/perl-install/bootloader.pm >@@ -315,9 +315,9 @@ sub read_grub2() { > my $f = "$::prefix/boot/grub2/grub.cfg"; > foreach (cat_utf8($f)) { > next if /^#/; >- if (/menuentry\s+['"]([^']+)["']/) { >+ if (/menuentry\s+['"]([^']+)["'].* \$menuentry_id_option '([^']+)'/) { > push @{$bootloader{entries}}, $entry if $entry; >- $entry = { label => $1 }; >+ $entry = { label => $1, menuid => $2 }; > } elsif (/linux\s+(\S+)\s+(.*)?/ || /module\s+(\S+vmlinu\S+)\s+(.*)?/) { > $entry->{type} = 'image'; > @$entry{qw(kernel_or_dev append)} = ($1, $2); >@@ -336,6 +336,10 @@ sub read_grub2() { > # get default entry: > foreach (run_program::rooted_get_stdout($::prefix, qw(grub2-editenv list))) { > $bootloader{default} = $1 if /saved_entry=(.*)/; >+ # "grub2-editenv list" returns a label instead of an id. Fix it: >+ if (my $def = find { $_->{label} eq $bootloader{default} } @{$bootloader{entries}}) { >+ $bootloader{default} = $def->{menuid} if $def->{menuid}; >+ } > } > > # Get password prior to run update-grub2: >@@ -1874,11 +1878,17 @@ sub write_grub2 { > run_program::rooted($::prefix, 'update-grub2', '2>', \$error) or die "update-grub2 failed: $error"; > log::l("update-grub2 logs: $error"); > >+ my $default = $bootloader->{default}; >+ # "grub2-editenv list" returns a label instead of an id. Fix it: >+ if (my $def = find { $_->{label} eq $bootloader->{default} } @{$bootloader->{entries}}) { >+ $default = $def->{menuid} if $def->{menuid}; >+ } >+ > # set default entry: > eval { > my $f2 = "$::prefix/boot/grub2/grubenv"; > cp_af($f2, $f2 . ($o_backup_extension || '.old')); >- run_program::rooted($::prefix, 'grub2-set-default', '2>', \$error, $bootloader->{default}) or die "grub2-set-default failed: $error"; >+ run_program::rooted($::prefix, 'grub2-set-default', '2>', \$error, $default) or die "grub2-set-default failed: $error"; > }; > if (my $err = $@) { > log::l("error while running grub2-set-default: $err"); >-- >2.9.0 >
From 7a59a1ba513ae3eea5e2bd4a8c5d45b9309c3e16 Mon Sep 17 00:00:00 2001 From: Thierry Vignaud <tvignaud@redhat.com> Date: Fri, 27 May 2016 16:48:01 +0200 Subject: [PATCH] save menu ID instead of menu label (mga#18560) --- perl-install/bootloader.pm | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/perl-install/bootloader.pm b/perl-install/bootloader.pm index 463f9ed..22e53a6 100644 --- a/perl-install/bootloader.pm +++ b/perl-install/bootloader.pm @@ -315,9 +315,9 @@ sub read_grub2() { my $f = "$::prefix/boot/grub2/grub.cfg"; foreach (cat_utf8($f)) { next if /^#/; - if (/menuentry\s+['"]([^']+)["']/) { + if (/menuentry\s+['"]([^']+)["'].* \$menuentry_id_option '([^']+)'/) { push @{$bootloader{entries}}, $entry if $entry; - $entry = { label => $1 }; + $entry = { label => $1, menuid => $2 }; } elsif (/linux\s+(\S+)\s+(.*)?/ || /module\s+(\S+vmlinu\S+)\s+(.*)?/) { $entry->{type} = 'image'; @$entry{qw(kernel_or_dev append)} = ($1, $2); @@ -336,6 +336,10 @@ sub read_grub2() { # get default entry: foreach (run_program::rooted_get_stdout($::prefix, qw(grub2-editenv list))) { $bootloader{default} = $1 if /saved_entry=(.*)/; + # "grub2-editenv list" returns a label instead of an id. Fix it: + if (my $def = find { $_->{label} eq $bootloader{default} } @{$bootloader{entries}}) { + $bootloader{default} = $def->{menuid} if $def->{menuid}; + } } # Get password prior to run update-grub2: @@ -1874,11 +1878,17 @@ sub write_grub2 { run_program::rooted($::prefix, 'update-grub2', '2>', \$error) or die "update-grub2 failed: $error"; log::l("update-grub2 logs: $error"); + my $default = $bootloader->{default}; + # "grub2-editenv list" returns a label instead of an id. Fix it: + if (my $def = find { $_->{label} eq $bootloader->{default} } @{$bootloader->{entries}}) { + $default = $def->{menuid} if $def->{menuid}; + } + # set default entry: eval { my $f2 = "$::prefix/boot/grub2/grubenv"; cp_af($f2, $f2 . ($o_backup_extension || '.old')); - run_program::rooted($::prefix, 'grub2-set-default', '2>', \$error, $bootloader->{default}) or die "grub2-set-default failed: $error"; + run_program::rooted($::prefix, 'grub2-set-default', '2>', \$error, $default) or die "grub2-set-default failed: $error"; }; if (my $err = $@) { log::l("error while running grub2-set-default: $err"); -- 2.9.0
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 18560
:
7867
|
7868
| 8048