Skip to content

ホスト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」機能を使用します。

手順

  1. VMの設定:

    • VMを停止した状態で設定を開く。
    • 「共有フォルダー (Shared Folders)」タブを選択。
    • 右側の「+」アイコンをクリック。
    • フォルダーのパス: ホスト側の共有したいフォルダを選択(例: ~/Downloads~/Docker Infrastructure)。
    • フォルダー名: ゲスト側での識別名(例: share)。
    • 自動マウント (Auto-mount): ✅ チェックを入れる。
    • マウントポイント (Mount point): ゲスト側のパス(例: ${HOME}/data)。※空欄でも可(その場合 /media/sf_share になる)。
  2. ゲスト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 を光学ドライブにセットしても同じです)
    • マウントしてインストーラ実行:
    bash
    sudo mkdir -p /media/cdrom
    sudo mount /dev/cdrom /media/cdrom
    sudo sh /media/cdrom/VBoxLinuxAdditions.run
    sudo reboot
  3. 権限の設定: 共有フォルダは vboxsf グループの所有になるため、自分のユーザーをグループに追加します。

    bash
    sudo usermod -aG vboxsf $USER
    # ログアウトして再ログイン(または再起動)で反映

2. UTM (Apple Silicon Mac)

UTM (QEMU) の VirtFS / SPICE WebDAV 機能を使用します。 ※ DebianのCLI版 (GUIなし) の場合、WebDAVモードではなく VirtFS モードが推奨されます。

手順

  1. VMの設定:

    • VMを停止して設定画面を開く。
    • 「共有 (Sharing)」タブを選択。
    • 「ディレクトリ共有」を有効にする。
    • 共有したいホスト側のディレクトリを追加。
  2. ゲストOS側での準備: SPICE WebDAVデーモンなどをインストールします。

    bash
    sudo apt-get update
    sudo apt-get install -y spice-vdagent qemu-guest-agent

    ※ UTMのバージョンや設定(VirtFSかSPICEか)によって必要なパッケージが異なります。

  3. マウント: 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 などを使う。

  4. マウント: VirtioFS を使用している場合 Apple Silicon版の「仮想化」バックエンドを使用している場合はこちらです。

  5. 再起動後も有効にする(永続化) 起動時に自動的に共有ディレクトリをマウントするには、/etc/fstab に設定を追記します [1]。

    VirtFSの場合:

    sh
    share ${HOME}/data 9p trans=virtio,version=9p2000.L,rw,_netdev,nofail 0 0

    VirtioFSの場合:

    sh
    share ${HOME}/data virtiofs rw,nofail 0 0

3. SSHFS (全環境共通・推奨)

VM特有の機能(Guest Additions等)を使わず、SSH通信を使ってディレクトリをマウントする方法です。 設定がシンプルで、環境に依存しないため最もおすすめです。

仕組み

ゲストOSからホストOSは見えませんが、ホストOSからゲストOSは見えています。 なので、「ホストOS側で、ゲストOSのディレクトリをマウントする」形になります。

手順 (Mac / Linux ホスト側で実行)

  1. SSHFSのインストール:

    • Mac: brew install sshfs (macFUSEが必要な場合あり)
    • Ubuntu: sudo apt install sshfs
  2. マウント実行: ゲストOS (192.168.65.11) の /home/debian/Docker Infrastructure を、ホストの ~/vm_mount にマウントする場合:

    bash
    mkdir -p ~/vm_mount
    sshfs debian@192.168.65.11:/home/debian/Docker Infrastructure ~/vm_mount -p 4242
  3. アンマウント:

    bash
    # Mac
    umount ~/vm_mount
    # Linux
    fusermount -u ~/vm_mount

この方法なら、「MacのVSCodeでファイルを編集し、保存したら即座にVM内で反映される」 という理想的な開発環境が作れます。

Released under the MIT License.