Bug#749851: grub-pc: Corrupted screen in text-mode GRUB on Radeon SUMO (R600) video card

CJP cornwarecjp at ultimatestunts.nl
Fri May 30 09:07:09 UTC 2014


Package: grub-pc
Version: 1.99-27+deb7u2
Severity: important

Dear Maintainer,

I have a HP Pavilion G6 laptop with AMD A6-3420 processor, a Radeon SUMO (R600)
video chipset and 1366x768 native resolution.

I used to have a dual-boot Windows 7 / Linux Mint 13 setup with default GRUB
settings; this worked without problems. Note that the partition containing /usr
was not encrypted in this setup; this might be relevant (see below). Recently,
I replaced Linux Mint 13 with Debian 7.5.0; during install, I chose for a small
non-encrypted /boot, and the rest of the file system in an encrypted partition.
This created a situation where the screen would become corrupted when GRUB is
started.

Note that, except for the corrupted screen, GRUB is still "functional". I can
boot my Linux system by
* pressing Enter
* waiting a few seconds
* entering the disk decryption passphrase and pressing Enter

When booting the first time, Linux complained about missing R600 firmware, so I
installed the firmware-linux-nonfree package mentioned in the error messages.
This did not seem to affect GRUB, but it let Linux make better use of the
videocard (KMS started working, the error messages were gone and GNOME started
working in its default mode).

After lots of experimenting, I found out that GRUB only has a corrupted screen
after REboots: When doing a clean boot (power-off and power-on), it showed a
non-corrupted text-mode menu. The same was true after entering the BIOS menu's.
Apparently, rebooting leaves the video card in a state that's different from
the state at power-on. Note that the same is true for reboot from Debian and
reboot from Windows 7, so the problem is not specific to the Linux graphics
drivers of the Debian system. Note that rebooting from exactly the same Windows
system caused no problem at all in Linux Mint 13.

I tried to see whether it would help to use a different graphics mode for GRUB,
but this was a bit problematic: update-grub woudn't put the GRUB_GFXMODE value
anywhere in /boot/grub/grub.cfg. I found in /etc/grub.d/00_header that this
depends on the value of GRUB_FONT_PATH. I tried
GRUB_FONT_PATH=/usr/share/grub/unicode.pf2, but this resulted in an error
message by update-grub, because that file is in an encrypted volume. I suspect
this is what triggered the bug in the first place: if I woundn't have had an
encrypted file system, GRUB probably would have used a graphical mode by
default, and I woudn't have had a problem in the first place.

I managed to solve the issue by copying /usr/share/grub/unicode.pf2 to
/boot/grub and using the following settings in /etc/default/grub:
GRUB_GFXMODE=1366x768x32
GRUB_GFXPAYLOAD_LINUX=1366x768x32
GRUB_FONT_PATH=/boot/grub/unicode.pf2

Note that, without the GRUB_GFXPAYLOAD_LINUX value, GRUB looks great, but it
gives a black screen when booting Linux, until KMS kicks in. Since KMS becomes
active AFTER Linux asks for the disk decryption passphrase, this is an
important issue; the GRUB_GFXPAYLOAD_LINUX value solves this.

So, I solved the issue for myself. I am reporting the issue because you might
want to improve Debian in such a way that the issue doesn't occur for other
users. I suggest the following changes:
* For my hardware, graphical GRUB boot is apparently better than text-mode, so,
at least for my hardware, you should make sure that, by default, GRUB is
configured to use a graphical mode. I'll leave it up to you to decide whether
this is true for all hardware.
* The GRUB configuration should not depend on whether or not the filesystem is
encrypted. I think you can only reasonably expect /boot to be non-encrypted and
accessible by GRUB. So, if GRUB needs anything (like the font file in my case),
it needs to be copied to a directory on /boot.



-- Package-specific info:

*********************** BEGIN /proc/mounts
/dev/mapper/sda8_crypt / ext4 rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered 0 0
/dev/sda7 /boot ext2 rw,relatime,errors=continue 0 0
*********************** END /proc/mounts

*********************** BEGIN /boot/grub/device.map
(hd0)	/dev/disk/by-id/ata-ST9500325AS_S2WBMJXK
(hd1)	/dev/disk/by-id/usb-_USB_DISK_Pro_0744141207E3-0:0
(hd2)	/dev/disk/by-id/usb-_USB_DISK_Pro_0744141207E3-0:1
*********************** END /boot/grub/device.map

*********************** BEGIN /boot/grub/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  load_env
fi
set default="0"
if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  insmod vbe
  insmod vga
  insmod video_bochs
  insmod video_cirrus
}

insmod part_msdos
insmod ext2
set root='(hd0,msdos7)'
search --no-floppy --fs-uuid --set=root f4c568a7-a3f1-4007-b95e-acf692c7f6a2
if loadfont /grub/unicode.pf2 ; then
  set gfxmode=1366x768x32
  load_video
  insmod gfxterm
  insmod part_msdos
  insmod ext2
  set root='(hd0,msdos7)'
  search --no-floppy --fs-uuid --set=root f4c568a7-a3f1-4007-b95e-acf692c7f6a2
  set locale_dir=($root)/grub/locale
  set lang=nl_NL
  insmod gettext
fi
terminal_output gfxterm
set timeout=5
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
insmod part_msdos
insmod ext2
set root='(hd0,msdos7)'
search --no-floppy --fs-uuid --set=root f4c568a7-a3f1-4007-b95e-acf692c7f6a2
insmod png
if background_image /grub/.background_cache.png; then
  set color_normal=white/black
  set color_highlight=black/white
else
  set menu_color_normal=cyan/blue
  set menu_color_highlight=white/blue
fi
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Debian GNU/Linux, met Linux 3.2.0-4-amd64' --class debian --class gnu-linux --class gnu --class os {
	load_video
	set gfxpayload=1366x768x32
	insmod gzio
	insmod part_msdos
	insmod ext2
	set root='(hd0,msdos7)'
	search --no-floppy --fs-uuid --set=root f4c568a7-a3f1-4007-b95e-acf692c7f6a2
	echo	'Laden van Linux 3.2.0-4-amd64...'
	linux	/vmlinuz-3.2.0-4-amd64 root=/dev/mapper/sda8_crypt ro  quiet
	echo	'Laden van initiële ramdisk...'
	initrd	/initrd.img-3.2.0-4-amd64
}
menuentry 'Debian GNU/Linux, met Linux 3.2.0-4-amd64 (herstelmodus)' --class debian --class gnu-linux --class gnu --class os {
	load_video
	set gfxpayload=1366x768x32
	insmod gzio
	insmod part_msdos
	insmod ext2
	set root='(hd0,msdos7)'
	search --no-floppy --fs-uuid --set=root f4c568a7-a3f1-4007-b95e-acf692c7f6a2
	echo	'Laden van Linux 3.2.0-4-amd64...'
	linux	/vmlinuz-3.2.0-4-amd64 root=/dev/mapper/sda8_crypt ro single 
	echo	'Laden van initiële ramdisk...'
	initrd	/initrd.img-3.2.0-4-amd64
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {
	insmod part_msdos
	insmod ntfs
	set root='(hd0,msdos1)'
	search --no-floppy --fs-uuid --set=root 060685010684F2CB
	chainloader +1
}
menuentry "Windows Recovery Environment (loader) (on /dev/sda2)" --class windows --class os {
	insmod part_msdos
	insmod ntfs
	set root='(hd0,msdos2)'
	search --no-floppy --fs-uuid --set=root 3A68797D687938A9
	drivemap -s (hd0) ${root}
	chainloader +1
}
menuentry "Windows Recovery Environment (loader) (on /dev/sda3)" --class windows --class os {
	insmod part_msdos
	insmod ntfs
	set root='(hd0,msdos3)'
	search --no-floppy --fs-uuid --set=root 1216342E16341567
	drivemap -s (hd0) ${root}
	chainloader +1
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
*********************** END /boot/grub/grub.cfg

*********************** BEGIN /proc/mdstat
cat: /proc/mdstat: No such file or directory
*********************** END /proc/mdstat

*********************** BEGIN /dev/disk/by-id
total 0
lrwxrwxrwx 1 root root  9 May 30 09:00 ata-ST9500325AS_S2WBMJXK -> ../../sda
lrwxrwxrwx 1 root root 10 May 30 09:00 ata-ST9500325AS_S2WBMJXK-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 May 30 09:00 ata-ST9500325AS_S2WBMJXK-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 May 30 09:00 ata-ST9500325AS_S2WBMJXK-part3 -> ../../sda3
lrwxrwxrwx 1 root root 10 May 30 09:00 ata-ST9500325AS_S2WBMJXK-part4 -> ../../sda4
lrwxrwxrwx 1 root root 10 May 30 09:00 ata-ST9500325AS_S2WBMJXK-part5 -> ../../sda5
lrwxrwxrwx 1 root root 10 May 30 09:00 ata-ST9500325AS_S2WBMJXK-part6 -> ../../sda6
lrwxrwxrwx 1 root root 10 May 30 09:00 ata-ST9500325AS_S2WBMJXK-part7 -> ../../sda7
lrwxrwxrwx 1 root root 10 May 30 09:00 ata-ST9500325AS_S2WBMJXK-part8 -> ../../sda8
lrwxrwxrwx 1 root root  9 May 30 09:12 ata-hp_CDDVDW_SN-208BB_R8HB6GDBC30179 -> ../../sr0
lrwxrwxrwx 1 root root 10 May 30 09:00 dm-name-sda6_crypt -> ../../dm-1
lrwxrwxrwx 1 root root 10 May 30  2014 dm-name-sda8_crypt -> ../../dm-0
lrwxrwxrwx 1 root root 10 May 30  2014 dm-uuid-CRYPT-LUKS1-70c5b5f07eaa43d194ab728c3eefe51a-sda8_crypt -> ../../dm-0
lrwxrwxrwx 1 root root 10 May 30 09:00 dm-uuid-CRYPT-PLAIN-sda6_crypt_unformatted -> ../../dm-1
lrwxrwxrwx 1 root root  9 May 30 09:00 scsi-SATA_ST9500325AS_S2WBMJXK -> ../../sda
lrwxrwxrwx 1 root root 10 May 30 09:00 scsi-SATA_ST9500325AS_S2WBMJXK-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 May 30 09:00 scsi-SATA_ST9500325AS_S2WBMJXK-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 May 30 09:00 scsi-SATA_ST9500325AS_S2WBMJXK-part3 -> ../../sda3
lrwxrwxrwx 1 root root 10 May 30 09:00 scsi-SATA_ST9500325AS_S2WBMJXK-part4 -> ../../sda4
lrwxrwxrwx 1 root root 10 May 30 09:00 scsi-SATA_ST9500325AS_S2WBMJXK-part5 -> ../../sda5
lrwxrwxrwx 1 root root 10 May 30 09:00 scsi-SATA_ST9500325AS_S2WBMJXK-part6 -> ../../sda6
lrwxrwxrwx 1 root root 10 May 30 09:00 scsi-SATA_ST9500325AS_S2WBMJXK-part7 -> ../../sda7
lrwxrwxrwx 1 root root 10 May 30 09:00 scsi-SATA_ST9500325AS_S2WBMJXK-part8 -> ../../sda8
lrwxrwxrwx 1 root root  9 May 30 09:00 wwn-0x5000c5004a14b265 -> ../../sda
lrwxrwxrwx 1 root root 10 May 30 09:00 wwn-0x5000c5004a14b265-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 May 30 09:00 wwn-0x5000c5004a14b265-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 May 30 09:00 wwn-0x5000c5004a14b265-part3 -> ../../sda3
lrwxrwxrwx 1 root root 10 May 30 09:00 wwn-0x5000c5004a14b265-part4 -> ../../sda4
lrwxrwxrwx 1 root root 10 May 30 09:00 wwn-0x5000c5004a14b265-part5 -> ../../sda5
lrwxrwxrwx 1 root root 10 May 30 09:00 wwn-0x5000c5004a14b265-part6 -> ../../sda6
lrwxrwxrwx 1 root root 10 May 30 09:00 wwn-0x5000c5004a14b265-part7 -> ../../sda7
lrwxrwxrwx 1 root root 10 May 30 09:00 wwn-0x5000c5004a14b265-part8 -> ../../sda8
*********************** END /dev/disk/by-id

*********************** BEGIN /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root 10 May 30 09:00 060685010684F2CB -> ../../sda1
lrwxrwxrwx 1 root root 10 May 30 09:00 1216342E16341567 -> ../../sda3
lrwxrwxrwx 1 root root 10 May 30 09:00 3A68797D687938A9 -> ../../sda2
lrwxrwxrwx 1 root root 10 May 30 09:00 472ce3ae-0c25-4e47-b536-7c4df73a74d1 -> ../../dm-1
lrwxrwxrwx 1 root root 10 May 30 09:00 70c5b5f0-7eaa-43d1-94ab-728c3eefe51a -> ../../sda8
lrwxrwxrwx 1 root root 10 May 30 09:00 723F-402B -> ../../sda5
lrwxrwxrwx 1 root root 10 May 30  2014 cab2c5d5-4664-4105-bcbd-fcb860cc035d -> ../../dm-0
lrwxrwxrwx 1 root root 10 May 30 09:00 f4c568a7-a3f1-4007-b95e-acf692c7f6a2 -> ../../sda7
*********************** END /dev/disk/by-uuid

-- System Information:
Debian Release: 7.5
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=nl_NL.UTF-8, LC_CTYPE=nl_NL.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages grub-pc depends on:
ii  debconf [debconf-2.0]  1.5.49
ii  grub-common            1.99-27+deb7u2
ii  grub-pc-bin            1.99-27+deb7u2
ii  grub2-common           1.99-27+deb7u2
ii  ucf                    3.0025+nmu3

grub-pc recommends no packages.

grub-pc suggests no packages.

-- debconf information:
  grub-pc/kopt_extracted: false
  grub2/kfreebsd_cmdline:
  grub2/device_map_regenerated:
* grub-pc/install_devices: /dev/disk/by-id/ata-ST9500325AS_S2WBMJXK
  grub-pc/postrm_purge_boot_grub: false
  grub-pc/install_devices_failed_upgrade: true
  grub-pc/disk_description:
* grub2/linux_cmdline:
  grub-pc/install_devices_empty: false
  grub2/kfreebsd_cmdline_default: quiet
  grub-pc/partition_description:
  grub-pc/install_devices_failed: false
  grub-pc/install_devices_disks_changed:
* grub2/linux_cmdline_default: quiet
  grub-pc/chainload_from_menu.lst: true
  grub-pc/mixed_legacy_and_grub2: true



More information about the Pkg-grub-devel mailing list