Laptop with dual GPU freezes or not booting

In some cases especially with older, used laptops or failing hardware a clever method to extend the life of your machine is to completely disable one of the GPUs. Over the past few years, I’ve encountered many broken laptops that either refuse to boot entirely or freeze instantly upon reaching the desktop because a faulty graphics chip triggers a system crash. By forcing the system to bypass the broken GPU and rely solely on the working integrated graphics, you can bypass these hardware failures and keep your laptop running smoothly.

Here is how you can achieve this on Linux:

On Linux systems with dual GPUs (typically an integrated Intel/AMD CPU graphics chip and a dedicated NVIDIA/AMD graphics card), completely forbidding the system from accessing or loading drivers for the dedicated GPU (dGPU) can be done cleanly by blacklisting the kernel modules or using kernel parameters.

Here are the most effective ways to completely hide and disable a specific GPU.


Method 1: Kernel Module Blacklisting (Recommended)

If you want to prevent the system from loading the drivers for your dedicated GPU (e.g., an NVIDIA card using the proprietary nvidia driver or open-source nouveau driver), you can blacklist them via modprobe.

  1. **Create a blacklist configuration file:**Open a terminal and create a new configuration file in /etc/modprobe.d/:

Bash

sudo nano /etc/modprobe.d/disable-dgpu.conf
  1. Add the drivers to the file:
  • For NVIDIA GPUs, paste the following lines:

Plaintext

     blacklist nouveau
     blacklist nvidia
     blacklist nvidia_drm
     blacklist nvidia_modeset
     blacklist nvidia_uvm
     ```
   * **For dedicated AMD GPUs**, paste:
     
```text
     blacklist radeon
     blacklist amdgpu
     ```

3. **Save and exit:**
   Press `Ctrl + O` then `Enter` to save, and `Ctrl + X` to exit.

4. **Update your initramfs/initrd:**
   For the changes to take effect before the graphical interface starts, your system's boot image needs to be updated:
   * **On Ubuntu/Debian based systems:**
     
```bash
     sudo update-initramfs -u
     ```
   * **On Fedora/RHEL systems:**
     
```bash
     sudo dracut --force
     ```
   * **On Arch Linux:**
     
```bash
     sudo mkinitcpio -P
     ```

---

### Method 2: Disabling via GRUB Kernel Parameters

Sometimes drivers load so early during the boot sequence that `/etc/modprobe.d/` configurations are bypassed. Adding instructions directly to your GRUB boot loader forces the kernel to ignore the driver entirely.

1. **Edit the GRUB configuration file:**
   
```bash
   sudo nano /etc/default/grub
  1. **Modify the Linux command line:**Locate the line starting with GRUB_CMDLINE_LINUX_DEFAULT (or GRUB_CMDLINE_LINUX) and append the module blacklists.
  • For NVIDIA:

Plaintext

     GRUB_CMDLINE_LINUX_DEFAULT="quiet splash rd.driver.blacklist=nouveau modprobe.blacklist=nouveau rd.driver.blacklist=nvidia modprobe.blacklist=nvidia"
     ```
   * **For AMD:**
     
```text
     GRUB_CMDLINE_LINUX_DEFAULT="quiet splash rd.driver.blacklist=amdgpu modprobe.blacklist=amdgpu"
     ```

3. **Update the GRUB bootloader configuration:**
   * **Ubuntu/Debian:**
     ```bash
     sudo update-grub
     ```
   * **Fedora/Arch/RHEL (GRUB2):**
     
```bash
     sudo grub2-mkconfig -o /boot/grub2/grub.cfg
     ```
     *(Note: If your system uses EFI on Arch or Fedora, the target path might be `/boot/efi/EFI/fedora/grub.cfg` or `/boot/grub/grub.cfg`).*

---

### Method 3: Hardware-Level Disabling via udev (Complete Isolation)

If you don't even want the kernel to see the device path, you can use a `udev` rule to remove the device from the PCI bus immediately when detected during boot.

1. **Find your GPU's PCI Address:**
   Run `lspci | grep -E "VGA|3D"` to find the ID of the card you want to block (e.g., `0000:01:00.0`).

2. **Create a udev rule:**
   
```bash
   sudo nano /etc/udev/rules.d/00-remove-dgpu.rules
  1. Paste the following line (replace 0000:01:00.0 with your actual GPU PCI address found in step 1):

Plaintext

   ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", KERNEL=="0000:01:00.0", ATTR{remove}="1"

(Note: 0x10de is the vendor ID for NVIDIA. If you are blocking an AMD card, change it to 0x1002).


Method 4: Check BIOS/UEFI Settings first

Before modifying the operating system config, restart your laptop and spam F2, F12, or Del to enter your BIOS/UEFI setup.

Many modern laptops have a setting under Advanced, Display, or Chipset labeled Display Mode, GPU Working Mode, or Graphics Device. If you switch this from Dynamic/Hybrid/Optimus to UMA Graphics Only or Integrated Only, the laptop firmware completely disconnects power and data lanes to the dedicated GPU, rendering it invisible to the OS entirely.