为 VMware 构建最小内核时缺少“/dev/sda”

为 VMware 构建最小内核时缺少“/dev/sda”

我正在尝试使用 buildroot 构建一个最小的 Linux 内核,我想在 VMware 和其他平台上运行它。但是,当我启动内核时,它无法识别硬盘驱动器(即 no /dev/sda)。我想我已经启用了所有需要的驱动程序,但仍然没有。它可以在 Virtualbox 上运行,但不能在 VMware 上运行。

lspci | less
...
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev01)
...
00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)
...

我已经开始make x86_64_defconfig并且我已经启用:

SCSI device support:
    <M> SCSI disk support
    <M> SCSI generic support

Serial ATA and Parallel ATA drivers (libata)
    <M>   AHCI SATA support
    <M>   Platform AHCI SATA support
    <M>       Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support
    <M>     Generic ATA support

我有什么遗漏的吗?我可以找到典型桌面内核的配置文件并以此为基础进行配置吗?我还可以使用更多技巧来确定需要构建哪些模块吗?例如,我可以使用一些标识符在内核的源代码中进行搜索吗?

答案1

我以丑陋的方式解决了我的问题。我会等待将其标记为正确,因为我认为有更好的解决方案。

在尝试了各种解决方案之后,其中包括尝试从/sys/readlink /sys/block/sda/device/driver等)获取信息。但我只找到信息说它是某种SCSI驱动程序,这对我没有帮助。最后我使用了我的桌面内核配置,并加载了所有模块直到/dev/sd*出现。起初我被加载欺骗了scsi_debug,它还呈现了一个/dev/sda.我需要的模块是mptspi,它是FUSION_SPI在 Linux 内核中启用的。我在搜索源代码树后了解到这一点。这是我用来识别驱动程序的脚本:

for MODULE in $(find /lib/modules/$(uname -r) -name '*.ko' -exec basename '{}' .ko ';')
do
    echo "Loading $MODULE"
    modprobe -D $MODULE
    modprobe $MODULE
    ls /dev/sd* 2>&1
done

我跑的

./script | tee script.log

mdev下次我可能会使用/ udev...设置一些解决方案

答案2

也许您的磁盘位于LVM分区上。 check : /dev/mapper/lvm 您也可以使用dflsblk命令来查找磁盘的该路径。 mount命令也会有帮助。

相关内容