仮想マシン
 Computer >> コンピューター >  >> ソフトウェア >> 仮想マシン

VirtualBox Guest Additions のコンパイル エラー - 修正方法

まず第一に、この記事のタイトルは多くのことを約束しています。ですから、それを絞り込み、期待値を調整しましょう。出発点は、以前に VirtualBox を使用したことがあり、Linux 仮想マシンに Guest Additions をインストールしたことです。現在、何らかの理由で、ゲスト オペレーティング システムで VirtualBox サービスが実行されていません。モジュールを再度インストールしようとすると、おかしなエラーが発生します。これは、カーネル構成の誤り、ソースとヘッダーの欠落、および同様の問題を示しています。物事、これらのどれも意味がありません。

適切なカーネル ソースとヘッダーがありますが、何らかの理由で VirtualBox がそれらを認識していないため、メイン カーネル モジュールのコンパイルが失敗し、仮想マシンの動作に影響を与えています。さらに、これはほぼランダムに発生するようで、カーネルの更新後に発生することがあります。これらすべてを念頭に置いて、いくつかのきちんとした簡単なトリックを使用して問題を解決しようとします.

当面の問題

CentOS 仮想マシンでデモを行いましょう。必要なビルド ツールはすべて揃っており、このオペレーティング システム用の Nvidia ドライバーをセットアップしようとしたときを含め、これまで何度もこの演習を行ってきました。ここでも同じドリルが適用されます。ただし、他のディストリビューションを実行している場合でも、コンパイルできる適切なツールとソフトウェアを入手するプロセスは非常に似ています。コツを掴めば簡単です。ただし、モジュール (/VBoxLinuxAdditions.run) のビルド中に、コマンドが失敗します:

VirtualBox Guest Additions カーネル モジュールのビルド
現在実行中のカーネルのヘッ​​ダーが見つかりませんでした。もしも
次のモジュールのコンパイルが失敗する場合、これは
理由。不足しているパッケージは、おそらく次の方法でインストールできます
yum install kernel-devel-...

メインの Guest Additions モジュールのビルド [失敗]
(/var/log/vboxadd-install.log を見て、何が問題なのかを調べてください)

しかし、おそらく不足しているパッケージをインストールしようとすると:

パッケージ kernel-devel-... がインストール済みで最新バージョン
することは何もありません

ソリューション

ログを参照する必要があります。これは、Dedoimedo での究極の使命である Linux の問題解決スキルを磨くのに役立つ、優れたトラブルシューティングの演習です。ログ ファイルを開き、中身を確認します。最後のエラーから始めて、何が起こったのかを理解しようとする必要があります。注目すべきエラーの 1 つ:

エラー:現在の Linux カーネルのソースが見つかりません。 KERN_DIR= を指定して、Make を再度実行します。止まる。

面白い。 VirtualBox は実際にはカーネル ソースを認識していないようです。次に、修正してから、コマンドを再度実行して、直面している問題が修正されたかどうかを確認しましょう。

export KERN_DIR=/usr/src/kernels/`uname -r`

それでもダメ。別のエラーを探す必要があります。実際、インストールの問題に戻ると、スクリプトはソースではなくヘッダーについて不平を言っていました。これは、私たちの問題が別の場所にある可能性が高いことを意味します。そして、ログをもう一度ブラウジングして、いくつかの追加の洞察を得ます。行の 1 つ - 特定のカーネル バージョンを無視します。これは重要ではありません。

grep:/lib/modules/3.10.0-123.20.1.el7.x86_64/build/include/
linux/version.h:そのようなファイルまたはディレクトリはありません

これは奇妙なバグのように思えます。なぜなら、yum コマンドが戻るときにヘッダーが配置されていることがわかっているからです。実行中のカーネルの /lib/modules ディレクトリに手動で移動すると、実際にはシンボリック リンクが壊れていることがわかります。

ビルド リンクは相対パスを指していますが、これは決して良い考えではありません。そのため、VirtualBox は期待されるソフトウェアを見つけることができません。絶対パスを使用してこれを修正し、問題を完全に回避します。

cd /lib/modules/`uname -r`/
ln -sf /usr/src/kernels/3.10.63-11.el7.x86_64 ビルド

現在、シンボリック リンクは修正されています:

そして、楽しくコンパイルできます:

結論

少し賢く、賢く、よりリラックスして、より幸せなチュートリアルの終わりに到達しました。同様のエラーを引き起こす可能性のある偽陽性の症状が多数あるため、この種の問題は本当に人々を狂気に陥らせ​​る可能性があります。しかし、ビルドの問題を除外すると、以前はこれが正常に機能していたことを思い出すと、VirtualBox とカーネルの非互換性を忘れて、別の場所を探すことができます。

私たちの場合、不適切に実装されたシンボリック リンクがすべての問題の原因です。その理由、または変更された理由はわかりませんが、インストールされたパッケージの一部が変更されたか、システム内の何かが誤動作した可能性があります。重要なのは、ワークフローを理解していることです。ワークフローを遡って問題を修正できます。すごいでしょ?これでガイドは完成です。楽しみ。

乾杯。


  1. DDraw.dll エラーの修正方法

    DirectX DDraw.dll ファイルは、DirectX プログラムにリンクされたダイナミック リンク ライブラリ ファイルであり、この特定のファイルにより、マルチメディア アプリケーションは 2D グラフィックを描画できます。ただし、DirectX プログラムを使用してさまざまな種類のマルチメディアを作成する多くの人が、DDraw.dll ファイルを引用するエラーを経験しています。これは、破損または破損している可能性がある何らかの問題が発生したためです。これは、自分のコンピューターに起因する問題が原因で発生する可能性があります。 DDraw.dll エラーの原因 ddraw.d

  2. VirtualBox でディスクのクローンを作成する方法 - チュートリアル

    ビジネスまたは娯楽で仮想化を使用している場合、VirtualBox に出くわしたことがあるかもしれません。VirtualBox は非常に強力で汎用性の高い無料のソリューションであり、デスクトップ ユーザーがオペレーティング システムを導入する際に非常に柔軟に対応できます。 また、マニアックな趣味で仮想化を楽しんでいるだけの愛好家や、仮想化のおかげで新しいオペレーティング システムの使い方を学んでいる熱心なソフトウェア愛好家以上の場合は、次のシナリオに遭遇することになります。多数の仮想マシンを展開します。 個々のインストールをいじる時間はありません。実際、マシンを 1 つずつ手動で構成す