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

sd-card virtual-machine

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

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

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

  72  Punit Soni  2012-01-01


ベストアンサー

新しいMacBook Proでは、SDカードスロットがUSBデバイスとして露出しなくなりました。このため、カード全体への生のアクセスを得るためには、生のデバイスをVMにアタッチする必要があります。ドキュメントの詳細は、VirtualBox ドキュメントの Advanced Storage Configuration セクションにあります

ドキュメントに明記されているように

警告 – 生のハードディスクへのアクセスは、エキスパートユーザーのみを対象としています。誤った使用や古い設定を使用すると、物理ディスク上のデータが完全に失われる可能性があります。最も重要なことは、ゲストで現在実行中のホスト OS でパーティションを起動しようとしないことです。これは深刻なデータの破損につながります

簡単なガイドとして、以下はデバイスを linux VM に接続するための手順です

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

    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部分は生のデバイス上のパーティション(スライス)を表しているので、後で使用する部分は/dev/disk2部分だけです

  2. ディスクユーティリティを開き、ボリュームを「アンマウント」します。イジェクト」しないでください。OSXが自動的にランダムに再マウントしてしまうことを発見したので、次のステップでは時々ボリュームをアンマウントする必要があるかもしれないことに注意してください
  3. ここで、ターミナルで以下のコマンドを使って、生のデバイスを認識するようにVirtualBoxを設定します

    1. /path/to/file.vmdkはどこにでも置けるので注意が必要ですが、~/VirtualBox VMs/guest-vm/sdcard.vmdkのようにゲストVMのフォルダに格納しておくと良いでしょう
    2. 使用する-rawdiskはパーティション(スライス)を参照するのではなく、ブロックデバイス全体を参照することに注意してください

      $ VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/disk2
      
  4. 次に、生ディスクをVirtualBox UI内のゲストVMにアタッチします

    1. ゲストVMが実行されていないことを確認します
    2. ゲストVMの設定領域を開きます
    3. ツールバーの「ストレージ」をクリックします
    4. コントローラの横にある「ハードディスクの追加」アイコンをクリックします
    5. 既存のディスクを選択」を選択
    6. 手順3で使用した/path/to/file.vmdkに移動して選択します
    7. これでストレージタブに戻り、リストの中にfile.vmdkが表示されるはずです
  5. VMを開始する
  6. GUI を使用しているかどうかによって、SD カードが自動的にマウントされるかどうかが異なります。手動でマウントする必要がある場合は、単に別の標準ブロックデバイスとして公開されます

Update

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

テストしていませんが、以下の手順で解決するはずです

  1. OSXで使用しているアカウントがシステム環境設定/ユーザーセクションで管理者権限を持っていることを確認してください。また、生のデバイスが動作するようにアクセスするためのシステム上のプライマリアカウントである可能性が高いです
  2. 生のディスクのパーミッションを確認します

        $ 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)の両方を許可している必要があります。自分が何をしているのか絶対に分かっている場合以外は、デバイスの権限を変更しないでください


Update #2

OSX Mountain Lionは、”root:operator “権限と0640パーミッションでデバイスを作成したことが判明しました。残念ながら今のところ、このデバイスにアクセスする唯一の方法は、デバイスを挿入するたびに現在のユーザーに「sudo chown $USER」することですが、これは本当に何をしているのか理解していない限り、お勧めできません。AppleかVirtualBoxのどちらかがもっと適切な解決策を見つけてくれることを願っています

61  JinnKo  2012-08-06


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. 次に、生のディスクを VirtualBox UI 内のゲスト VM にアタッチします
    1. ゲストVMの電源がオフになっていることを確認します
    2. VirtualBoxが実行されていないことを確認します
    3. VirtualBoxを右クリックして「管理者として実行」を選択して起動します
    4. ゲストVMの設定領域を開きます
    5. ツールバーの「ストレージ」をクリックします
    6. コントローラの横にある「ハードディスクの追加」アイコンをクリックします
    7. 既存のディスクを選択」を選択
    8. 手順3で使用した/path/to/file.vmdkに移動して選択します
    9. これでストレージタブに戻り、リストの中にfile.vmdkが表示されるはずです
  2. VMを開始する
  3. GUI を使用しているかどうかによって、SD カードが自動的にマウントされるかどうかが異なります。手動でマウントする必要がある場合は、単に別の標準ブロックデバイスとして公開されます

44  sandyscott  2013-08-14


SDリーダーがUSBコントローラーを使用している場合は、拡張機能が不足している可能性が高いです

enter image description here

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

enter image description here

仮想マシンを再起動すると、USB デバイスにアクセスできるようになります

7  kobaltz  2012-01-01


新しいMacBook Proでは、SDカードスロットがUSBデバイスとして露出しなくなりました

この問題を克服するためには、単に内蔵のカードリーダーの代わりに外部のUSBメモリカードリーダー(すなわち、USBアダプタへのSDカード)を使用することができます。それはあなたがちょうど任意のUSBデバイスのように簡単にそれをマウントできるように、USBデバイスとしてあなたのSDカードを公開します。彼らは安いデバイスだし、他の方法ですべての手間を考えると許容可能な解決策だろう

4  Ahmet  2014-02-13


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 Settingsに移動し、Storageを選択し、Controller:Sataをクリックし、Add Hard Diskのアイコンをクリックし、.vdk (ここではsd-card.vmdk)を選択します

4  Bogdan  2015-05-01


私は、主に私のマウンテンライオン(OS X 10.8)上にあるため、私は、動作するようにJinnKoによる解決策を得るために多くのトラブルを抱えていた…しかし、彼の親切な援助で、私は問題を解決しました

完全な解決策は、詳細はこちら

しかし、私の解決策の本質は、Mountain Lion ユーザーのために、次のようになります(上記の JinnKo のステップを使用しますが、’VBoxManage internalcommands createrawvmdk […] コマンドを実行する前に、私のステップをここに挿入してください(つまり、彼のステップ 2 & 3 の間にあります)

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

ls -l /dev/disk*

‘*’ をつけると、すべてのディスクデバイスが表示されますが、次のようにすることもできます: ls -l /dev/diskX は ‘X’ のみを表示します

ls -l /dev/disk5

Mt.Lion ( 10.8.x ) では、以下のようなものが表示されます

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

X’ はデバイス番号で、/dev/disk5 の ‘5’ のようなものです

Lion ( 10.7.x ), Snow Leopard (10.6.x ), あるいはそれ以前のバージョンの OS X では、ユーザー名が ‘brad’ であれば、おそらく次のようなものが表示されるでしょう

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

X’ はあなたのデバイス番号で、/dev/disk5 の ‘5’ のようなものです。あなたが所有者であれば、すべて問題ありません。ここでやることは何もなく、次のステップ、つまり createrawvmdk ステップ (@JinnKo ‘s great instructions above) に進んでください

もしあなたが所有者ではない場合(でも ‘root’ や他のユーザーが所有している場合)、(a) その管理ユーザーとしてログインするか、(b) 以下のようにしてください(ここでも、正しいデバイス番号や文字を使っていることを確認してください!)

* 注意 * 以下の内容は、ハードドライブやフラッシュストレージドライブ上のデータを永久に破壊する危険性がある場合にのみ使用してください。あなたが何をしているか分かっていない場合は、これをしないでください

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

* 注意 * あなたが何をしているかを知っているかどうかわからない場合は、これをしないでください。上記は、ハードドライブまたはフラッシュストレージドライブ上のデータを永久に破壊する危険性を冒したい人のためのものです

すべてのスライス(s1, s2, s3, …いくつあっても構いません)に対してこれを行う必要があります。例えば、私のユーザ名は ‘brad’ です。sudo chown brad /dev/disk5, sudo chown brad /dev/disk5s1, s2, s3 (すでに3つのパーティションやスライスがあったので)を実行しました

SDカードのパーティションを設定していない場合は、sudo chown <your username> /dev/diskXを一度だけ(スライス/パーティションを設定せずに)行う必要があるかもしれません

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

3  likethesky  2012-08-15


今のところ、USBカードリーダーでも直接やる方法を探して失敗しています(期待していた/dev/mmcblk1ではなく/dev/dm-1にカードを置いてしまいました)

私の回避策は、VirtualBoxに4GBの仮想ドライブを作成することでした。これで(/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分かかりました!

私はこれが役立つことを願っています。私はまだ、もっと簡単で迅速な方法を目指しています – 600MBのOSのために4GBのデータを転送する必要はないはずです

1  Rich  2012-04-25


私の場合は、Devices -> USB devices ->My card readerを使ってSDカードでUSBデバイスをオンにすると、数秒後にVMに新しいディスクが表示されました

その前にVirtualBox Extensions Packをインストールしたことがあります

0  Zdzisiek  2014-06-14


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

0  skibulk  2016-02-16


kobaltzさんがおっしゃっているようにUSB 2.0と3.0バージョンをサポートするにはVirtual Extension Packをインストールする必要がありますが、私は5.2.22 Oracle VM VirtualBox Extension Packをインストールしましたが、Virtual Boxのダウンロードページからダウンロードできます。ダウンロードしたら直接先に行ってインストールすれば、Virtual Boxの拡張機能にも同じものが追加されます

enter image description here

また、私たちの仮想ボックスのデバイスフィルタにSDカードを追加する必要があります、設定に移動してください – > USB -> SDカードを添付の追加オプションをクリックします

enter image description here

これでフィルターにSDカードを入れることができるようになりました

enter image description here

Filesに移動してSDカードのフォルダを見る(私はUbuntu Linux Distributionを使用しています)

enter image description here

0  Sibeesh Venu  2018-11-27


macosを使用していて、以前の回答に従っている人のために、あなたはまだ許可の問題のためにSDカードにアクセスすることができない場合は、

virtualboxをsudoで実行すれば解決します

sudo VirtualBox

vmファイルへのパスが違うことに注意してください、私の場合はそうです

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

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

0  Pengyuan Zhou  2019-04-03


タイトルとURLをコピーしました