Ausente '/ dev / sda' ao construir um kernel mínimo para o VMware

0

Estou tentando construir um kernel Linux mínimo usando o buildroot que quero rodar no VMware, entre outras plataformas. No entanto, quando inicializo o kernel, ele não reconhece o disco rígido (ou seja, não há /dev/sda ). Acho que ativei todos os drivers necessários, mas ainda nada. Ele funciona no Virtualbox, mas não no 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)
...

Eu comecei com make x86_64_defconfig e habilitei:

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

Há algo que estou perdendo? Posso encontrar um arquivo de configuração para um kernel de desktop típico e basear minha configuração nele? Há mais truques que eu possa usar para descobrir quais módulos eu preciso construir? Posso usar algum identificador para pesquisar no código-fonte do kernel, por exemplo?

    
por Kotte 26.04.2016 / 09:35

2 respostas

0

Eu resolvi meu problema do jeito feio. Vou esperar marcando isso como correto, pois acho que há uma solução melhor.

Depois de tentar várias soluções, entre outras tentativas de obter informações de /sys/ ( readlink /sys/block/sda/device/driver etc). Mas eu só encontrei informações de que era algum tipo de driver SCSI, o que não me ajudou. Por fim, usei a configuração do kernel da área de trabalho e carreguei todos os módulos até que /dev/sd* aparecesse. Fui enganado inicialmente ao carregar scsi_debug , que também apresenta um /dev/sda . O módulo que eu precisava era mptspi , que é ativado por FUSION_SPI no kernel do Linux. Eu aprendi isso depois de pesquisar a árvore do código-fonte. Este é o script que usei para identificar o driver:

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

Que eu corri como

./script | tee script.log

Na próxima vez, provavelmente configurarei uma solução usando mdev / udev ...

    
por 27.04.2016 / 09:26
0

Talvez seu disco esteja na partição LVM . Verifica : / dev / mapper / lvm e também você pode usar o comando df ou lsblk para encontrar o caminho do seu disco. O comando mount também ajudará.

    
por 26.04.2016 / 11:59