実際に何が起きていたか?
今回の環境では以下のような状況でした:
-
現在のカーネル:
6.1.141-165.249.amzn2023.x86_64
- 対応する
kernel-headers
/kernel-devel
が 未インストール
このために発生したのが以下のようなエラーです:
VirtualBox Guest Additions: Kernel headers not found for target kernel
VirtualBox Guest Additions: unable to load vboxsf kernel module, see dmesg
これにより:
-
vboxsf
モジュールがビルドできない -
/vagrant
等の共有フォルダが使えない - Vagrant が「Guest Additions に失敗」とみなして停止
なぜカーネルバージョンとパッケージの一致が必要なのか?
Linux では、カーネルモジュールが 内部構造に強く依存 しています。
別のカーネル向けにビルドされたモジュールを無理に読み込もうとすると、クラッシュや予期せぬ動作 の原因になります。
そのため、モジュールのビルドには 完全一致したカーネル用開発パッケージ が必須です。
解決方法(Amazon Linux 2023 の場合)
1. 仮想マシンにSSHログイン
vagrant ssh
2. カーネルバージョンを確認
uname -r
# 出力例:6.1.141-165.249.amzn2023.x86_64
3. 対応する kernel-headers / kernel-devel をインストール
sudo dnf install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
dnf
がない場合はyum
を試してください(Amazon Linux 2 以前の場合)
4. Guest Additions を再セットアップ
sudo /sbin/rcvboxadd setup
5. 仮想マシンを再起動
sudo reboot
6. Vagrant をホストマシンから再起動(必要なら)
vagrant reload
モジュール構成のまとめ
項目 | 役割 |
---|---|
kernel-headers |
カーネルのインターフェース(ヘッダファイル) |
kernel-devel |
モジュールビルド用のMakefileやソース |
vboxsf |
VirtualBoxの共有フォルダを支えるカーネルモジュール |
Guest Additions |
上記モジュールをビルド・ロードするユーティリティ |
対応する
kernel-devel
/kernel-headers
が無いと、Guest Additions の主要機能は動作しません。
まとめ
- Amazon Linux 2023 を Vagrant × VirtualBox で使う場合は、カーネルと完全一致する開発パッケージのインストールが必須