VirtualBoxにSDカードをマウントする

VirtualBoxにCentOS 7をインストールする 先日,macOSのVirtualBoxにCentOS 7をインストールした. 時同じくして,Raspberry Pi用にOSの入ったSDカードが必要となった. 私はRaspberry PiでArch Linuxを使うのが好みなので,今回もArch Linux ARMをインストールすることにした. 公式サイトでARMv6のインストレーション手順を確認すると,Linuxでのインストール手順しか書いていない. そこで今回,VirtualBoxにインストールされたCentOSにSDカードをマウント,Arch Linuxをインストールすることにした. ココにはその手順を記す.

手順

SDカードが使用済みの場合はSDFormatterなどで上書きフォーマット(Overwrite Format)を事前に施して置く. SDカードの中がきれいになったら次の手順でArchを焼き込む.
  1. VBoxManageコマンドでVMDKファイルを作成
  2. VMDKファイルをVirtualBoxに読み込ませる
  3. ゲストOS(CentOS 7)を起動させる
  4. SDカードがマウントされていることを確認
  5. Arch Linux ARM公式サイトの手順でArchを焼く
  6. 焼き込みが終わったらゲストOSをシャットダウン
  7. ホストOSからSDカードを取り出す(Eject)
  8. 読み込んだVMDKファイルの後片付けをする
調べてみると,ゲストOS(CentOS 7)はホストOS(macOS)にマウントされたSDカードをそのままマウントすることは出来ないようだった. ホストOSにマウントされているSDカードのVMDK(仮想マシンディスク:Virtual Machine Disk)ファイルを一旦作成し,それをVirtualBoxに読み込ませることで,ゲストOSにそのSDカードがマウントさるようになるとのこと. なお,この時ホストOSではSDカードをアンマウント(取り出しでは無い)する必要がある. では早速VMDKを作成しよう.

VMDKの作成

FAT32などできれいにフォーマットされたSDカードをmacOSにマウントしたらターミナルを開き,次のコマンドでマウント位置を確認する. diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            999.3 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3

/dev/disk1 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.8 GB    disk1
   1:             Windows_FAT_32 ARCH                    15.8 GB    disk1s1
この場合,/dev/disk1にSDカードがマウントされていることが分かる. 次のコマンドでSDカードをアンマウントする. diskutil unmountDisk /dev/disk1 このアンマウントを行わないと,他のプロセスと競合し(Resouce busyなどのエラーが出て)上手く行かない. 以後,ホストOSにマウントされることがあったら,都度このコマンドでアンマウントしよう. 次のコマンドでこのSDカードのVMKDファイルを作成する. sudo VBoxManage internalcommands createrawvmdk -filename sdcard.vmdk -rawdisk /dev/disk1 sdcard.vmdkというファイル名のVMDKが(ホームディレクトリなどに)生成される.
VirtualBoxに読み込ませる時に,権限うんぬん言われる可能性があるので,今のうちにchmodしておく. sudo chmod 777 /dev/disk1 sudo chmod 777 sdcard.vmdk (この時点でSDカードがmacOSにマウントされていたら再び"diskutil unmountDisk /dev/disk1"でアンマウントしておく). 以上でVMDKの生成は終了. VirtualBoxを起動しよう.

VMDKをVirtualBoxに読み込ませる

CentOS 7の"Storage"設定を開く.
CentOS 7.vdiがマウントされているControllerを選択し,ハードディスクにプラスのマークをクリック.
ダイアログが出てくるので,"Choose existing disk(既存のディスクを選択)"を選択.
先程つくったVMDKファイルを選択する.
これでSDカードがマウントされる. "OK"で設定を適用し,CentOS 7を起動.

Arch Linux ARMのインストール

Arch Linux ARMのインストール方法は別記録として用意した. 英語ならある程度読めるし,さらっとした説明の方が解り易いという方はArch Linux ARMの公式サイトへ! そうでない方や私の文書を読んでくれるような広い心をお持ちの方は下記リンクをクリックしてみよう. Arch Linux ARMをインストールする Arch Linux ARMをインストールするにはrootとしてログインするか,"sudo su"コマンドでrootユーザーに昇格する必要がある. ログイン後は次のコマンドでSDカードがマウントされていることを確認する. lsblk
NAME                        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                           8:0    0   16G  0 disk 
├─sda1                        8:1    0    1G  0 part /boot
└─sda2                        8:2    0   15G  0 part 
  ├─cl_root                 253:0    0 13.4G  0 lvm  /
  └─cl_swap                 253:1    0  1.6G  0 lvm  [SWAP]
sdb                           8:16   0 14.7G  0 disk 
└─sdb1                        8:17   0 14.7G  0 part 
sr0                          11:0    1 1024M  0 rom 
...
上の例では16GBの仮想HDDを持つCentOSに,16GBのSDカードをマウントしてしまったので少々分かり難くなっているが,sdbのブロックがSDカードになる. 見事SDカードをゲストOSにマウントすることが出来た. 後はArch Linux ARM公式ページのInstallationに従いArchをSDカードにインストールする. Raspberry Pi | Arch Linux ARM 事前に次のパッケージをインストールしておくとスムーズに進められる. yum -y install dosfstools bsdtar wget

Tips

"mkfs.ext4"や"bsdtar"の処理には時間がかかる. wgetのhttp://os.archlinuxarm.org/os/ArchLinuxARM-rpi-latest.tar.gzはArchLinuxARM-rpi-2-latest.tar.gzなどにも変更可能. Raspberry Pi 2や3にインストールする場合など,適宜URIを変更する.

VMDKのかたづけ

Arch Linux ARMのインストールが完了したらCentOSを終了させる. poweroff "Storage"設定を開き,マウントしたVMDKを削除しておく.
sdcard.vmdkを選択し,下部にあるをクリックする
その後,VMDKファイルも削除し,ホストOS(macOS)からSDカードを取り出そう(以下のコマンドを実行後にSDカードをMacから取り外そう). diskutil eject /dev/disk1 VirtualBoxも終了させて,片付けはお終い.
次回VirtualBoxを起動した時に,次のようなダイアログが表示される.
これはCentOSの仮想マシンにマウントしたVMDKファイルが見つからないことを訴えている. "Check"をクリックし,設定画面を開く.
sdcard.vmdkを右クリックし"Remove"する. 削除してよいかダイアログが出てくるが,構わず削除する. これですべてが元通り.
82776612351882218 http://www.storange.jp/2017/04/virtualboxsd.html http://www.storange.jp/2017/04/virtualboxsd.html VirtualBoxにSDカードをマウントする 2017-04-03T20:19:00+09:00 http://www.storange.jp/2017/04/virtualboxsd.html Hideyuki Tabata 200 200 72 72