2015/09/20

AVD を立ち上げようとしたら libstdc++.so.6 が無いと言われた on Ubuntu 14.04

諸事情で Ubuntu 14.04 LTS (64bit) をクリーンインストールしました。

その後、Android Studio を立ち上げ、普通に使っていたのですが、AVD を起動しようとすると、以下のようなエラーが。

Cannot launch AVD in emulator.
error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory


確認してみるも、libstdc++6はちゃんとインストールされている様子。
これ、以前もハマったやつだ!
というわけで、32bit 系のライブラリを用意してやることで解決しました。
$ sudo apt-get install lib32stdc++6

ちょっと古い記事だと「ia32-libs をインストールせよ。」と書いてあるものもあるのですが、Ubuntu 13.10 からはライブラリが分割されたみたいです。

2015/09/13

VirtualBox で Raw disk vmdk を作ろうとした時に VERR_ACCESS_DENIED が出る時の対処方法 on Ubuntu 14.04

VirtualBox で Raw disk にアクセスできるようにするには、vmdk ファイルを作るのが一般的のようです。
しかし、普通に作成しようとすると、以下のように VERR_ACCESS_DENIED が出てしまいます。
VBoxManage internalcommands createrawvmdk -filename ~/text.vmdk -rawdisk /dev/sda
VBoxManage: error: Cannot open the raw disk '/dev/sda': VERR_ACCESS_DENIED
VBoxManage: error: The raw disk vmdk file was not created

アクセス権の問題なので、sudo を使えば回避できるのですが、その場合、virtualbox 自体もスーパーユーザー権限で起動しないといけません。 そうしないと、以下のようなエラーが発生してしまいます。
Failed to open the hard disk file /home/yusuke/text.vmdk.

Permission problem accessing the file for the medium '/home/yusuke/text.vmdk' (VERR_ACCESS_DENIED).

Result Code: VBOX_E_FILE_ERROR (0x80BB0004)
Component: Medium
Interface: IMedium {05f2bbb6-a3a6-4fb9-9b49-6d0dda7142ac}
Callee: IVirtualBox {fafa4e17-1ee2-4905-a10e-fe7c18bf5554}
Callee RC: VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)

しかし、せっかくの仮想環境をスーパーユーザー権限で起動するのはセキュリティ的にも問題があります。

自分を disk グループに追加するだけで良い

実は、これには簡単な回避方法があります。
以下のように自分を disk グループに追加してやるのです。(追加したあとは、再起動が必要です)

$ sudo gpasswd -a YOUR_USERNAME disk

すると、vmdk の作成も、virtualbox の起動も、先のユーザで問題なく実行できるようになります。

グループを調べる

Ubuntu 14.04 であれば、disk グループで間違いないと思いますが、こういうのは時々変わったりするので書いておきます。
以下のように、 デバイスファイルのグループ名とグループアクセス権を確認可能です。
% ls -al /dev/sd*
brw-rw---- 1 root disk 8,  0  9月 13 14:17 /dev/sda
brw-rw---- 1 root disk 8,  1  9月 13 11:36 /dev/sda1
brw-rw---- 1 root disk 8,  2  9月 13 11:36 /dev/sda2
brw-rw---- 1 root disk 8,  3  9月 13 11:36 /dev/sda3
brw-rw---- 1 root disk 8, 16  9月 13 11:36 /dev/sdb
brw-rw---- 1 root disk 8, 17  9月 13 11:36 /dev/sdb1
brw-rw---- 1 root disk 8, 32  9月 13 11:36 /dev/sdc
brw-rw---- 1 root disk 8, 33  9月 13 11:36 /dev/sdc1
brw-rw---- 1 root disk 8, 48  9月 13 11:36 /dev/sdd