소스에서 빌드할 때 사전 설치됨

소스에서 빌드할 때 사전 설치됨

32비트 Centos 7용 vmware 도구를 빌드해 보세요. 다음 중 오류가 발생했습니다 ./configure.

포함 디렉터리는 /lib/modules/3.10.0-693.2.2.el7.centos.plus.i686에서 찾을 수 없습니다.

이 디렉토리를 얻으려면 rpm을 설치해야 할 것 같은데요? 나는 심지어 내가 필요하다는 것을 알았습니다. 커널 플러스-3.10.0-693.2.2.el7.centos.plus.src.rpm. 그러나 나는 이것이 더 많은 RPM을 설치해야 하는 다른 보다 일반적인 패키지의 일부일 뿐이라고 생각합니다.

이와 같은 오류가 발생하면 무엇을 설치할지 알기 위해 어떤 논리를 따라야 합니까? 내 경우에 그 패키지는 무엇입니까?

업데이트 #1

$ gcc --version
...4.8.5 20150323

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

주문하다

$ 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

주문하다

$ 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

답변1

접미사가 포함된 패키지를 설치하면 안 됩니다 .src.rpm. 자신의 시스템에서 RPM 패키지를 구축하려면 이 접미사가 붙은 패키지가 필요합니다.

VMware Tools(VBox Tools라고도 함)는 커널용 모듈을 빌드합니다. 따라서 컴파일러, 커널 헤더 및 빌드 환경(특정 사전 정의된 매크로 및 여러 스크립트가 포함된 Makefile)과 같은 도구가 필요합니다.

컴파일러는 패키지로 제공됩니다 gcc-<version>. 실행 중인 커널의 컴파일러 버전( cat /proc/version=> gcc version)이 설치된 컴파일러 패키지와 동일한 지 확인해야 합니다 gcc-<version>.

kernel-devel-$(uname -r)빌드 환경이 포함된 커널 헤더는 Centos 7 패키지에 제공됩니다.

이것이 VMware 도구(또는 VBox 도구)를 구축하는 데 필요한 전부입니다.


고쳐 쓰다:

Centos 7 소개 open-vm-tools및 Centos 7 구축. Centos 7은 이미 open-vm-tools리포지토리에 있습니다. 여기에는 2개의 시스템 서비스( vgauthdvmtoolsd), vmware-<something>프로그램 및 문서가 포함되어 있습니다.

open-vm-tools( ) 파일을 다운로드하여 yumdownloader --source open-vm-tools어떻게 빌드되었는지 파일에서 확인했습니다. 매크로 spec에 다음 지시문을 포함합니다.%build

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

따라서 패키지는 모듈을 전혀 제공하지 않습니다. 모듈은 어디에 있나요? 존재하다github open-vm-tools README.md썼다:

Linux 배포판에서 제공하는 open-vm-tools 패키지에는 Linux 드라이버가 포함되어 있지 않습니다.Linux 드라이버는 Linux 커널 자체의 일부로 제공되기 때문에.

이것은 진짜입니다. 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

귀하의 커널 버전을 다운로드했습니다(3.10.0-693.2.2.el7.centos.plus.i686) 내용을 확인합니다.

$ 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

그래서. 모듈과 도구는 저장소에서 제공됩니다. 도구를 다시 빌드할 수 있지만 --without-kernel-modules모듈을 다시 빌드하려면(필요한지 의심스럽습니다) 커널 패키지를 다시 빌드해야 합니다. 자세한 지침은 다음을 참조하세요.센토스 위키.


업데이트 2:

서비스 설정. 컴파일 도구를 성공적으로 설치한 후 /usr/lib/systemd/system다음 콘텐츠가 포함된 서비스 파일 2개를 생성해야 합니다.

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

.reload 모듈 종속성을 생성할 때 사용해야 합니다 systemctd daemon-reload. 이후에 systemctl start vmtoolsd또는 을 호출하여 서비스를 시작할 수 있습니다 systemctl start vgauthd.

관련 정보