X86Android 4.0 RC2 on KVM

表題のとおり、X86Android 4.0 RC2をLinuxKVMで動かしてみました。
NICまわりで手こずったのでメモメモ。

下記のサイトを参考に、Ethernet patchのあたったイメージを使用する前提で話を進めます。

http://www.webupd8.org/2012/07/android-x86-404-ics-rc2-released-with.html

イメージは以下のものを使用しました。(なかなかダウンロードできない)

http://www.sendspace.com/file/t5a3aj

ISOを用意して、virtinstallで普通にインストールします。
ポイントはNICをmodel=e1000にするところですかね。これでインテルNICをエミュレートしてくれます。

$ sudo virt-install \
–connect=qemu:///system \
–name android4.0 \
–ram 512 \
–disk path=/var/lib/libvirt/images/android4.0.img,cache=writeback,sparse=true,size=5 \
–cdrom=’/home/yutaro/iso/desktop_generic.iso’ \
–vcpus=1 \
–os-type linux \
–os-variant generic26 \
–network bridge=br0,model=e1000 \
–vnc \
–accelerate \
–hvm

インストールが終わったら、デフォルトで入っている「端末エミュレータ」で /etc/init.sh を編集して
起動時にIPアドレスをStaticで振るようにする。(GUIの設定画面は使えませんでした)
各種アドレスは自分の環境に合わせて設定してください。

$ su –

# vi /etc/init.sh
(略)
ifconfig eth0 [IP ADDRESS] up ;Androidゲストのeth0にIPをつける
route add default gw [GATEWAY ADDRESS] dev eth0 ;デフォゲを指定する
setprop net.dns1 [RESOLVER ADDRESS] ;リゾルバ(DNSキャッシュサーバ)を指定する

これで再起動するとネットワークにつながっているはず。
pingとかで確認してみましょう。

仕事中に眠くなってきたので
といった感じで遊んでみました。

 

ユーザ権限で virt-manager がが

デスクトップOSとしてUbuntuを使うとサーバとの連携がいろいろと楽でいいのですが、
まれにその連携がうまくいかないことがあります。

今回はユーザ権限で起動したvirt-managerでlibvirtdに接続ができなかったので
対応した内容をメモ書きで残しておきます。

0. 環境

OS:Ubuntu 12.10 Desktop

1. エラー内容

libvirt に接続できませんでした。

Verify that:
– The ‘libvirt-bin’ package is installed
– The ‘libvirtd’ daemon has been started
– You are member of the ‘libvirtd’ group

Libvirt URI is: qemu:///system

Traceback (most recent call last):
File “/usr/share/virt-manager/virtManager/connection.py”, line 1027, in _open_thread
self.vmm = self._try_open()
File “/usr/share/virt-manager/virtManager/connection.py”, line 1009, in _try_open
flags)
File “/usr/lib/python2.7/dist-packages/libvirt.py”, line 102, in openAuth
if ret is None:raise libvirtError(‘virConnectOpenAuth() failed’)
libvirtError: ソケットの ‘/var/run/libvirt/libvirt-sock’ への接続に失敗しました: 許可がありません

 

2. 対応内容

root@phenom:~# vi /etc/libvirt/libvirtd.conf

root@phenom:/etc/libvirt# diff libvirt.conf.def libvirtd.conf
88c88
< unix_sock_ro_perms = “0770”

> unix_sock_ro_perms = “0777”
98c98
< unix_sock_rw_perms = “0770”

> unix_sock_rw_perms = “0777”
101c101
< #unix_sock_dir = “/var/run/libvirt”

> unix_sock_dir = “/var/run/libvirt”

root@phenom:~# service libvirt-bin stop
libvirt-bin stop/waiting
root@phenom:~#
root@phenom:~# service libvirt-bin start
libvirt-bin start/running, process 4368
root@phenom:~#

 

デフォルトではソケットファイルが作られないので、
ソケットファイルを生成しつつotherに権限を与えてあげれば良いかと。

ただ、otherに権限与えるのがあまり好ましくない環境ではおすすめしません。
よくよく考えるとlibvirtdグループに実行ユーザ加えてあげればいいような・・・