VMware用の最小カーネルをビルドすると、「/dev/sda」がありません。

VMware用の最小カーネルをビルドすると、「/dev/sda」がありません。

VMwareや他のプラットフォームで実行したい最小のLinuxカーネルを構築するためにbuildrootを使用しようとしています。ただし、カーネルを起動すると、ハードドライブが認識されません(例: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私が必要とするモジュールはLinuxカーネルでアクティブにmptspiなりました。FUSION_SPIソースツリーを検索した結果がわかりました。ドライバを識別するために使用するスクリプトは次のとおりです。

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/...を使用してソリューションを設定することもできます。

おすすめ記事