質問が投稿されてから、しばらく経過しているのですでに解消されているかもしれませんが、回答が付いておりませんでしたので、あくまでも私の解決方法ということで記載しておきます。
almalinux/8というBoxを利用し、Vagrantのプラグインでvagrant-vbguestをインストールしているときに同じ状況に陥りしました。
(正確には、このプラグインをインストールする前に問題なくup、作業後にhalt、その後このプラグインをインストールした後にupをしようとしてこの状況になりました)
私もVagrant初心者なのでいろいろ間違っているかもしれませんが、私の方ではこう解決しました。
環境
- Windows 10
- Vagrant 2.2.19
- VirtualBox 6.1.32
- 利用Box almalinux/8 (virtualbox, 8.5.20211208)
- Vagrantプラグイン vagrant-vbguest (0.30.0, global)
とりあえずupする
bash
1vagrant plugin list
2vagrant plugin uninstall vagrant-vbguest
3vagrant plugin list
これだけで、halt後にupはできると思います。(できなければ以後の説明が違ってくる可能性が高いです)
プラグイン vagrant-vbguest について
vagrant-vbguestというプラグインは利用しているVirtualBoxとGuest Additionsのバージョンの違いがあるかのチェックや、up時に違いがあった場合には自動で適切なバージョンをインストールしてくれるというプラグイン、という認識です。
そのためこのプラグインはインストールしておいた方がよいかと思いますが、そうなるとvagrant upができないので、以下のように解決しました。
そもそもなぜ失敗するか
「/mnt」というディレクトリが立ち上げるゲストにないのが問題、という認識です。
(実際に、upしたゲストに入ってls /
すると/mntがありませんでした)
以下はこの部分は私の勝手な解釈で、まちがっているかもしれません。
- 前提
- HostがVirtualBoxのVagrantは共有フォルダを提供している
- 共有フォルダの機能はVirtualBoxのGuest Additionsの機能を利用している
- VirtualBoxのバージョンが上がるとGuest Additionsも新しいバージョンとなる
- 動き
- Vagrantのプラグインvagrant-vbguestはゲストをupした際に、VirtualBoxのバージョンとゲストにインストール済みのGuest Additionsのバージョンを確認する
- ゲスト内のGuest Additionのバージョンが、VirtualBoxのバージョンよりも古い場合は、自動でGuest Additionを新バージョンへアップデートしようとする
- その際に、立ち上げたゲスト内でVirtualBoxのGuest Additionsのインストール用isoイメージを/mntにマウントさせようとする
- しかしその仮想サーバに/mntというディレクトリが存在していなくて、/mntへのマウントに失敗
解決方法
vagrant-vbguestのドキュメントを見ると、Guest Additionsのマウント先をオプションで変更できました。
https://github.com/dotless-de/vagrant-vbguest/blob/main/Readme.md#config-options
デフォルトでは「/mnt」となっているようですが、上記の通りこのディレクトリがありません。
私の利用したBox(almalinux/8 (virtualbox, 8.5.20211208))をとりあえずupすると「/media」という空のディレクトリがありましたので、ここにマウントさせるようにします。
この指定は具体的には、Vagrantfile内に指定するようです。
Vagrantfile内で、end
の前に以下の1行を追記してから、upしました。
ruby
1 config.vbguest.iso_mount_point = "/media"
これでupできると思います。
おそらくupの途中で以下のようなものが出ると思います。
[default] GuestAdditions versions on your host (6.1.32) and guest (6.1.28) do not match.
ここがHostのバージョンが6.1.32だけれど、Guest側のGuest Additionsのバージョンが6.1.28で合っていないよ、という表示です。
この後に、Guest Additionsをインストールするために必要な追加パッケージが自動でインストールされます。
私のところでは、kernel-develやmake、glibc-develなど10パッケージが自動でインストールされました。
なお、以下のように古いバージョンのvagrant-vbguestをインストールするとうまくいったという書き込みも見かけましたが私のところではだめでした。
bash
1vagrant plugin uninstall vagrant-vbguest
2vagrant plugin install vagrant-vbguest --plugin-version 0.21
蛇足ではありますが、upした後にホスト側で以下のようにするとGuest Additionsの状況等が見えます。
bash
1vagrant vbguest --status
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。