The Kali documentation page provides most of the info on how to do this, linked here. However they do not mention how to configure Grub to display the options to make this possible and selectable.
Resize the Windows partition
Before we can install Kali Linux, there needs to be room on the hard disk.
Check to see if you have at least 20 Gb free on the hard disk you want to resize.
Also, before resizing the disk, we need to make sure that Fast Startup is turned off in Windows 10 so that we don’t get an error while resizing the partition.
To do that:- Open Control Panel > Hardware and Sound > Power Options > On the left, click Choose what the power buttons do > Then at the top, click Change Settings that are currently unavailable (This will ask for administrator permissions). Now unselect the Turn on fast startup option and click Save Changes at the bottom. Now you are ready to resize the partition.
You can resize your partition from Windows, by right clicking your Start Button or pressing WindowsKey+X on your keyboard, and selecting Disk Management.
Select the drive that you want to resize, or shrink in our example, right click on the largest volume and select Shrink Volume…
Windows will query the volume for available space to shrink, after which you will be prompted with a window to Enter the amount of space to shrink in MB like in the example below:
After shrinking the partition to your desired size, insert the Kali install USB and boot your computer from that device.
On the Kali Linux boot screen. Select Graphical Install.
If prompted to provide some firmware for network devices (such as your wireless adapter) you can click no and proceed with the installation. Update and install the necessary drivers after we first boot into Kali.
The installation procedure from this point onwards is similar to a Kali Linux Hard Disk install, until the point of the partitioning. At this point, you need to select “Guided – use the largest continuous free space” (rather than “Guided – the entire disk”). This will install Kali on the partition that we setup earlier in Windows.
At this point your PC should boot directly into Linux without the giving you an option to select the OS.
To configure GRUB to see the windows install, we need to enable the os-prober in it’s config file. Open /etc/default/grub in your favorite editor, for example sudo nano /etc/default/grub and add the line below:
Save and exit the file, then run sudo update-grub. You should see something as below:
Generating grub configuration file ... Found theme: /boot/grub/themes/kali/theme.txt Found background image: /usr/share/images/desktop-base/desktop-grub.png Found linux image: /boot/vmlinuz-5.18.0-kali5-amd64 Found initrd image: /boot/initrd.img-5.18.0-kali5-amd64 Found linux image: /boot/vmlinuz-5.18.0-kali5-amd64 Found initrd image: /boot/initrd.img-5.18.0-kali5-amd64 Warning: os-prober will be executed to detect other bootable partitions. Its output will be used to detect bootable binaries on them and create new boot entries. Found Windows Boot Manager on /dev/nvme1n1p1@/efi/Microsoft/Boot/bootmgfw.efi Adding boot menu entry for UEFI Firmware Settings ... done
As in the example above os-prober is being used and it found a Windows Boot Manager.
Reboot the machine and you should now see an option for Windows, generally placed at the bottom.
Working in IT for more than 15 years now, I’ve ran into and solved problems that are very specific to network and system administration.
I have implemented my expertise in designing, developing and executing technical solutions that have passed the test of time, managing simple and complex systems, and administrating networks.