Results 1 to 2 of 2

Thread: Split screen with vertical white lines when booting in pure terminal without X

Hybrid View

  1. #1
    Join Date
    Mar 2010
    Location
    Chicago, IL
    Beans
    31
    Distro
    Ubuntu 12.04 Precise Pangolin

    Split screen with vertical white lines when booting in pure terminal without X

    I am running Ubuntu 11.04 on a Lenovo Ideapad S10-3t netbook. It runs well under normal operation when I boot normally (load X) and choose a Desktop environment (Unity or LXDE).

    Recently I tried to add a boot menu option to boot straight in to a pure terminal (command line mode) without loading X. Grub2 gives the correct menu options but when I choose the command mode (pure terminal) option the screen splits (horizontally) in to two mirrored sections with vertical white lines across the screen (like a diffraction grating) and some unreadable text appears.

    Although I can't read it I have a feeling that some error is being reported, at the very least I don't get a login prompt. I can however press Ctrl+Alt+F2 and do get a command prompt. However the screen problem persists. I can just manage to enter the 'sudo shutdown -r now' command to force the netbook to restart. I can still get in to a normal X-based desktop environment.

    Here are links to two images of how the screen appears:

    http://i.imgur.com/SYXR3.jpg
    http://i.imgur.com/PDGKa.jpg

    To help diagnose the problem let me describe how I attempted to boot directly in to a pure terminal (command mode). I followed instructions on http://ubuntuguide.net/add-a-grub2-e...lecommand-line and https://help.ubuntu.com/community/Gr...splay_Behavior and started by studying the /boot/grub/grub.cfg file:

    Code:
    #
    # 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
      set have_grubenv=true
      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 recordfail {
      set recordfail=1
      if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
    }
    
    function load_video {
      insmod vbe
      insmod vga
      insmod video_bochs
      insmod video_cirrus
    }
    
    insmod part_msdos
    insmod ext2
    set root='(/dev/sda,msdos2)'
    search --no-floppy --fs-uuid --set=root b5e1f6d7-f1ac-4458-8df5-bb4eba8875ae
    if loadfont /usr/share/grub/unicode.pf2 ; then
      set gfxmode=auto
      load_video
      insmod gfxterm
    fi
    terminal_output gfxterm
    insmod part_msdos
    insmod ext2
    set root='(/dev/sda,msdos2)'
    search --no-floppy --fs-uuid --set=root b5e1f6d7-f1ac-4458-8df5-bb4eba8875ae
    set locale_dir=($root)/boot/grub/locale
    set lang=en_US
    insmod gettext
    if [ "${recordfail}" = 1 ]; then
      set timeout=-1
    else
      set timeout=4
    fi
    ### END /etc/grub.d/00_header ###
    
    ### BEGIN /etc/grub.d/05_debian_theme ###
    set menu_color_normal=white/black
    set menu_color_highlight=black/light-gray
    if background_color 44,0,30; then
      clear
    fi
    ### END /etc/grub.d/05_debian_theme ###
    
    ### BEGIN /etc/grub.d/10_linux ###
    if [ ${recordfail} != 1 ]; then
      if [ -e ${prefix}/gfxblacklist.txt ]; then
        if hwmatch ${prefix}/gfxblacklist.txt 3; then
          if [ ${match} = 0 ]; then
            set linux_gfx_mode=keep
          else
            set linux_gfx_mode=text
          fi
        else
          set linux_gfx_mode=text
        fi
      else
        set linux_gfx_mode=keep
      fi
    else
      set linux_gfx_mode=text
    fi
    export linux_gfx_mode
    if [ "$linux_gfx_mode" != "text" ]; then load_video; fi
    menuentry 'Ubuntu, with Linux 2.6.38-13-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    	recordfail
    	set gfxpayload=$linux_gfx_mode
    	insmod part_msdos
    	insmod ext2
    	set root='(/dev/sda,msdos2)'
    	search --no-floppy --fs-uuid --set=root b5e1f6d7-f1ac-4458-8df5-bb4eba8875ae
    	linux	/boot/vmlinuz-2.6.38-13-generic root=UUID=b5e1f6d7-f1ac-4458-8df5-bb4eba8875ae ro   quiet splash vt.handoff=7
    	initrd	/boot/initrd.img-2.6.38-13-generic
    }
    menuentry 'Ubuntu, with Linux 2.6.38-13-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    	recordfail
    	set gfxpayload=$linux_gfx_mode
    	insmod part_msdos
    	insmod ext2
    	set root='(/dev/sda,msdos2)'
    	search --no-floppy --fs-uuid --set=root b5e1f6d7-f1ac-4458-8df5-bb4eba8875ae
    	echo	'Loading Linux 2.6.38-13-generic ...'
    	linux	/boot/vmlinuz-2.6.38-13-generic root=UUID=b5e1f6d7-f1ac-4458-8df5-bb4eba8875ae ro single 
    	echo	'Loading initial ramdisk ...'
    	initrd	/boot/initrd.img-2.6.38-13-generic
    }
    ### 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 ###
    ### 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.
    
    menuentry 'Ubuntu, with Linux 2.6.38-13-generic (command mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    	recordfail
    	set gfxpayload=$linux_gfx_mode
    	insmod part_msdos
    	insmod ext2
    	set root='(/dev/sda,msdos2)'
    	search --no-floppy --fs-uuid --set=root b5e1f6d7-f1ac-4458-8df5-bb4eba8875ae
    	linux	/boot/vmlinuz-2.6.38-13-generic root=UUID=b5e1f6d7-f1ac-4458-8df5-bb4eba8875ae ro text vt.handoff=7
    	initrd	/boot/initrd.img-2.6.38-13-generic
    }
    ### 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 ###
    I copied the menuentry portion and edited as suggested by the first website and pasted the result in /etc/grub.d/40_custom :

    Code:
    #!/bin/sh
    exec tail -n +3 $0
    # 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.
    
    menuentry 'Ubuntu, with Linux 2.6.38-13-generic (command mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    	recordfail
    	set gfxpayload=$linux_gfx_mode
    	insmod part_msdos
    	insmod ext2
    	set root='(/dev/sda,msdos2)'
    	search --no-floppy --fs-uuid --set=root b5e1f6d7-f1ac-4458-8df5-bb4eba8875ae
    	linux	/boot/vmlinuz-2.6.38-13-generic root=UUID=b5e1f6d7-f1ac-4458-8df5-bb4eba8875ae ro text vt.handoff=7
    	initrd	/boot/initrd.img-2.6.38-13-generic
    }
    The main change is in the second last line (starting with linux) where I replaced 'ro quiet splash vt.handoff=7' with 'ro text vt.handoff=7'. I ended by editing /etc/default/grub so that the menu was not hidden:

    Code:
    # If you change this file, run 'update-grub' afterwards to update
    # /boot/grub/grub.cfg.
    # For full documentation of the options in this file, see:
    #   info -f grub -n 'Simple configuration'
    
    GRUB_DEFAULT=0
    #GRUB_HIDDEN_TIMEOUT=0
    GRUB_HIDDEN_TIMEOUT_QUIET=true
    GRUB_TIMEOUT=4
    GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    GRUB_CMDLINE_LINUX=""
    
    # Uncomment to enable BadRAM filtering, modify to suit your needs
    # This works with Linux (no patch required) and with any kernel that obtains
    # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
    #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
    
    # Uncomment to disable graphical terminal (grub-pc only)
    #GRUB_TERMINAL=console
    
    # The resolution used on graphical terminal
    # note that you can use only modes which your graphic card supports via VBE
    # you can see them in real GRUB with the command `vbeinfo'
    #GRUB_GFXMODE=640x480
    
    # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
    #GRUB_DISABLE_LINUX_UUID=true
    
    # Uncomment to disable generation of recovery mode menu entries
    #GRUB_DISABLE_RECOVERY="true"
    
    # Uncomment to get a beep at grub start
    #GRUB_INIT_TUNE="480 440 1"
    I applied these changes using 'sudo update-grub' and after booting in to command mode the screen problems ensued.

    Finally, the solutions I attempted included changing /etc/default/grub to specify a screen resolution, and various other attempts in the same vein in vain.

    Any help will be greatly appreciated. My thanks in advance.

  2. #2
    Join Date
    Mar 2010
    Location
    Chicago, IL
    Beans
    31
    Distro
    Ubuntu 12.04 Precise Pangolin

    Re: Split screen with vertical white lines when booting in pure terminal without X

    As often happens, I went in to fix one problem and ended up fixing this one as a bonus. Basically I recently installed Gentoo (to try it out) and the terminal session had a very small native screen resolution.

    I read up on framebuffers and found a website that outlined how to change grub2 settings so that the terminal screen settings are inherited from grub2 (which I believe uses a framebuffer).

    What follows is basically lifted completely from: http://crunchbanglinux.org/wiki/howt...b2_framebuffer

    Edit /etc/grub.d/00_header and somewhere around line 131 (depending on comments) you will find the section:

    Code:
    if loadfont `make_system_path_relative_to_its_root "${GRUB_FONT_PATH}"` ; then
      set gfxmode=${GRUB_GFXMODE}
      load_video
      insmod gfxterm
    Simply add a single line to the if block:

    Code:
    if loadfont `make_system_path_relative_to_its_root "${GRUB_FONT_PATH}"` ; then
      set gfxmode=${GRUB_GFXMODE}
      set gfxpayload=keep
      load_video
      insmod gfxterm
    This basically tells grub2 to force the following terminal session to keep the same graphics properties as grub2.


    Next edit /etc/default/grub and add the line:

    Code:
    GRUB_GFXMODE=1024x600x32
    where the first two numbers should be changed to your screen resolution.

    Finally run:
    Code:
    sudo update-grub2
    to update the Grub2 settings.

    Note: The way I did it I added the framebuffer (and updated grub2) before I copied the section from /boot/grub/grub.cfg in to /etc/grub.d/40_custom and modified it to create the terminal only session. This means that the section I copied had already acquired the characteristics from the change to framebuffers (if any). Just something to keep in mind.

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •