ホストOSとゲストOSでフォルダを共有する

ホストOSから仮想環境上のゲストOSにファイルを渡す時はFTPツールなどを使って渡す必要があったり、仮想環境を削除するとファイルが消えてしまったりといった不便さが出てきてしまいますが、フォルダを共有しておくことによって、その不便さを解消することができます。

作業環境

ホストOSWindows 10 21H1(19043.1826) 64bit
仮想化ソフトウェアVirtualBox 6.1.34 r150636 (Qt5.6.2)
ゲストOSUbuntu 22.04(Ubuntu Server版)

コマンドプロンプトで確認

winver
ver
wmic os get osarchitecture

設定手順

ホストOSに共有するフォルダを作成

任意の場所にフォルダを作成します。

仮想環境に共有設定を追加する

VirtualBoxを開き、フォルダを紐づけたい仮想環境を選択後、[設定]を押下します。
※仮想環境が[実行中]になってますが、停止した状態で設定してください。

[共有フォルダー]タブを開き、紐づけるフォルダを追加します。

[フォルダーのパス]にホストOS側のフォルダ、[マウントポイント]にゲストOS側のマウント先を設定します。
後で手動マウントするので自動マウントのチェックは入れませんでした。
※自動マウントにすると権限周りがきつくなるため。

仮想環境を起動し、手動でマウントする

マウントポイントのフォルダが存在するか確認します。

# マウントポイントで"/share"を指定したので、そこに存在するか確認
# おそらく自動でフォルダが作成されているはずですが
# なければ自分で作成してください。
ls -l / | grep share

============================================================
drwxr-xr-x   2 root root       4096 Aug 10 06:24 share
============================================================

visualboxで共有フォルダをマウントするためには下記が必要なのでインストールします。

sudo apt install virtualbox-guest-utils

ホストOSとゲストOSでそれぞれファイルを格納してみます。

# マウント直後はホストOS側が優先されることを確認するために格納するだけですので
# この手順は必須ではありません。
# もし実施する場合は、消えてもいいファイルを格納してください。
sudo touch /share/guestos.txt

以下コマンドでマウントします。

sudo mount -t vboxsf share /share

この時点でホストOS側のフォルダがマウントされ、ゲストOSで作ったファイルは消えてしまうことが確認できると思います。

ls /share

============================================================
hostos.txt
============================================================

改めてゲストOS側にファイルを作成し、ホストOSと共有できることを確認します。

sudo touch /share/guestos2.txt
ls /share

============================================================
guestos2.txt  hostos.txt
============================================================

マウントを永続化する

/etc/fstabの末尾に下記を追記します。

sudo vim /etc/fstab

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
share	/share	vboxsf	defaults	0	0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

仮想環境を再起動してマウントがされているか確認します。

ls /share

============================================================
guestos2.txt  hostos.txt
============================================================