Linux仮想マシンからSDカードをフォーマットしたいです。私のラップトップには内蔵 SDカード リーダーがあります。私は VirtualBox と VMware Player を使ってみて、Ubuntu 10.04ゲストをインストールしました。どれもSDカードリーダーをデバイスとして表示していません。 WindowsホストからSDカードにアクセスできます。
ハードウェアとしてSDカードにアクセスしたいので、共有フォルダを使用するソリューションには興味がありません(/dev
に表示されるはずです)。
私は基本的に BeagleBoard 用のSDカードをセットアップしたいのですが、物理的なUbuntuを私のPCにインストールしたくはありません。
最近のMacBook Proでは、SDカードスロットはUSBデバイスとして公開されていません。このため、カード全体にアクセスするためには、rawデバイスをVMに接続する必要があります。完全なドキュメンテーションはVirtualBoxドキュメンテーションの 高度なストレージ設定 セクションにあります。
ドキュメントに明確に述べられているように:
警告 - rawハードディスクアクセスは熟練ユーザー向けです。誤った使用方法や古い設定の使用は、物理ディスク上のデータを完全に失う可能性があります。最も重要なことは、ゲスト内で現在実行中のホストオペレーティングシステムでパーティションを起動しようとしないでください。これは深刻なデータ破損につながります。
クイックガイドとして、これらはLinux VMにデバイスを接続するためのステップです:
ホストシステム上のrawディスクブロックデバイスを特定します。
ターミナルを開き、「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)`
私の場合、 "NO NAME"ボリュームはSDカードなので、私は/dev/disk2s1
の部分に注目します。この場合、s1
部分はRAWデバイスのパーティション(スライス)を表すので、後で使用する部分は/dev/disk2
部分だけです。
これで、ターミナルで次のコマンドを使用して、RawBoxを認識するようにVirtualBoxを設定しました。
/path/to/file.vmdk
はどこにでも置くことができますが、これを~/VirtualBox VMs/guest-vm/sdcard.vmdk
などのguest VMフォルダーに保存することをお勧めします。ここで使用している-rawdisk
はパーティション(スライス)を参照しているのではなく、ブロックデバイス全体を参照しているだけです。
$ VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/disk2
次に、VirtualBox UI内のrawディスクをguest VMに接続します。
/path/to/file.vmdk
に移動して選択しますfile.vmdk
が表示されます。ステップ3.2または4.6でrawデバイスにアクセスするのに問題がある可能性があります。 Sudoでいくつかのコマンドを実行しようとしても、VirtualBoxはあなたのログインユーザーとして実行され、それでも正しいrawデバイスや生成されたvmdkファイルにアクセスすることはできないので、役に立ちません。
私はそれらをテストしていませんが、次のステップは助けになるはずです。
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)の両方を許可するべきです。デバイスの権限を変更しないでください。絶対にあなたが何をしているのか知りません。
OSX Mountain Lionが "root:operator"権限と0640権限を使ってデバイスを作成したことがわかりました。残念ながら今のところこのデバイスにアクセスする唯一の方法はあなたがデバイスを挿入する度にあなたの現在のユーザにそれを "Sudo chown $ USER"することですが、これはあなたが本当に何をしているのか理解しない限りお勧めできません。うまくいけば、AppleかVirtualBoxのどちらかがより適切な解決策を見つけるでしょう。
Windowsユーザーへの回答
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
です。
SDカードへのリンクファイルを作成する
管理者としてコマンドウィンドウを開く
"C:\Program Files\Oracle\VirtualBox\VBoxManage" internalcommands createrawvmdk -filename "%USERPROFILE%/Desktop/sdcard.vmdk" -rawdisk "\\.\PHYSICALDRIVE1"
これはデフォルトのインストールパスを想定しています - 必要に応じて変更してください。 (引用符がrawdisk引数を囲むようにしてください。)
.vmdkファイルはSDカードへのリンクです、あなたはそれをあなたのホストシステムのどこにでも置くことができますが、このコマンドは単に便宜上あなたのデスクトップにそれを置く。
JinnKoの答えのステップ4から6に従ってください。唯一のマイナーな調整は、管理者としてVirtualBoxを起動する必要があるということです。
- 次に、RawBoxをVirtualBox UI 内のguest VMに接続します。
- ゲストVMの電源がオフになっていることを確認してください。
- VirtualBoxが動作していないことを確認してください
- VirtualBoxを右クリックし、[管理者として実行]を選択してVirtualBoxを起動します
- ゲストVMの設定領域を開く
- ツールバーの "Storage"をクリック
- コントローラの隣にある「Add Hard Disk」のアイコンをクリックしてください。
- 「既存のディスクを選択」を選択します
- 手順3で使用した
/path/to/file.vmdk
に移動して選択します- これで、[ストレージ]タブに戻り、リストに自分の
file.vmdk
が表示されます。- VMを起動する
- GUIがあるかどうかに応じて、SDカードは自動的にマウントされる場合とされない場合があります。手動でマウントする必要がある場合は、単に別の標準ブロックデバイスとして公開されるので、私のゲストでは/ dev/sdbとして公開されていました。
あなたのSDリーダーがあなたのUSBコントローラを使用しているなら、あなたはたぶんあなたは拡張子を見逃しているでしょう。
ファイル>設定の下で、写真に従ってください。ダウンロードした拡張子を追加して指定します。
仮想マシンを再起動すると、USBデバイスにアクセスできるはずです。
新しいMacBook Proでは、SDカードスロットはUSBデバイスとして公開されなくなりました
この問題を克服するには、内蔵のカードリーダーの代わりに、外部USBメモリーカードリーダー(つまり、sdカードからusbアダプターへ)を使用することができます。それはあなたがちょうど他のUSBデバイスのようにそれを簡単にマウントできるようにUSBデバイスとしてあなたのSDカードを公開します。彼らは安価な機器であり、他の面ですべての面倒を考えると許容できる解決策となるでしょう。
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)。
主に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/disk5
、Sudo chown brad /dev/disk5s1
、s2
、s3
の順にしました(3つの既存のパーティションまたはスライスがあるため)既に)。
SDカードをパーティション分割していない場合は、Sudo chown <your username> /dev/diskX
を1回だけ実行する必要があります(スライス/パーティションは一切実行しません)
これが、他の貧しいMtn Lionユーザーの助けになることを願っています!
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のデータを転送する必要はないはずです。
私のための解決策は、を使用して、SDカード付きのUSBデバイスをオンにすることでしたDevices -> USB devices ->My card reader
、
そして数秒後に新しいディスクが私のVMに現れます。
その前にVirtualBox Extensions Packをインストールしました。
「Virtual Box Guest Additons CD」ファイルをインストールしましたが、Windows XP Virtual MachineにSDカードリーダーが表示されませんでした。私は有効化 Virtual BoxのUSBデバイス、そして再起動仮想マシンで動作するようになりました。
あなたがそれでも許可の問題のためにSDカードにアクセスできない場合、macosを使用して、前の回答をフォローしている人のために、
sudoでvirtualboxを実行すると解決します。
Sudo VirtualBox
Vmファイルへのパスが異なることに注意してください。私の場合は、次のようになります。
/private/var/root/VirtualBox\ VMs/$VM_NAME/
それでもうまくいかない場合は、sdカードのディスクの所有者とアクセス権を、それぞれあなたのユーザーアカウントと666に変更してください。
コバルツが述べたように。 Virtual Extension Packをインストールする必要があるUSB 2.0および3.0バージョンをサポートするために、私は5.2.22 Oracle VM VirtualBox Extension Packをインストールしました、そしてあなたはそれをVirtual Boxダウンロードページからダウンロードすることができます。ファイルをダウンロードしたら、直接インストールしてインストールすることができます。同じ内容がVirtual Boxの拡張機能にも追加されます。
また、バーチャルボックスのデバイスフィルタにSDカードを追加する必要があります。[設定] - > [USB] - > [Add SD card Attached]オプションをクリックしてください。
これで、あなたは自分のSDカードをフィルターに入れることができるでしょう。
ファイルに行き、SDカードのホールダーを見なさい(私はUbuntu Linuxディストリビューションを使用する)