ホストOSとゲストOS(VM)間でのディレクトリ共有・マウントガイド
開発効率を上げるために、ホストOS(Mac/Windows/Ubuntu)のフォルダを、ゲストOS(Debian VM)の中から直接読み書きできるようにする設定(共有フォルダ)の手順です。
NOTE
いつ設定すべき?: 共有フォルダ機能を使うには、ゲストOSのインストール完了後 に、ゲストOS内で専用のドライバー(Guest Additions等)をインストールする必要があります。VMを作成した直後(OSインストール前)にはまだ使えません。
1. VirtualBox (校舎PC / Intel Mac / Windows)
VirtualBoxの「Guest Additions」機能を使用します。
手順
VMの設定:
- VMを停止した状態で設定を開く。
- 「共有フォルダー (Shared Folders)」タブを選択。
- 右側の「+」アイコンをクリック。
- フォルダーのパス: ホスト側の共有したいフォルダを選択(例:
~/Downloadsや~/Docker Infrastructure)。 - フォルダー名: ゲスト側での識別名(例:
share)。 - 自動マウント (Auto-mount): ✅ チェックを入れる。
- マウントポイント (Mount point): ゲスト側のパス(例:
${HOME}/data)。※空欄でも可(その場合/media/sf_shareになる)。
ゲストOS側での準備: VMを起動し、Guest Additions CDイメージを挿入してインストールします(CUIのみの場合は少し複雑です)。
bash# 必要なパッケージのインストール sudo apt-get update sudo apt-get install -y build-essential dkms linux-headers-$(uname -r)- VirtualBoxのメニューから「Devices」->「Insert Guest Additions CD image...」を選択。
- (または、VM設定の「ストレージ」で
VBoxGuestAdditions.isoを光学ドライブにセットしても同じです) - マウントしてインストーラ実行:
bashsudo mkdir -p /media/cdrom sudo mount /dev/cdrom /media/cdrom sudo sh /media/cdrom/VBoxLinuxAdditions.run sudo reboot権限の設定: 共有フォルダは
vboxsfグループの所有になるため、自分のユーザーをグループに追加します。bashsudo usermod -aG vboxsf $USER # ログアウトして再ログイン(または再起動)で反映
2. UTM (Apple Silicon Mac)
UTM (QEMU) の VirtFS / SPICE WebDAV 機能を使用します。 ※ DebianのCLI版 (GUIなし) の場合、WebDAVモードではなく VirtFS モードが推奨されます。
手順
VMの設定:
- VMを停止して設定画面を開く。
- 「共有 (Sharing)」タブを選択。
- 「ディレクトリ共有」を有効にする。
- 共有したいホスト側のディレクトリを追加。
ゲストOS側での準備: SPICE WebDAVデーモンなどをインストールします。
bashsudo apt-get update sudo apt-get install -y spice-vdagent qemu-guest-agent※ UTMのバージョンや設定(VirtFSかSPICEか)によって必要なパッケージが異なります。
マウント: VirtFS (9p) の場合 Debianの標準カーネルでサポートされています。以下のコマンドを実行してください。
bash# マウントポイントの作成(例:/mnt/data) sudo mkdir -p ${HOME}/data # マウントの実行(タグ名はデフォルトで "share" です) sudo mount -t 9p -o trans=virtio,version=9p2000.L share ${HOME}/data # umount (マウント解除) sudo umount ${HOME}/data通常は
/mnt/dataなどを使う。マウント: VirtioFS を使用している場合 Apple Silicon版の「仮想化」バックエンドを使用している場合はこちらです。
再起動後も有効にする(永続化) 起動時に自動的に共有ディレクトリをマウントするには、/etc/fstab に設定を追記します [1]。
VirtFSの場合:
shshare ${HOME}/data 9p trans=virtio,version=9p2000.L,rw,_netdev,nofail 0 0VirtioFSの場合:
shshare ${HOME}/data virtiofs rw,nofail 0 0
3. SSHFS (全環境共通・推奨)
VM特有の機能(Guest Additions等)を使わず、SSH通信を使ってディレクトリをマウントする方法です。 設定がシンプルで、環境に依存しないため最もおすすめです。
仕組み
ゲストOSからホストOSは見えませんが、ホストOSからゲストOSは見えています。 なので、「ホストOS側で、ゲストOSのディレクトリをマウントする」形になります。
手順 (Mac / Linux ホスト側で実行)
SSHFSのインストール:
- Mac:
brew install sshfs(macFUSEが必要な場合あり) - Ubuntu:
sudo apt install sshfs
- Mac:
マウント実行: ゲストOS (
192.168.65.11) の/home/debian/Docker Infrastructureを、ホストの~/vm_mountにマウントする場合:bashmkdir -p ~/vm_mount sshfs debian@192.168.65.11:/home/debian/Docker Infrastructure ~/vm_mount -p 4242アンマウント:
bash# Mac umount ~/vm_mount # Linux fusermount -u ~/vm_mount
この方法なら、「MacのVSCodeでファイルを編集し、保存したら即座にVM内で反映される」 という理想的な開発環境が作れます。