Electronic Team uses cookies to personalize your experience on our website. By continuing to use this site, you agree to our cookie policy. Click here to learn more.

VirtualBoxでSDカードにアクセスする方法

Editorial Team Editorial Team Jan 21, 2025

VirtualBoxを利用する全てのユーザー(初心者から開発者まで)は、VirtualBoxの仮想マシン(VM)でUSBデバイスにアクセスするさまざまなシナリオに直面します。特に、ホストコンピューターに接続されたUSBデバイスにアクセスする場合が重要です。

VirtualBoxユーザー(vboxusers)は、仮想マシン内でUSBパススルーを成功させ、Ethernet(またはその他のネットワーク接続)を介してUSBハードウェアデバイスにアクセスするにはどうすればよいのでしょうか?

以下でその答えを解説します…

この記事では、Ubuntu Linuxを使用したVirtualBoxゲストマシンで、Windowsオペレーティングシステムを実行するホストマシンにSDカードを接続し、Ethernet(またはその他のネットワーク接続)を通じてハードウェアアクセスを有効にするためのステップバイステップの手順を紹介します。

仮想マシン内でUSBデバイスにアクセスする方法
14日間の無料トライアル

以下の手順を実行する前に、USBパススルーに関与するすべてのマシンのドライバが最新であることを確認してください。

プラットフォーム、ツール、OS(VboxManage、Ubuntu、XP、VirtualBox Extension Packsなど)にかかわらず、ドライバが最新または使用しているVirtualBox Extension Packと互換性があることが、USBパススルー成功の鍵です。

ステップ1: SDカードのデバイスIDを確認する

ステップ1-1: コマンドプロンプトを管理者として開く
Windowsオペレーティングシステム(例: XP Pro)を使用している場合、コマンドプロンプトまたはWindows PowerShellを管理者権限で開きます。
(例: “Windows”キー + “x” を押し、メニューから “コマンドプロンプト (管理者)” を選択)

ステップ1-2: wmic コマンドを使用してディスクドライブをリスト表示
PCにSDカードを挿入する前に、以下のコマンドを実行します。Linuxでは、lsusb コマンドを使用してUSBバスなどの詳細情報を確認できます。

wmic diskdrive list brief

出力例:

キャプション デバイスID モデル パーティション数 サイズ
SAMSUNG MZFLV256HCHP-000MV \\.\PHYSICALDRIVE0 SAMSUNG MZFLV256HCHP-000MV 3 256052966400

ステップ1-3: SDカードを挿入して再度コマンドを実行
SDカードをマシンに挿入後、再度同じコマンドを実行します。Linuxの場合はlsusbを使用してUSBデバイス情報を確認します。

新しい行が追加され、SDカードのDeviceIDが表示されます:
例: \\.\PHYSICALDRIVE1

キャプション デバイスID モデル パーティション数 サイズ
Generic- USB3.0 CRW -SD USB Device \\.\PHYSICALDRIVE1 Generic- USB3.0 CRW -SD USB Device 2 31914086400
SAMSUNG MZFLV256HCHP-000MV \\.\PHYSICALDRIVE0 SAMSUNG MZFLV256HCHP-000MV 3 256052966400

注意: 3.0 USBデバイスを使用しているのか、2.0 (EHCI: Enhanced Host Controller Interface)USBデバイスを使用しているのかを確認してください。

ステップ2: SDカードの仮想マシン(VM)ディスクファイルを作成する

ステップ2-1: フォルダをVirtualBoxのインストールフォルダに移動する
以下の例では、インストールフォルダは次のようになります: C:\Program Files\Oracle\VirtualBox\

cd "C:\Program Files\Oracle\VirtualBox\"

ステップ2-2: VBoxManage.exe を使用してVMDKファイルを作成
VBoxManage.exeを用いてSDカードのVMDKファイルを作成します。このコマンドの最後の引数として、SDカードのDeviceIDを指定します。(ステップ1-1から1-3を参照)

.\VBoxManage.exe internalcommands createrawvmdk -filename C:\sdcard.vmdk -rawdisk
\\.\PHYSICALDRIVE1

出力例:
sdcard.vmdk がCドライブのルートフォルダ内に作成されます。

RAW host disk access VMDK file C:\sdcard.vmdk created successfully.

ステップ 3: VMDKを使ってVirtualBoxにSDカードをマウントする

ステップ 3-1: 管理者としてVirtualBox GUIを起動します

VirtualBox GUIを起動する

ステップ 3-2: VirtualBox GUI内で次のパスに移動します:「設定 > ストレージ」

ステップ 3-3:「コントローラー: SATA」をクリックします。

ステップ 3-4:「ホスト I/O キャッシュを使用する」横のチェックボックスをオンにします。

ステップ 3-5:「ハードディスクを追加」アイコンをクリックします(以下の図解を参照)。

ハードディスクを追加アイコンをクリック

ステップ 3-6:「既存のディスクを選択」を選びます。

ステップ 3-7: Cドライブに移動し、ステップ2で作成した「sdcard.vmdk」ファイルを選択します。

ステップ 4: 確認

仮想マシンを起動し、確認を行います。この例では、32GBのSDカードにRaspbian OSイメージが含まれている場合、「/dev/sdb」と表示されます。

$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 29.8 GiB, 32010928128 bytes, 62521344 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb1d773dc

デバイス ブート 開始 終了 セクター サイズ ID タイプ
/dev/sdb1 8192 96453 88262 43.1M c W95 FAT32 (LBA)
/dev/sdb2 98304 31116287 31017984 14.8G 83 Linux

トラブルシューティング

SDカードを使用中に、多くのエラーが発生する場合があります。以下は、VirtualBoxのSDカードパススルーに関するトラブルシューティングのオプションです。

トラブルシューティングオプション 1:

エラー: 「I/Oキャッシュがmedium 'ahci-0-1'内のデータを更新中にエラーが発生しました (rc=VERR_ACCESS_DENIED)」

エラー

このエラーが発生した場合、手順2に戻り、**「ホストI/Oキャッシュを使用」**チェックボックスが選択されていることを確認してください。

トラブルシューティングオプション 2:

エラー: 「メディアレジストリに保存された値と一致しない媒体のUUIDです。」

開けませんでした

VirtualBoxのインストールフォルダ内で、以下のコマンドを実行してください:

.\VBoxManage.exe list hdds

これにより、エラーメッセージの詳細にあるUUIDを特定できます。
例:

UUID: 5b951504-358d-4a6e-bb8f-61be3ec32367
Parent UUID: base
State: inaccessible
Type: normal (base)
Location: C:\Users\max\Desktop\sdcard.vmdk
Storage format: VMDK
Capacity: 0 MBytes
Encryption: disabled

次に、以下のコマンドを使用してディスクを削除します(UUIDを指定してください):

.\VBoxManage.exe closemedium disk 5b951504-358d-4a6e-bb8f-61be3ec32367

logo USB Network Gate
#1 at Networking
USB Network Gate
WindowsでUSBをイーサネット経由で共有
4.7 ランク 以下に基づく 372 + ユーザー