ソースからビルドするときにプレインストール

ソースからビルドするときにプレインストール

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つのシステムサービス(vgauthdおよびvmtoolsd)、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

関連情報