diff options
author | Martin Whitaker <mageia@martin-whitaker.me.uk> | 2017-07-24 23:07:38 +0100 |
---|---|---|
committer | Martin Whitaker <mageia@martin-whitaker.me.uk> | 2018-05-28 11:42:41 +0100 |
commit | 3931a427b2ef642725666429635c4ee7ae16d558 (patch) | |
tree | 62cb29b72e58e7b223204b2d22ea7f1490ac176b /perl-install/bootloader.pm | |
parent | c35e3401880b2f57d20862b533e341b9b7c32f18 (diff) | |
download | drakx-3931a427b2ef642725666429635c4ee7ae16d558.tar drakx-3931a427b2ef642725666429635c4ee7ae16d558.tar.gz drakx-3931a427b2ef642725666429635c4ee7ae16d558.tar.bz2 drakx-3931a427b2ef642725666429635c4ee7ae16d558.tar.xz drakx-3931a427b2ef642725666429635c4ee7ae16d558.zip |
Fix drakboot video mode selection when using grub2 (mga#21246)
The video mode needs to be extracted from and written back to the
GRUB_CMDLINE_LINUX_DEFAULT parameter in /etc/defaults/grub2.
This fix creates a new "default_vga" key in the $bootloader hash to
hold the current selection. Using the existing "vga" key would cause
the default video mode to be added to any bootloader entries that
don't have a specific "vga" value, e.g. the "failsafe" entry.
The $bootloader "vga" value doesn't appear to be set anywhere else,
so may in fact be obsolete.
(cherry picked from commit f70da6dee2087dbcb26e1ae6e00c5ea859c0c787)
Diffstat (limited to 'perl-install/bootloader.pm')
-rw-r--r-- | perl-install/bootloader.pm | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/perl-install/bootloader.pm b/perl-install/bootloader.pm index 6b2a6524a..c648378a8 100644 --- a/perl-install/bootloader.pm +++ b/perl-install/bootloader.pm @@ -278,6 +278,8 @@ sub read_ { $bootloader->{default_options} = $default; $bootloader->{perImageAppend} ||= $default->{append}; log::l("perImageAppend is now $bootloader->{perImageAppend}"); + $bootloader->{default_vga} ||= $default->{vga}; + log::l("default_vga is now $bootloader->{default_vga}"); } else { $bootloader->{default_options} = {}; } @@ -307,8 +309,10 @@ sub read_grub2() { return if is_empty_hash_ref(\%bootloader) & !-s "$::prefix/boot/grub2/grub.cfg"; my %h = getVarsFromSh("$::prefix/etc/default/grub"); $bootloader{timeout} = $h{GRUB_TIMEOUT}; - # keep suggested perImageAppend on first run (during installer) or when migrating from grub-legacy or lilo: - $bootloader{perImageAppend} ||= $h{GRUB_CMDLINE_LINUX_DEFAULT}; + # keep suggested perImageAppend and default_vga on first run (during installer) or when migrating from grub-legacy or lilo: + my ($vga, $other) = partition { /^vga=/ } split(' ', $h{GRUB_CMDLINE_LINUX_DEFAULT}); + $bootloader{perImageAppend} ||= join(' ', @$other) if @$other; + $bootloader{default_vga} ||= $vga->[0] =~ /vga=(.*)/ && $1 if @$vga; $bootloader{entries} = []; my $entry; my $f = "$::prefix/boot/grub2/grub.cfg"; @@ -1229,6 +1233,7 @@ sub suggest { method_choices($all_hds, 0)); # or best if no valid one is installed $bootloader->{perImageAppend} = $bootloader->{entries}[0]{append}; + $bootloader->{default_vga} = $options{vga_fb}; if (main_method($bootloader->{method}) eq 'grub') { my %processed_entries = {}; @@ -1865,7 +1870,11 @@ sub write_grub2_sysconfig { my $f = "$::prefix/etc/default/grub"; my %conf = getVarsFromSh($f); - $conf{GRUB_CMDLINE_LINUX_DEFAULT} = $bootloader->{perImageAppend} || get_grub2_append($bootloader); + my $append = $bootloader->{perImageAppend} || get_grub2_append($bootloader); + my $vga = $bootloader->{default_vga}; + $append .= " vga=$vga" if $append !~ /vga=/ && $vga && $vga ne "normal"; + + $conf{GRUB_CMDLINE_LINUX_DEFAULT} = $append; $conf{GRUB_GFXPAYLOAD_LINUX} = 'auto' if is_uefi(); $conf{GRUB_DISABLE_RECOVERY} = 'false'; # for 'failsafe' entry $conf{GRUB_DEFAULT} //= 'saved'; # for default entry but do not overwrite user choice |