Fix: “No hard drives have been found” When Installing Linux

Fix: “No hard drives have been found” When Installing Linux

Problem Description

When installing Linux, the installer displays:

No hard drives have been found.

You probably need to manually choose device drivers for the installation to succeed.

Would you like to select drivers now?

This means the installer has not detected any usable hard disk. You may need to manually select or load the driver for the disk controller.

Cause Analysis

A common cause is that the installer does not support the current hard disk controller mode. This is especially likely with older Linux distributions, older kernels, virtual machines using SCSI disks by default, or physical machines with SATA/AHCI mode enabled.

If you are installing inside a virtual machine, the hard disk created by default may be a SCSI device, which older installers may not recognize. You can switch to an IDE virtual disk instead.

If you are installing on a physical machine, you may need to switch the SATA controller in the BIOS to compatibility mode, legacy mode, or IDE mode, or load the corresponding SATA/SCSI/RAID controller driver during installation.

Solutions

Virtual Machines

The hard disk created by default in a virtual machine may be a SCSI device. For older Linux installers that do not support that controller, switch to an IDE disk.

Steps:

  1. Shut down the virtual machine.
  2. In the virtual machine settings, remove the current SCSI virtual hard disk.
  3. Add a new IDE virtual hard disk.
  4. Restart the installer and check whether the hard disk is detected.

Note: Before deleting a virtual hard disk, make sure it does not contain data you need to keep. If it already contains data, back it up first or test by adding a new IDE disk instead.

Physical Machines

Option 1: Load the SATA/SCSI/RAID Driver

Find the SATA, SCSI, or RAID driver for the motherboard, server, or disk controller, and manually load it when the installer prompts you to load a driver.

This approach is usually relevant for special hardware or older Linux versions, such as some server distributions. Newer Linux kernels generally include many SATA/AHCI drivers, so vendors often provide drivers only for specific system versions, such as RHEL 4/5 or SUSE Enterprise editions. Some server motherboards or dedicated RAID cards may also require proprietary drivers.

Option 2: Enable SATA Compatibility Mode

Enter the BIOS/UEFI and change the SATA controller mode from AHCI, RAID, or Enhanced to a compatible mode such as Compatibility, Legacy, or IDE.

The exact path varies by motherboard, but the usual steps are:

  1. Press F1, F2, Del, or Esc during startup to enter the BIOS/UEFI.
  2. Find an option such as Config -> SATA, Storage Configuration, or Integrated Peripherals.
  3. Change the SATA mode to Compatibility, Legacy, or IDE.
  4. Save the settings, reboot, and install Linux again.

Note: If the existing Windows installation was installed in AHCI or RAID mode, switching to IDE/Compatibility mode may prevent Windows from booting normally. Whether repair or reinstallation is needed depends on the Windows version and driver configuration. Compatibility mode may also sacrifice some SATA/AHCI performance features, such as NCQ.

Suggested Checks

If possible, using a newer Linux installation image is recommended, because newer kernels usually have better support for SATA/AHCI/NVMe controllers. Before installation, you can also enter the installer environment or a Live system and run the following commands to check whether the hard disk is detected:

lsblk
lspci | grep -i -E 'sata|ahci|raid|scsi|nvme'
dmesg | grep -i -E 'sata|ahci|raid|scsi|nvme|disk'

If lsblk does not show the target hard disk, first check the BIOS/UEFI disk mode, the virtual machine disk type, and whether the installation image is too old.

Leave a Reply