After spending nearly a week on fixing this issue and searching around i finally found an amazing tutorial which will definitely going to work for you. I don’t know why on official kali.org website they have a tutorial as well but that didn’t work for me i have to restore my Kali Linux.

But here’s an amazing tutorial:

My system:

Code:

Installing NVIDIA Driver and Fix Boot Loading and Freezing Issue

Before we begin,couple of notes:

***USE AT YOUR OWN RISK***
*This tutorial is for official NVIDIA Driver not Bumblebee 
*Tutorial found on official Kali website is BROKEN! It never works for optimus/hybrid Graphics enabled laptop

1. Verify you have hybrid graphics

2.Disable nouveau

3.system will reboot and nouveau should be disabled.verify if nouveau is disabled:

If shows nothing,means nouveau successfully disabled.

4.Install nvidia driver from kali repo:

You can also download latest .run file from nvidia website.execute and procceed with installation.whether its from kali repo or nvidia website,procedure is same.

5.Now we have to find bus id of our nvidia card:

it should show something like this:

This is our Bus ID.
6.Now we generate /etc/X11/xorg.conf file with this bus ID according to nvidia guide http://us.download.nvidia.com/XFree8…E/randr14.html:

Replace the bold string with your Bus ID and save it to /etc/X11/xorg.conf

7.Now we have to create some scripts according to our display manager https://wiki.archlinux.org/index.php…splay_Managers.Since im using default Kali linux which is GDM,i created two files:
/usr/share/gdm/greeter/autostart/optimus.desktop
/etc/xdg/autostart/optimus.desktop
with the following content:

8. Now reboot and you should be using Nvidia Driver.Verify if everything is ok:

Optional: you can now install your cuda toolkits:

FIXING SCREEN TEARING ISSUE:
After you successfully boot up with Nvidia Driver, you most probably experiencing screen tearing issue eg: playing videos in VLC,youtube video on Chrome/Firefox etc.Luckily,we can fix this by enabling PRIME Sync.

1.Verify if PRIME is disabled

it should output something like this:
PRIME Synchronization: 0
PRIME Synchronization: 1

First one is our connected display.So PRIME sync is disabled.
2. Edit /etc/default/grub and append nvidia-drm.modeset=1 in GRUB_CMDLINE_LINUX_DEFAULT after quiet.Like the following:

3.Save the changes.Update grub

4.Reboot your system.
5.Verify if PRIME is enabled:

Now it should output:
PRIME Synchronization: 1
PRIME Synchronization: 1 

If it still shows 0 for you,then there is probably something wrong with your system config/kernel.Since this is still an experimental feature from Nvidia,you are out of luck.

***IF YOU STUCK IN BOOT SCREEN***
Revert what we have done so far:
Press CTRL+ALT+F2 or CTRL+ALT+F3 ,login with your password.

Remove those display manager files we created earlier (for GDM):

Now Reboot! You should be able get back to your old system.