Try building a new kernel with the drivers for the hard drive controllers built in. Anyway, that is sort of the purist LFS way. A method to discover what those drivers are is to study your host Linux system (it always provides these kinds of answers). Or boot with a recent version of a live CD of some popular distro and study what it loads for your hardware.
If you have IDE drives to deal with, then lspci -k often will reveal the driver modules in use for those. You then can search for those driver modules in the kernel config editor (menuconfig) to find the kconfig option, or I often search with Google or Yahoo for the driver module name specifying site:cateee.net after typing in the driver name. That usually takes me right to the page with the driver module and reveals the kconfig option name and often a list of the devices it supports. Actually, you can do that for most or all of the modules listed by lsmod as a way to learn what all those things are. Anyway, I still have IDE drives in several computers. I don't remember which ones need what, so I build in all of their drivers so they exist in the system when it is cloned to different computers. Just as an example only, this is from my own notes from the configuration of kernel version 4.6.3...
Code:
SATA/PATA drivers | |...<*> Serial ATA and Parallel ATA drivers ---> (CONFIG_ATA=y)
(build these in) | | |
| | |...[*] ATA ACPI Support (CONFIG_ATA_ACPI=y)
| | |
| | |...<*> AHCI SATA support (CONFIG_SATA_AHCI=y)
| | |
| | |...[*] ATA SFF support (CONFIG_ATA_SFF=y)
| | |
| | |...[*] ATA BMDMA support (CONFIG_ATA_BMDMA=y)
| | |
| | |...<*> Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support (CONFIG_ATA_PIIX=y)
| | |
| | |...<*> Marvell PATA support via legacy mode (CONFIG_PATA_MARVELL=y)
| | |
| | |...<*> Intel PATA old PIIX support (CONFIG_PATA_OLDPIIX=y)
| | |
| | |...<*> Intel SCH PATA support (CONFIG_PATA_SCH=y)
| | |
| | |...<*> Intel PATA MPIIX support (CONFIG_PATA_MPIIX=y)
| | |
| | |...<*> ACPI firmware driver for PATA (CONFIG_PATA_ACPI=y)
| | |
| | |...<*> Generic ATA support (CONFIG_ATA_GENERIC=y)
| | |
For SATA drives, you can study lsmod for modules related to those. I build in these and get by...
Code:
SCSI drivers | |... SCSI device support --->
(build these in) | | |
| | |...-*- SCSI device support (CONFIG_SCSI=y, module=scsi_mod)
| | |
| | |...<*> SCSI disk support (CONFIG_BLK_DEV_SD=y, module=sd_mod)
| | |
| | |...<*> SCSI CDROM support (CONFIG_BLK_DEV_SR=y, module=sr_mod)
| | |
| | |...<*> SCSI generic support (CONFIG_CHR_DEV_SG=y, module=sg)
USB drives are not a problem and their drivers can be built as modules UNLESS your system is on a USB drive and booting from it. If your system is on a USB drive, then build those drivers in also. They will have names in lsmod such as usbcore, usb_storage, ehci_hcd, ehci_platform, ohci_hcd, ohci_pci, ohci_platform, uhci_hcd. An initial ram filesystem to allow using LABEL or UUID for booting a USB drive is also a good idea (and a BLFS topic).