Pré-instala ao construir a partir da origem

0

Tentando construir ferramentas vmware para o Centos de 32 bits 7. Recebemos erro durante ./configure :

Can't find include dir under /lib/modules/3.10.0-693.2.2.el7.centos.plus.i686

Suponho que devo instalar alguns rpm para obter este diretório? Eu até achei que precisava kernel-plus-3.10.0-693.2.2.el7.centos.plus.src.rpm . Mas eu também suponho que seja apenas parte de outro pacote mais geral e eu precisarei instalar muitos mais RPMs.

Que lógica devo seguir para saber o que instalar quando obtenho esse erro? O que é esse pacote no meu caso?

UPDATE # 1

$ gcc --version
...4.8.5 20150323

$ cat /proc/version
Linux version 3,10,0 ...
gcc version 4.8.5 20150323

comando

$ sudo yum install kernel-devel
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Package kernel-devel-3.10.0-693.21.1.el7.centos.plus.i686 already installed and latest version
Nothing to do

comando

$ ls /lib/modules/3.10.0-693.2.2.el7.centos.plus.i686/
build              modules.builtin      modules.modesetting  source
extra              modules.builtin.bin  modules.networking   updates
kernel             modules.dep          modules.order        weak-updates
modules.alias      modules.dep.bin      modules.softdep
modules.alias.bin  modules.devname      modules.symbols
modules.block      modules.drm          modules.symbols.bin
    
por vico 06.04.2018 / 10:30

1 resposta

0

Você não deve instalar pacotes com o sufixo .src.rpm . Pacotes com este sufixo necessários para construir pacotes RPM no próprio sistema.

Ferramentas VMware (também ferramentas VBox) criam módulos para o seu kernel. Portanto, ele precisa de ferramentas: compilador, cabeçalhos de kernel e ambiente de criação (Makefiles com macros predefinidas específicas e alguns scripts).

O compilador fornece por gcc-<version> package. Você deve assegurar que a versão do compilador do kernel em execução ( cat /proc/version = > gcc version ) e o pacote de compilador gcc-<version> estejam iguais.

No pacote Centos, 7 kernel-devel-$(uname -r) fornece cabeçalhos de kernel com o ambiente de criação.

Isso é tudo o que você precisa para criar ferramentas VMware (ou ferramentas VBox).

UPD:

Sobre open-vm-tools no Centos 7 e construindo o Centos 7. O Centos 7 já possui open-vm-tools no repositório. Ele contém 2 serviços systemd ( vgauthd e vmtoolsd ), vmware-<something> programas e documentação.

Eu baixei open-vm-tools ( yumdownloader --source open-vm-tools ) para ver no arquivo spec como ele é criado. Em %build macro contém estas instruções:

%configure \
    --without-kernel-modules \
    --enable-xmlsec1 \
    --disable-static

Portanto, o pacote exatamente não fornece módulos. Onde estão os módulos? Em o github open-vm-tools README.md escreveu:

The open-vm-tools packages available with Linux distributions do not include Linux drivers because Linux drivers are available as part of Linux kernel itself.

É verdade. Eu verifiquei no meu Centos 7 (x86_64):

find /lib/modules/$(uname -r) -name 'vm*'
/lib/modules/3.10.0-693.21.1.el7.x86_64/kernel/crypto/vmac.ko.xz
/lib/modules/3.10.0-693.21.1.el7.x86_64/kernel/drivers/gpu/drm/vmwgfx
/lib/modules/3.10.0-693.21.1.el7.x86_64/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko.xz
/lib/modules/3.10.0-693.21.1.el7.x86_64/kernel/drivers/misc/vmw_balloon.ko.xz
/lib/modules/3.10.0-693.21.1.el7.x86_64/kernel/drivers/misc/vmw_vmci
/lib/modules/3.10.0-693.21.1.el7.x86_64/kernel/drivers/misc/vmw_vmci/vmw_vmci.ko.xz
/lib/modules/3.10.0-693.21.1.el7.x86_64/kernel/drivers/net/vmxnet3
/lib/modules/3.10.0-693.21.1.el7.x86_64/kernel/drivers/net/vmxnet3/vmxnet3.ko.xz
/lib/modules/3.10.0-693.21.1.el7.x86_64/kernel/drivers/scsi/vmw_pvscsi.ko.xz
/lib/modules/3.10.0-693.21.1.el7.x86_64/kernel/net/vmw_vsock
/lib/modules/3.10.0-693.21.1.el7.x86_64/kernel/net/vmw_vsock/vmw_vsock_virtio_transport.ko.xz
/lib/modules/3.10.0-693.21.1.el7.x86_64/kernel/net/vmw_vsock/vmw_vsock_virtio_transport_common.ko.xz
/lib/modules/3.10.0-693.21.1.el7.x86_64/kernel/net/vmw_vsock/vmw_vsock_vmci_transport.ko.xz

Eu baixei a sua versão do kernel ( 3.10.0-693.2.2.el7.centos.plus.i686 ) e examine seu conteúdo:

$ ls kernel-3.10.0-693.2.2.el7.centos.plus.i686.rpm
kernel-3.10.0-693.2.2.el7.centos.plus.i686.rpm
$ rpm2cpio kernel-3.10.0-693.2.2.el7.centos.plus.i686.rpm | cpio -idm # content will be extracted to boot and lib directories in this directory
$ find ./lib/ -name 'vm*'
./lib/modules/3.10.0-693.2.2.el7.centos.plus.i686/kernel/crypto/vmac.ko
./lib/modules/3.10.0-693.2.2.el7.centos.plus.i686/kernel/drivers/gpu/drm/vmwgfx
./lib/modules/3.10.0-693.2.2.el7.centos.plus.i686/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko
./lib/modules/3.10.0-693.2.2.el7.centos.plus.i686/kernel/drivers/misc/vmw_balloon.ko
./lib/modules/3.10.0-693.2.2.el7.centos.plus.i686/kernel/drivers/misc/vmw_vmci
./lib/modules/3.10.0-693.2.2.el7.centos.plus.i686/kernel/drivers/misc/vmw_vmci/vmw_vmci.ko
./lib/modules/3.10.0-693.2.2.el7.centos.plus.i686/kernel/drivers/net/vmxnet3
./lib/modules/3.10.0-693.2.2.el7.centos.plus.i686/kernel/drivers/net/vmxnet3/vmxnet3.ko
./lib/modules/3.10.0-693.2.2.el7.centos.plus.i686/kernel/drivers/scsi/vmw_pvscsi.ko
./lib/modules/3.10.0-693.2.2.el7.centos.plus.i686/kernel/net/vmw_vsock
./lib/modules/3.10.0-693.2.2.el7.centos.plus.i686/kernel/net/vmw_vsock/vmw_vsock_virtio_transport.ko
./lib/modules/3.10.0-693.2.2.el7.centos.plus.i686/kernel/net/vmw_vsock/vmw_vsock_virtio_transport_common.ko
./lib/modules/3.10.0-693.2.2.el7.centos.plus.i686/kernel/net/vmw_vsock/vmw_vsock_vmci_transport.ko

Módulos e ferramentas fornecem por repositório. Você pode recriar ferramentas, mas com --without-kernel-modules . Se você quiser reconstruir módulos (duvido que seja necessário) você deve reconstruir o pacote do kernel. Instrução detalhada presente em Wiki do Centos .

UPD2:

Configuração de serviços. Depois que as ferramentas compiladas com sucesso foram instaladas, é necessário criar dois arquivos de serviço em /usr/lib/systemd/system com o seguinte conteúdo:

vmtoolsd.service:

[Unit]
Description=Service for virtual machines hosted on VMware
Documentation=http://github.com/vmware/open-vm-tools
ConditionVirtualization=vmware
Requires=vgauthd.service
After=vgauthd.service

[Service]
ExecStart=/usr/local/bin/vmtoolsd
TimeoutStopSec=5
PrivateTmp=true

[Install]
WantedBy=multi-user.target
Also=vgauthd.service

vgauthd.service:

[Unit]
Description=VGAuth Service for open-vm-tools
Documentation=http://github.com/vmware/open-vm-tools
ConditionVirtualization=vmware
PartOf=vmtoolsd.service

[Service]
ExecStart=/usr/local/bin/VGAuthService -s
TimeoutStopSec=5
PrivateTmp=true

[Install]
RequiredBy=vmtoolsd.service

Quando eles forem criados, você precisará recarregar as dependências dos módulos com systemctd daemon-reload . Depois, você poderá iniciar os serviços chamando systemctl start vmtoolsd ou systemctl start vgauthd .

    
por 06.04.2018 / 11:05