/etc/grub.d/40_custom file

Grub2 allows to add custom entries. An example Windows on partition /dev/sda1

sudo nano /etc/grub.d/40_custom

.. the contents

menuentry "Windows " {
set root='(hd0,1)'
chainloader +1
}

… save and quit
Ctrl o
Ctrl x
… update grub

sudo update-grub

menuentry

Menuentry for UEFI Windows where Windows boot files are on GPT partition 2 to the /EFI/Microsoft.orig/Boot folder

menuentry 'Windows 10' {
insmod part_gpt
insmod fat
set root='hd0,gpt2'
chainloader /EFI/Microsoft.orig/Boot/bootmgfw.efi
}

40_custom_UEFI

Grub4Dos menuentry for /dev/sda1 fat32

menuentry "grub4dos " {
insmod fat
set root='(hd0,1)'
linux /grub.exe --config-file=/menu.lst
}

reactOS menuentry for /dev/sda1

menuentry "ReactOS" {
set root=(hd0,1)
chainloader +1
parttool (hd0,1) boot+
multiboot /freeldr.sys
}

grub4dos_entry

Read also:
To chainload Grub2 via Grub4Dos

To get Windows boot using Grub4Dos

————————————————————–

Android on partition /dev/sda2

menuentry "Android-x86" {
set root='(hd0,2)'
linux /android-8.1-r2/kernel root=/dev/sda2 androidboot.selinux=permissive vmalloc=192M SRC=/android-8.1-r2
initrd /android-8.1-r2/initrd.img
}