How to set Grub to automatically load Xen kernel

11,591

Solution 1

Through trial and error, I found that it works if I use the submenu name "Xen 4.1-amd64" for GRUB_DEFAULT. I still don't understand why using the menuentry name didn't work...

Solution 2

Are you sure that the old update command update-grub shouldn't be:

grub2-mkconfig -o /boot/grub2/grub.cfg
Share:
11,591

Related videos on Youtube

Cerin
Author by

Cerin

Updated on September 18, 2022

Comments

  • Cerin
    Cerin over 1 year

    How do you configure Grub to automatically use the Xen kernel under Ubuntu 11.10?

    No matter what I do, it loads the first menuentry. The only way I can get it to load Xen is to manually select the kernel, which I can't do if I have to reboot the server remotely, or there's a power failure and the machine automatically boots up when power's restored, etc. It's driving me nuts.

    In my /boot/grub/grub.cfg, the Xen kernel is at index 4 (i.e. it's the 5th menuentry). So I've tried:

    1. Setting GRUB_DEFAULT=4, and running sudo update-grub
    2. Setting GRUB_DEFAULT=saved and GRUB_SAVEDEFAULT=true, and running sudo update-grub
    3. Setting GRUB_DEFAULT="Ubuntu GNU/Linux, with Xen 4.1-amd64 and Linux 3.0.0-16-server", and running sudo update-grub

    None of these work. It continues to load the first menuentry, which is "Ubuntu, with Linux 3.0.0-16-server".

    Below is my current /boot/grub/grub.cfg. What am I doing wrong?

    #
    # 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="Ubuntu GNU/Linux, with Xen 4.1-amd64 and Linux 3.0.0-16-server"
    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 raid
    insmod mdraid1x
    insmod part_msdos
    insmod part_msdos
    insmod ext2
    set root='(mduuid/be73165bc31d6f5cd00d05036c7b964f)'
    search --no-floppy --fs-uuid --set=root d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac
    if loadfont /usr/share/grub/unicode.pf2 ; then
      set gfxmode=auto
      load_video
      insmod gfxterm
      insmod raid
      insmod mdraid1x
      insmod part_msdos
      insmod part_msdos
      insmod ext2
      set root='(mduuid/be73165bc31d6f5cd00d05036c7b964f)'
      search --no-floppy --fs-uuid --set=root d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac
      set locale_dir=($root)/boot/grub/locale
      set lang=en_US
      insmod gettext
    fi
    terminal_output gfxterm
    if [ "${recordfail}" = 1 ]; then
      set timeout=-1
    else
      set timeout=2
    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 3.0.0-16-server' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        set gfxpayload=$linux_gfx_mode
        insmod gzio
        insmod raid
        insmod mdraid1x
        insmod part_msdos
        insmod part_msdos
        insmod ext2
        set root='(mduuid/be73165bc31d6f5cd00d05036c7b964f)'
        search --no-floppy --fs-uuid --set=root d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac
        linux   /boot/vmlinuz-3.0.0-16-server root=UUID=d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac ro   
        initrd  /boot/initrd.img-3.0.0-16-server
    }
    menuentry 'Ubuntu, with Linux 3.0.0-16-server (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        insmod gzio
        insmod raid
        insmod mdraid1x
        insmod part_msdos
        insmod part_msdos
        insmod ext2
        set root='(mduuid/be73165bc31d6f5cd00d05036c7b964f)'
        search --no-floppy --fs-uuid --set=root d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac
        echo    'Loading Linux 3.0.0-16-server ...'
        linux   /boot/vmlinuz-3.0.0-16-server root=UUID=d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac ro recovery nomodeset 
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-3.0.0-16-server
    }
    submenu "Previous Linux versions" {
    menuentry 'Ubuntu, with Linux 3.0.0-12-server' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        set gfxpayload=$linux_gfx_mode
        insmod gzio
        insmod raid
        insmod mdraid1x
        insmod part_msdos
        insmod part_msdos
        insmod ext2
        set root='(mduuid/be73165bc31d6f5cd00d05036c7b964f)'
        search --no-floppy --fs-uuid --set=root d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac
        linux   /boot/vmlinuz-3.0.0-12-server root=UUID=d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac ro   
        initrd  /boot/initrd.img-3.0.0-12-server
    }
    menuentry 'Ubuntu, with Linux 3.0.0-12-server (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        insmod gzio
        insmod raid
        insmod mdraid1x
        insmod part_msdos
        insmod part_msdos
        insmod ext2
        set root='(mduuid/be73165bc31d6f5cd00d05036c7b964f)'
        search --no-floppy --fs-uuid --set=root d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac
        echo    'Loading Linux 3.0.0-12-server ...'
        linux   /boot/vmlinuz-3.0.0-12-server root=UUID=d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac ro recovery nomodeset 
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-3.0.0-12-server
    }
    }
    ### END /etc/grub.d/10_linux ###
    
    ### BEGIN /etc/grub.d/20_linux_xen ###
    submenu "Xen 4.1-amd64" {
    menuentry 'Ubuntu GNU/Linux, with Xen 4.1-amd64 and Linux 3.0.0-16-server' --class ubuntu --class gnu-linux --class gnu --class os --class xen {
        insmod raid
        insmod mdraid1x
        insmod part_msdos
        insmod part_msdos
        insmod ext2
        set root='(mduuid/be73165bc31d6f5cd00d05036c7b964f)'
        search --no-floppy --fs-uuid --set=root d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac
        echo    'Loading Xen 4.1-amd64 ...'
        multiboot   /boot/xen-4.1-amd64.gz placeholder  
        echo    'Loading Linux 3.0.0-16-server ...'
        module  /boot/vmlinuz-3.0.0-16-server placeholder root=UUID=d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac ro  
        echo    'Loading initial ramdisk ...'
        module  /boot/initrd.img-3.0.0-16-server
    }
    menuentry 'Ubuntu GNU/Linux, with Xen 4.1-amd64 and Linux 3.0.0-16-server (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os --class xen {
        insmod raid
        insmod mdraid1x
        insmod part_msdos
        insmod part_msdos
        insmod ext2
        set root='(mduuid/be73165bc31d6f5cd00d05036c7b964f)'
        search --no-floppy --fs-uuid --set=root d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac
        echo    'Loading Xen 4.1-amd64 ...'
        multiboot   /boot/xen-4.1-amd64.gz placeholder 
        echo    'Loading Linux 3.0.0-16-server ...'
        module  /boot/vmlinuz-3.0.0-16-server placeholder root=UUID=d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac ro single 
        echo    'Loading initial ramdisk ...'
        module  /boot/initrd.img-3.0.0-16-server
    }
    menuentry 'Ubuntu GNU/Linux, with Xen 4.1-amd64 and Linux 3.0.0-12-server' --class ubuntu --class gnu-linux --class gnu --class os --class xen {
        insmod raid
        insmod mdraid1x
        insmod part_msdos
        insmod part_msdos
        insmod ext2
        set root='(mduuid/be73165bc31d6f5cd00d05036c7b964f)'
        search --no-floppy --fs-uuid --set=root d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac
        echo    'Loading Xen 4.1-amd64 ...'
        multiboot   /boot/xen-4.1-amd64.gz placeholder  
        echo    'Loading Linux 3.0.0-12-server ...'
        module  /boot/vmlinuz-3.0.0-12-server placeholder root=UUID=d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac ro  
        echo    'Loading initial ramdisk ...'
        module  /boot/initrd.img-3.0.0-12-server
    }
    menuentry 'Ubuntu GNU/Linux, with Xen 4.1-amd64 and Linux 3.0.0-12-server (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os --class xen {
        insmod raid
        insmod mdraid1x
        insmod part_msdos
        insmod part_msdos
        insmod ext2
        set root='(mduuid/be73165bc31d6f5cd00d05036c7b964f)'
        search --no-floppy --fs-uuid --set=root d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac
        echo    'Loading Xen 4.1-amd64 ...'
        multiboot   /boot/xen-4.1-amd64.gz placeholder 
        echo    'Loading Linux 3.0.0-12-server ...'
        module  /boot/vmlinuz-3.0.0-12-server placeholder root=UUID=d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac ro single 
        echo    'Loading initial ramdisk ...'
        module  /boot/initrd.img-3.0.0-12-server
    }
    }
    ### END /etc/grub.d/20_linux_xen ###
    
    ### BEGIN /etc/grub.d/20_memtest86+ ###
    menuentry "Memory test (memtest86+)" {
        insmod raid
        insmod mdraid1x
        insmod part_msdos
        insmod part_msdos
        insmod ext2
        set root='(mduuid/be73165bc31d6f5cd00d05036c7b964f)'
        search --no-floppy --fs-uuid --set=root d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac
        linux16 /boot/memtest86+.bin
    }
    menuentry "Memory test (memtest86+, serial console 115200)" {
        insmod raid
        insmod mdraid1x
        insmod part_msdos
        insmod part_msdos
        insmod ext2
        set root='(mduuid/be73165bc31d6f5cd00d05036c7b964f)'
        search --no-floppy --fs-uuid --set=root d72bad3f-9ed7-44b9-b3d1-d7af9f62a8ac
        linux16 /boot/memtest86+.bin console=ttyS0,115200n8
    }
    ### END /etc/grub.d/20_memtest86+ ###
    
    ### 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.
    ### 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 ###