6

This is the content of the grub.cfg file of my Arch Linux system.

#
# 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 ###
insmod part_gpt
insmod part_msdos
if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

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 {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_gpt
insmod ext2
set root='hd0,gpt3'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3  8fb68a6d-5088-47dc-8f9a-63e21ae275d4
else
  search --no-floppy --fs-uuid --set=root 8fb68a6d-5088-47dc-8f9a-63e21ae275d4
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=pt_BR
  insmod gettext
fi
terminal_input console
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=5
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-8fb68a6d-5088-47dc-8f9a-63e21ae275d4' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_gpt
    insmod ext2
    set root='hd0,gpt3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3  8fb68a6d-5088-47dc-8f9a-63e21ae275d4
    else
      search --no-floppy --fs-uuid --set=root 8fb68a6d-5088-47dc-8f9a-63e21ae275d4
    fi
    echo    'Carregando o Linux linux-lts...'
    linux    /boot/vmlinuz-linux-lts root=UUID=8fb68a6d-5088-47dc-8f9a-63e21ae275d4 rw  quiet
    echo    'Carregando o ramdisk inicial...'
    initrd  /boot/initramfs-linux-lts.img
}
submenu 'Opções avançadas para Arch Linux' $menuentry_id_option 'gnulinux-advanced-8fb68a6d-5088-47dc-8f9a-63e21ae275d4' {
    menuentry 'Arch Linux, com o Linux linux-lts' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-lts-advanced-8fb68a6d-5088-47dc-8f9a-63e21ae275d4' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt3'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3  8fb68a6d-5088-47dc-8f9a-63e21ae275d4
        else
          search --no-floppy --fs-uuid --set=root 8fb68a6d-5088-47dc-8f9a-63e21ae275d4
        fi
        echo    'Carregando o Linux linux-lts...'
        linux    /boot/vmlinuz-linux-lts root=UUID=8fb68a6d-5088-47dc-8f9a-63e21ae275d4 rw  quiet
        echo    'Carregando o ramdisk inicial...'
        initrd  /boot/initramfs-linux-lts.img
    }
    menuentry 'Arch Linux, with Linux linux-lts (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-lts-fallback-8fb68a6d-5088-47dc-8f9a-63e21ae275d4' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt3'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3  8fb68a6d-5088-47dc-8f9a-63e21ae275d4
        else
          search --no-floppy --fs-uuid --set=root 8fb68a6d-5088-47dc-8f9a-63e21ae275d4
        fi
        echo    'Carregando o Linux linux-lts...'
        linux    /boot/vmlinuz-linux-lts root=UUID=8fb68a6d-5088-47dc-8f9a-63e21ae275d4 rw  quiet
        echo    'Carregando o ramdisk inicial...'
        initrd  /boot/initramfs-linux-lts-fallback.img
    }
    menuentry 'Arch Linux, com o Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-8fb68a6d-5088-47dc-8f9a-63e21ae275d4' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt3'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3  8fb68a6d-5088-47dc-8f9a-63e21ae275d4
        else
          search --no-floppy --fs-uuid --set=root 8fb68a6d-5088-47dc-8f9a-63e21ae275d4
        fi
        echo    'Carregando o Linux linux...'
        linux    /boot/vmlinuz-linux root=UUID=8fb68a6d-5088-47dc-8f9a-63e21ae275d4 rw  quiet
        echo    'Carregando o ramdisk inicial...'
        initrd  /boot/initramfs-linux.img
    }
    menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-8fb68a6d-5088-47dc-8f9a-63e21ae275d4' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt3'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3  8fb68a6d-5088-47dc-8f9a-63e21ae275d4
        else
          search --no-floppy --fs-uuid --set=root 8fb68a6d-5088-47dc-8f9a-63e21ae275d4
        fi
        echo    'Carregando o Linux linux...'
        linux    /boot/vmlinuz-linux root=UUID=8fb68a6d-5088-47dc-8f9a-63e21ae275d4 rw  quiet
        echo    'Carregando o ramdisk inicial...'
        initrd  /boot/initramfs-linux-fallback.img
    }
}

### 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.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

I want the non-LTS version to be the default version, so I don't need to go to Advanced Options and select the last version when I turn on my computer. How can I do it?

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Júlio César
  • 95
  • 2
  • 7

3 Answers3

5

You can use Grub Customizer to set the default boot entry. Install Grub Customizer by running this as root:

pacman -S grub-customizer

And open it. Go to the tab "General settings" and set the default entry.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
matt-u
  • 66
  • 1
  • 4
  • it worked with the help from bytefire too. i've changed the entry like he said in the grub-customizer that you indicated me. thank you – Júlio César Jun 13 '17 at 21:35
4
  1. Identify the kernel menu entry that you want to use:

    $ sudo grep gnulinux /boot/grub/grub.cfg
    
    menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-811aabe2-ca25-4039-ae49-bd4fa1de5dc3' {
    submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-811aabe2-ca25-4039-ae49-bd4fa1de5dc3' {
        menuentry 'Arch Linux, with Linux linux-ck-skylake' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-ck-skylake-advanced-811aabe2-ca25-4039-ae49-bd4fa1de5dc3'
    ...
    
  2. Edit /etc/default/grub to select your preferred default menu entry. You can refer to a menu entry either by its index in the list of GRUB entries, or by the names show in the previous command.

    # GRUB_DEFAULT=0 # default/first menu entry
    GRUB_DEFAULT='Advanced options for Arch Linux>Arch Linux, with Linux linux-ck-skylake' # your new choice
    

    Note that you can access submenu entries using the >-character, e.g., (0>1 for the first submenu shown in the output of 1., see the wiki entry below for more details.). Apparently, my entry was under the entry of "advanced options".

  3. Update GRUB (I prefer the easy to remember update-grub package, which is default on Debian distro's):

    $ sudo grub-mkconfig -o /boot/grub/grub.cfg
    

Source: The Arch Linux Wiki article on GRUB.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
rien333
  • 1,154
  • 13
  • 15
-1

Before any of this please make sure you can revert to your current state in case this attempt fails.

In your grub.cfg, the section starting with "menuentry 'Arch Linux'" is the one that points to default kernel. To make it point to your chosen kernel:

  1. change the entry starting with "linux /boot/vmlinuz-linux-lts..." to your custom kernel image (e.g. "linux /boot/vmlinuz-linux root=UUID=8fb68a6d-5088-47dc-8f9a-63e21ae275d4 rw quiet" in the same grub.cfg file)

  2. change the entry "initrd /boot/initramfs-linux-lts.img" to initramfs corresponding to your custom kernel.

I guess you already have your custom kernel and corresponding initramfs available. You can always generate initramfs by running # mkinitcpio -g /boot/mycustominitramfs -k /boot/mycustomkernelimage

bytefire
  • 4,156
  • 2
  • 27
  • 36
  • 1
    yes. it helped. i've changed the entry, but not directly in the file. i've changed it using grub-customizer. thank you – Júlio César Jun 13 '17 at 21:34
  • 1
    `grub` recommends against editing the `grub.cfg` file directly. – rien333 Sep 29 '19 at 13:57
  • 1
    the file starts with DO NOT EDIT THIS FILE – Santiago Rebella May 31 '20 at 07:07
  • It is safer to edit file `/etc/grub.d/40_custom`. For instance, clone existing entries from grub.cfg into the file and change them (they will be added as extra menu entries when grub.cfg is updated the standard way). The content of `/etc/grub.d/40_custom` will be included in grub.cfg. And these two nifty entries can also be added there (with proper line endings): `menuentry "Restart" --class restart { echo "System rebooting..." reboot }` and `menuentry "Shutdown" --class shutdown {echo "System shutting down..." halt }` – Peter Mortensen Mar 23 '23 at 04:10