web-dev-qa-db-ja.com

仮想マシンからSDカードにアクセスする方法

Linux仮想マシンからSDカードをフォーマットしたいです。私のラップトップには内蔵 SDカード リーダーがあります。私は VirtualBoxVMware Player を使ってみて、Ubuntu 10.04ゲストをインストールしました。どれもSDカードリーダーをデバイスとして表示していません。 WindowsホストからSDカードにアクセスできます。

ハードウェアとしてSDカードにアクセスしたいので、共有フォルダを使用するソリューションには興味がありません(/devに表示されるはずです)。

私は基本的に BeagleBoard 用のSDカードをセットアップしたいのですが、物理的なUbuntuを私のPCにインストールしたくはありません。

64
Punit Soni

最近のMacBook Proでは、SDカードスロットはUSBデバイスとして公開されていません。このため、カード全体にアクセスするためには、rawデバイスをVMに接続する必要があります。完全なドキュメンテーションはVirtualBoxドキュメンテーションの 高度なストレージ設定 セクションにあります。

ドキュメントに明確に述べられているように:

警告 - rawハードディスクアクセスは熟練ユーザー向けです。誤った使用方法や古い設定の使用は、物理ディスク上のデータを完全に失う可能性があります。最も重要なことは、ゲスト内で現在実行中のホストオペレーティングシステムでパーティションを起動しようとしないでください。これは深刻なデータ破損につながります。

クイックガイドとして、これらはLinux VMにデバイスを接続するためのステップです:

  1. ホストシステム上のrawディスクブロックデバイスを特定します。

    1. SDカードをスロットに差し込みます
    2. ターミナルを開き、「mount」と入力します。 SDカードからマウントされたボリュームを識別する出力が表示されます。私のシステムでは、次のようになります。

      $ mount
      /dev/disk1 on / (hfs, local, journaled)
      devfs on /dev (devfs, local, nobrowse)
      map -hosts on /net (autofs, nosuid, automounted, nobrowse)
      map auto_home on /home (autofs, automounted, nobrowse)
      /dev/disk2s1 on /Volumes/NO NAME (msdos, local, nodev, nosuid, noowners)`
      
    3. 私の場合、 "NO NAME"ボリュームはSDカードなので、私は/dev/disk2s1の部分に注目します。この場合、s1部分はRAWデバイスのパーティション(スライス)を表すので、後で使用する部分は/dev/disk2部分だけです。

  2. ディスクユーティリティを開き、ボリュームを「マウント解除」します。 「取り出し」ないでください。 OSXは自動的にランダムにマウントし直すので、次の手順で時々ボリュームをマウント解除する必要があるかもしれません。
  3. これで、ターミナルで次のコマンドを使用して、RawBoxを認識するようにVirtualBoxを設定しました。

    1. /path/to/file.vmdkはどこにでも置くことができますが、これを~/VirtualBox VMs/guest-vm/sdcard.vmdkなどのguest VMフォルダーに保存することをお勧めします。
    2. ここで使用している-rawdiskはパーティション(スライス)を参照しているのではなく、ブロックデバイス全体を参照しているだけです。

      $ VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/disk2
      
  4. 次に、VirtualBox UI内のrawディスクをguest VMに接続します。

    1. ゲストVMが実行されていないことを確認してください。
    2. ゲストVMの設定領域を開く
    3. ツールバーの "Storage"をクリック
    4. コントローラの隣にある「Add Hard Disk」のアイコンをクリックしてください。
    5. 「既存のディスクを選択」を選択します
    6. 手順3で使用した/path/to/file.vmdkに移動して選択します
    7. これで、[ストレージ]タブに戻り、リストに自分のfile.vmdkが表示されます。
  5. VMを起動する
  6. GUIがあるかどうかに応じて、SDカードは自動的にマウントされる場合とされない場合があります。手動でマウントする必要がある場合は、単に別の標準ブロックデバイスとして公開されるので、私のゲストでは/ dev/sdbとして公開されていました。

更新

ステップ3.2または4.6でrawデバイスにアクセスするのに問題がある可能性があります。 Sudoでいくつかのコマンドを実行しようとしても、VirtualBoxはあなたのログインユーザーとして実行され、それでも正しいrawデバイスや生成されたvmdkファイルにアクセスすることはできないので、役に立ちません。

私はそれらをテストしていませんが、次のステップは助けになるはずです。

  1. あなたがOSXで使用しているアカウントがシステム環境設定/ユーザーセクションで管理者権限を持っていることを確認してください。ローデバイスアクセスが機能するためには、システム上の主要アカ​​ウントである必要があります。
  2. Rawディスクのアクセス権を確認してください

        $ ls -l /dev/disk2
        brw-r----- 1 jinn staff    14,  5 Aug 26 15:33 /dev/disk2
    

    これらの権限は、現在ログインしているユーザーアカウントと一致する必要があります。

        $ id
        uid=501(jinn) gid=20(staff) ...snip...
    

    デバイス上の許可はまたあなたの通常のユーザアカウントがこのデバイスへの読み取り(r)と書き込み(w)の両方を許可するべきです。デバイスの権限を変更しないでください。絶対にあなたが何をしているのか知りません。


更新#2

OSX Mountain Lionが "root:operator"権限と0640権限を使ってデバイスを作成したことがわかりました。残念ながら今のところこのデバイスにアクセスする唯一の方法はあなたがデバイスを挿入する度にあなたの現在のユーザにそれを "Sudo chown $ USER"することですが、これはあなたが本当に何をしているのか理解しない限りお勧めできません。うまくいけば、AppleかVirtualBoxのどちらかがより適切な解決策を見つけるでしょう。

56
JinnKo

Windowsユーザーへの回答

  1. SDカードリーダーのDeviceIDを取得してください。

    あなたは窓にマウントされたドライブにカードが必要です。

    このコマンドを入力してください

    wmic diskdrive list brief
    

    これは次のようになります。

    C:\Users\Sandy Scott>wmic diskdrive list brief
    Caption                      DeviceID            Model                        Partitions  Size
    WDC WD7500BPKT-75PK4T0       \\.\PHYSICALDRIVE0  WDC WD7500BPKT-75PK4T0       3           750153761280
    O2Micro SD SCSI Disk Device  \\.\PHYSICALDRIVE1  O2Micro SD SCSI Disk Device  1           3964584960
    

    最後のデバイスはSDカードリーダーなので、DeviceIDは\\.\PHYSICALDRIVE1です。

  2. SDカードへのリンクファイルを作成する

    管理者としてコマンドウィンドウを開く

    "C:\Program Files\Oracle\VirtualBox\VBoxManage" internalcommands createrawvmdk -filename "%USERPROFILE%/Desktop/sdcard.vmdk" -rawdisk "\\.\PHYSICALDRIVE1"
    

    これはデフォルトのインストールパスを想定しています - 必要に応じて変更してください。 (引用符がrawdisk引数を囲むようにしてください。)

    .vmdkファイルはSDカードへのリンクです、あなたはそれをあなたのホストシステムのどこにでも置くことができますが、このコマンドは単に便宜上あなたのデスクトップにそれを置く。

  3. JinnKoの答えのステップ4から6に従ってください。唯一のマイナーな調整は、管理者としてVirtualBoxを起動する必要があるということです。

  1. 次に、RawBoxをVirtualBox UI 内のguest VMに接続します。
    1. ゲストVMの電源がオフになっていることを確認してください。
    2. VirtualBoxが動作していないことを確認してください
    3. VirtualBoxを右クリックし、[管理者として実行]を選択してVirtualBoxを起動します
    4. ゲストVMの設定領域を開く
    5. ツールバーの "Storage"をクリック
    6. コントローラの隣にある「Add Hard Disk」のアイコンをクリックしてください。
    7. 「既存のディスクを選択」を選択します
    8. 手順3で使用した/path/to/file.vmdkに移動して選択します
    9. これで、[ストレージ]タブに戻り、リストに自分のfile.vmdkが表示されます。
  2. VMを起動する
  3. GUIがあるかどうかに応じて、SDカードは自動的にマウントされる場合とされない場合があります。手動でマウントする必要がある場合は、単に別の標準ブロックデバイスとして公開されるので、私のゲストでは/ dev/sdbとして公開されていました。
41
sandyscott

あなたのSDリーダーがあなたのUSBコントローラを使用しているなら、あなたはたぶんあなたは拡張子を見逃しているでしょう。

enter image description here

ファイル>設定の下で、写真に従ってください。ダウンロードした拡張子を追加して指定します。

enter image description here

仮想マシンを再起動すると、USBデバイスにアクセスできるはずです。

7
kobaltz

新しいMacBook Proでは、SDカードスロットはUSBデバイスとして公開されなくなりました

この問題を克服するには、内蔵のカードリーダーの代わりに、外部USBメモリーカードリーダー(つまり、sdカードからusbアダプターへ)を使用することができます。それはあなたがちょうど他のUSBデバイスのようにそれを簡単にマウントできるようにUSBデバイスとしてあなたのSDカードを公開します。彼らは安価な機器であり、他の面ですべての面倒を考えると許容できる解決策となるでしょう。

4
Ahmet

Kubuntu 15.04、VirtualBox 4.3.26を使用しています

これは、SDカードデバイスが/dev/mmcbl0で、出力.vdkがsd-card.vmkであることを前提としています。

Sudo VBoxManage internalcommands createrawvmdk -filename ./sd-card.vmdk -rawdisk /dev/mmcblk0

これがパーミッションを修正するための最良の方法であるかどうかはわかりませんが、うまくいきました。

Sudo chmod 777 /dev/mmcblk0
Sudo chmod 777 ./sd-card.vmdk

今すぐVM設定に行き、ストレージを選択し、コントローラ:Sataをクリックし、ハードディスクの追加のアイコンをクリックし、あなたの.vdkを選択します(この場合はsd-card.vmdk)。

4
Bogdan

主にMountain Lion(OS X 10.8)を使用しているため、JinnKoによる解決策を得るのに多くの問題がありました...しかし、彼の親切な支援により、私は問題を解決しました。

完全なソリューションは 詳細はこちら です。

ただし、私のソリューションの本質は、Mountain Lionユーザーの場合、次のとおりです(上記のJinnKoの手順を使用しますが、ここに手順を挿入しますbefore 'VBoxManage internalcommands createrawvmdk [...]'コマンドを実行します(つまり、彼のステップ2と3の間):

**特にMtn Lionの場合**このデバイスの所有者であることを確認してください。 10.8 Mtn Lionでは、おそらくそうではないことがわかるでしょう。以下を実行して確認します。

ls -l /dev/disk*

「*」を使用すると、すべてのディスクデバイスが表示されます。また、次の操作も実行できます。たとえば、ls -l/dev/diskXで「X」のみを表示します。

ls -l /dev/disk5

Mtn Lion(10.8.x)では、次のようなものが表示されます。

brw-r----- 1 root operator 1, <today's date/time> /dev/diskX

/ dev/disk5の「5」のように、「X」はデバイス番号です...

Lion(10.7.x)、Snow Leopard(10.6.x)、またはおそらく以前のバージョンのOS Xでは、ユーザー名が「ブラッド」の場合、次のようなものが表示されます。

brw-r----- 1 brad operator 1, <today's date/time> /dev/diskX

ここで、「X」は/ dev/disk5の「5」のようなデバイス番号です...所有者であれば、ここで何もすることはありません。次のステップ、つまりcreaterawvmdkステップ(上記の@JinnKoのすばらしい指示で)。

あなたが所有者ではない場合(ただし、「root」または他のユーザーがそうである場合)、(a)その管理者ユーザーとしてログインするか、(b)次のことを行います(再び、非常に確実あなたはここで正しいデバイス番号/文字を使用してください!):

*注意*以下は、ハードドライブまたはフラッシュストレージドライブのデータを永続的に破壊するリスクを希望するユーザーのみを対象としています。 DO NOT自分が何をしているかわからない場合は、これを実行してください:

Sudo chown <your username> /dev/disk5
Sudo chown <your username> /dev/disk5s1

*注意*DO NOT自分が何をしているのかわからない場合は、これを実行してください。上記は、ハードドライブまたはフラッシュストレージドライブのデータをRISKで完全に破壊したい人向けです。

すべてのスライス(s1、s2、s3など)に対してそれを行う必要があります。たとえば、私のユーザー名は「brad」なので、Sudo chown brad /dev/disk5Sudo chown brad /dev/disk5s1s2s3の順にしました(3つの既存のパーティションまたはスライスがあるため)既に)。

SDカードをパーティション分割していない場合は、Sudo chown <your username> /dev/diskXを1回だけ実行する必要があります(スライス/パーティションは一切実行しません)

これが、他の貧しいMtn Lionユーザーの助けになることを願っています!

3
likethesky

USBカードリーダーを使っても、これを直接行う方法を見つけることができませんでした(カードを予想される/dev/dm-1ではなく/dev/mmcblk1に置きます)。

私の回避策は、VirtualBoxで4 GBの仮想ドライブを作成することでした。これは(/dev/sdbとして)文書化されているようにBeagleBoard Ubuntuのインストールを受ける可能性があります。

それから私はVMをシャットダウンし、それをRAW DDファイルに変換し、それをカードに入れるためにDDを使いました:(ホストMac上):

VBoxManage clonehd UbuntuBeagleImage.vdi UbuntuBeagleImage.dd --format RAW
Sudo dd if=UbuntuBeagleImage.dd of=/dev/rdisk(NUMBER) bs=1m

(私の場合は/dev/disk2ですが、間違った方法でトリプルチェックするとハードディスクドライブが壊れる可能性があります)。

ddコマンドは、約1時間20分かかりました。

これが役に立つことを願っています。私はまだより簡単でより速い方法に向かって取り組んでいます - 私たちは600 MBのOSのために4 GBのデータを転送する必要はないはずです。

1
Rich

私のための解決策は、を使用して、SDカード付きのUSBデバイスをオンにすることでした
Devices -> USB devices ->My card reader
そして数秒後に新しいディスクが私のVMに現れます。

その前にVirtualBox Extensions Packをインストールしました。

0
Zdzisiek

「Virtual Box Guest Additons CD」ファイルをインストールしましたが、Windows XP Virtual MachineにSDカードリーダーが表示されませんでした。私は有効化 Virtual BoxのUSBデバイス、そして再起動仮想マシンで動作するようになりました。

0
skibulk

あなたがそれでも許可の問題のためにSDカードにアクセスできない場合、macosを使用して、前の回答をフォローしている人のために、

sudoでvirtualboxを実行すると解決します。

Sudo VirtualBox

Vmファイルへのパスが異なることに注意してください。私の場合は、次のようになります。

/private/var/root/VirtualBox\ VMs/$VM_NAME/

それでもうまくいかない場合は、sdカードのディスクの所有者とアクセス権を、それぞれあなたのユーザーアカウントと666に変更してください。

0
Pengyuan Zhou

コバルツが述べたように。 Virtual Extension Packをインストールする必要があるUSB 2.0および3.0バージョンをサポートするために、私は5.2.22 Oracle VM VirtualBox Extension Packをインストールしました、そしてあなたはそれをVirtual Boxダウンロードページからダウンロードすることができます。ファイルをダウンロードしたら、直接インストールしてインストールすることができます。同じ内容がVirtual Boxの拡張機能にも追加されます。

enter image description here

また、バーチャルボックスのデバイスフィルタにSDカードを追加する必要があります。[設定] - > [USB] - > [Add SD card Attached]オプションをクリックしてください。

enter image description here

これで、あなたは自分のSDカードをフィルターに入れることができるでしょう。

enter image description here

ファイルに行き、SDカードのホールダーを見なさい(私はUbuntu Linuxディストリビューションを使用する)

enter image description here

0
Sibeesh Venu