I am taking about the naming of existing/default GRUB boot entry. Currently I've the following options at GRUB screen:

Trisquel GNU/Linux
Advanced options for Trisquel GNU/Linux
Trisquel GNU/Linux, with Linux-Libre 3.13.0-39-lowlatency (recovery mode)
Windows 7 (loader) (on /dev/sda1)
Edubuntu ISO

Where First three entries are default with Trisquel GNU/Linux, 4th is for Windows boot loader and 5th is custom entry defined at /etc/grub.d/40_custom.Now suppose I want to change the name/text of say 4th entry Windows 7 (loader) (on /dev/sda1), then which is the right way?

I found above menu entries at /boot/grub/grub.cfg. Example for that I want to change:

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows 7 (loader) (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-0A7072DF7072D145' {
    insmod part_msdos
    insmod ntfs
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  0A7072DF7072D145
      search --no-floppy --fs-uuid --set=root 0A7072DF7072D145
    parttool ${root} hidden-
    chainloader +1
### END /etc/grub.d/30_os-prober ###

So, Can I safely replace the name/text 'Windows 7 (loader) (on /dev/sda1)' with which I want and then update-grub2?

Briefly I want to know How do I change the name of GRUB boot entry?

  • 2
    If you want custom entries then the right way is to use 40_custom for all your entries. You then disable the other files (chmod -x them with the exception of 00_header and then run update-grub or whatever it's called on your distro). – don_crissti Jan 9 '16 at 17:04

You can change /boot/grub/grub.cfg directly, but this file gets overwritten by update-grub2. If your configuration does not change often, this may be the easiest way for you.

Or take a look at:

Alternatively have a look at this folder /etc/grub.d. From there update-grub2 generates the /boot/grub/grub.cfg file.

You can change the way the auto-generation labels the Windows entries, especially as you only got one Windows installed, by overwriting the specific menuentry command in the 30_os-prober script.

Go to /etc/grub.d/30_os-prober and look for menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --class windows .... Replace the ' ' part with your label, but keep the other options the same.

e.g. on my system:menuentry 'My Windows 7 system' --class windows --class os \$menuentry_id_option 'osprober-chain-$(grub_get_device_id "${DEVICE}")' { EOF

But there is a catch to that: firstly there are two of these entries in 30_os-prober: one for chain), another for efi), thus you should change both. Secondly I guess these changes will be overwritten, once there is an update to these files / to grub.

Another approach:

You can disable the windows part in the 30_os-prober script by commenting # those menuentry ...commands in the windows sections chain) and efi). That will remove the auto-generated windows entry. Then take your current windows bootentry from /boot/grub/grub.cfg and copy it into the custom menu file /etc/grub.d/40_custom.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.