-->
ラベル kvm の投稿を表示しています。 すべての投稿を表示
ラベル kvm の投稿を表示しています。 すべての投稿を表示

2011-05-03

kvmにopenbsdをインストール

ホストOSの作業。

20GBの実体のある空ファイルを作成する。
$ dd if=/dev/zero of=openbsd-4.9.img bs=1024M count=20

ミラーサイトからインストールCDをダウンロードする。
$ wget http://ftp.jaist.ac.jp/pub/OpenBSD/4.9/amd64/install49.iso

virt-managerでinstall49.isoとopenbsd-4.9.imgで新規作成する。
名前: openbsd49など
→進む
  (●)ISOイメージを使用
  [/xxx/install49.iso]
  OSの種類   [UNIX}
  バージョン [OpenBSD 4.x]
→進む
→進む
  (●)管理しているストレージか、他の既存のストレージを選択する
  [/xxx/openbsd-4.9.img]
→進む
  詳細なオプション
  共有デバイス名を指定
  ブリッジ名: br0
→完了

br0はgentooの場合/etc/conf.d/netに設定する。
tapXは手動でkvmを起動する場合に必要なだけで、br0があればvirt-managerがvnet1などを作る。
$ cat /etc/conf.d/net|grep -v ^#|grep -v ^$
bridge_br0="eth0 tap0 tap1 tap2 tap3"
config_eth0=( "null" )
config_br0=( "192.168.0.100/24" )
routes_br0=( "default via 192.168.0.1" )
dns_servers_br0="192.168.0.1"
brctl_br0=( "setfd 0" "sethello 10" "stp off" )
RC_NEED_br0=( "net.tap0" "net.tap1" "net.tap2" "net.eth3" )
depend_br0 ()
{
  need net.eth0 net.tap0 net.tap1 net.tap2  net.tap3
}
config_tap0=( "null" )
tuntap_tap0="tap"
tunctl_tap0="-u root"
mac_tap0="52:54:01:12:34:56"
config_tap1=( "null" )
tuntap_tap1="tap"
tunctl_tap1="-u root"
mac_tap1="52:54:01:12:34:57"
config_tap2=( "null" )
tuntap_tap2="tap"
tunctl_tap2="-u root"
mac_tap2="52:54:01:12:34:58"
config_tap3=( "null" )
tuntap_tap3="tap"
tunctl_tap3="-u root"
mac_tap3="52:54:01:12:34:59"
config_eth0=( "null" )
config_dummy0=( "192.168.0.101 netmask 255.255.255.255" )

CDから起動するとbsd.rdが起動して(I)nstallなどを選択する画面になる。
下記は処理の流れ。大体合ってる。[xxx]はEnterを押すと入るデフォルト値。
インストール: i
キーボード  : jp
ホスト名    : openbsd49など
LANカード   : [pcn0]
IPアドレス  : 192.168.0.xxx
ネットマスク: [255.255.255.0]
IPv6        : [none]
終了確認    : [done]
ゲートウェイ: 192.168.0.1 (←がルーターの場合)
ドメイン    : localdomainなど
ネームサーバ: 192.168.0.1 (ルーターの機能でONにしている場合)
手動で設定  : [no]
rootパス    : xxxx
確認        : xxxx
sshd起動    : [yes]
ntpd起動    : yes
ntpサーバー : 192.168.0.1 (ルーターの機能でONにしている場合)
グラフィカルログイン: no
コンソールcom0: [no]
一般ユーザー: username
フルネーム  : [username]
パスワード  : xxxx
確認        : xxxx
sshdでrootログイン無効: [yes]
タイムゾーン: [Asia/Tokyo]
ハードディスク: [wd0]
マスターブートレコード: [whole]

エディットを選択する。
パーテーション: e
h          : ヘルプ
z          : 削除
X          : 機能追加
a          : パーテーション追加
[a]        : パーテーション番号
[64]       : パーテーション始まり
1048576    : パーテーションサイズ(512MB)
[4.2BSD]   : ファイルシステム種類
/          : マウントするディレクトリ名
[2048]     : フラグメントサイズ
[16384]    : ブロックサイズ
a
[b]
[1048640]
1048576    : パーテーションサイズ(512MB)
[swap]     : スワップ
a
[d]
[2097216]
2097152    : パーテーションサイズ(1GB)
[4.2BSD]
/tmp
4096
[32768]
a
[e]
[4194368]
16777216   : パーテーションサイズ(8GB)
[4.2BSD]
/var
4096
[32768]
a
[f]
[20971584]
[20958066] : パーテーションサイズ(残り全部) 
[4.2BSD]
/usr
4096
[32768]
p k        : KB単位で表示
p m        : MB単位で表示
p g        : GB単位で表示
p          : free: 50 とあるがそのままにしておく
q          : セーブ

# 起動後、確認すると下記のようになる。
# "/"をfsize=4096にすると起動しなかった。
# $ sudo disklabel wd0 | tail -n7
# #                size           offset  fstype [fsize bsize  cpg]
#   a:          1048576               64  4.2BSD   2048 16384    1 # /
#   b:          1048576          1048640    swap
#   c:         41943040                0  unused
#   d:          2097152          2097216  4.2BSD   4096 32768    1 # /tmp
#   e:         16777216          4194368  4.2BSD   4096 32768    1 # /var
#   f:         20958016         20971584  4.2BSD   4096 32768    1 # /usr

ラベル      : [y]
フォーマットが終わるまで待つ。
インストールメディア: [cd]
CDドライブ  : [cd0]
OSの種類    : [4.9/amd64]

選択
-all
bsd bsd.rd bsd.mp base49.tgz etc49.tgz comp49.tgz man49.tgz
man49.tgzまで全部選択した。
終了        : [done]
コピーが終わるまで待つ。

終わり      : [done]
reboot      : 再起動

ブート画面
boot> bsd -c
UKC> disable mpbios
53 mpbios0 disabled
UKC> quit
起動した場合
login:
まで表示される。

sshでログインできる。
$ ssh username@192.168.0.xxx

sudoの設定。普通は「NOPASSWD:」無しの方が良い。
$ su -
$ visudo
# %wheel  ALL=(ALL) NOPASSWD: SETENV: ALL
↓
%wheel  ALL=(ALL) NOPASSWD: SETENV: ALL
$ exit

viのコマンド。
x    1文字削除
dd   1行削除
yy   1行コピー
p    1行ペースト
:i   入力        Escで戻る
:a   後ろに入力  Escで戻る
:wq  セーブして終了
:q!  セーブしないで終了

viのマニュアル。
$ man vi

コピーして修正したら確認してもいい。
$ su -
$ cp -pi /etc/sudoers /etc/sudoers.old
$ visudo
$ diff /etc/sudoers /etc/sudoers.old

カーネルの設定。
$ sudo cp -pi /bsd /bsd.org
$ sudo config -ef /bsd
ukc> disable mpbios
ukc> quit
$ md5 /bsd /bsd.org
MD5 (/bsd) = e2f3c034ed6a86cdfdac06e58da9f963
MD5 (/bsd.org) = a2ad93f7ac14a5f54bce38b4e731a16e
再起動して設定無しで起動できればOK.
ダメな場合、元のカーネルで起動する。
boot> bsd.org -c

/homeを移動する。rootでログインする。
mv -i /home /var
ln -s /var/home /home

ログインシェルをbashなどにする。
$ export PKG_PATH=http://ftp.jaist.ac.jp/pub/OpenBSD/4.9/packages/amd64/
$ sudo pkg_add wget
$ sudo pkg_add bash
$ chsh -s /usr/local/bin/bash
PKG_PATHを.bashrcなどに書く。

設定ファイルの例。
$ cat ~/.bash_profile
[[ -f ~/.bashrc ]] && . ~/.bashrc
$ cat ~/.bashrc | grep -v ^$ | perl -ne 'print if(!m/^\s*#/)'
if [[ -n "$PS1" ]]; then
        PS1="\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] "
        alias ls='ls -CF'
        alias ll='ls -lT'
        alias rm='rm -i'
        alias cp='cp -i'
        alias mv='mv -i'
        function share_history
        {
                history -a
                history -c
                history -r
        }
        PROMPT_COMMAND='share_history'
        shopt -u histappend
        HISTFILESIZE=2097152
        HISTSIZE=10000
        HISTCONTROL=ignoreboth
        HISTIGNORE='?:??:???'
        export PKG_PATH=http://ftp.jaist.ac.jp/pub/OpenBSD/4.9/packages/`machine -a`/
fi
$ cat ~/.inputrc
set completion-ignore-case on
"\C-n":history-search-forward
"\C-p":history-search-backward

メールが1件あるので読む。
$ mail
$ man afterboot
公式サイトのマニュアルなどを見る。



参考。
http://apis.jpn.ph/fswiki/wiki.cgi?page=OpenBSD%2FRebuild#p11
http://karl0204.at.webry.info/200907/article_3.html
http://www.openbsd.org/anoncvs.html
http://www.openbsd.org/faq/ports/ports.html#PortsFetch
http://d.hatena.ne.jp/oogatta/20100509/1273372980
http://sinensis.plala.jp/mm/dcc0c3ad2de5ff3633640eda7617f4927237b128/?order=-cdate#c8f7a9f38878ca2c622b5660e6ca8f746042d562
http://www.linux-kvm.org/page/Guest_Support_Status#UNIX_Family:_BSD
http://infosys.gsid.nagoya-u.ac.jp/~ohna/perl_lesson/intro2perl/text.html

2011-05-01

kvmのキーボードのアンダーバーの入力

kvm上のcentos5.6のコンソール上でアンダーバーを入力するとエラーが表示される。
$ sudo tail -f /var/log/messages
May  1 03:42:08 centos5 kernel: atkbd.c: Unknown key pressed (translated set 2, code 0x0 on isa0060/serio0).
May  1 03:42:08 centos5 kernel: atkbd.c: Use 'setkeycodes 00 ' to make it known.
May  1 03:42:08 centos5 kernel: atkbd.c: Unknown key released (translated set 2, code 0x0 on isa0060/serio0).
May  1 03:42:08 centos5 kernel: atkbd.c: Use 'setkeycodes 00 ' to make it known.

キーボードのオプションの追加。
http://wiki.libvirt.org/page/QEMUSwitchToLibvirt#-k

修正する。
$ sudo grep -n graphics /etc/libvirt/qemu/centos5.xml
51:    <graphics type='vnc' port='-1' autoport='yes' keymap='ja'/>

確認する。
$ ps aux|grep /usr/bin/qemu-system-x86_64|grep centos5|grep "\-k ja"
root      5194  4.9  2.0 1246120 163192 ?      Sl   03:15   0:53 /usr/bin/qemu-system-x86_64 --enable-kvm -S -M pc-0.13 -enable-kvm -m 1024 -smp 2,sockets=2,cores=1,threads=1 -name centos5 -uuid 91cadcf0-8ff0-dcf9-d18a-14637b5c1f21 -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/centos5.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -boot order=c,menu=off -drive file=/mnt/share/kvm/centos5/centos5.img,if=none,id=drive-virtio-disk0,boot=on,format=raw -device virtio-blk-pci,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,fd=15,id=hostnet0 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:34:f7:36,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -usb -vnc 127.0.0.1:3 -k ja -vga cirrus -device AC97,id=sound0,bus=pci.0,addr=0x4 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6

ゲストOS自体の設定も確認する。
$ grep -n 106 /etc/sysconfig/keyboard
2:KEYTABLE="jp106"

他のkvm上のlinuxなどもエラーはコンソール上に表示されないが入力できないので修正する。

修正のコマンドの例。
$ sudo virsh edit centos5
その後ゲストOSをshutdownしてから再起動する。

2011-04-30

kvmのハードディスクを縮小する

debianのハードディスクファイルを縮小する。

virt-managerなどからdebianを停止させる。

あたらしいディスクイメージを作成する。(8GB)
$ sudo mv -i debian.img debian.img.old
$ sudo dd if=/dev/zero of=debian.img bs=1024M count=8

ファイルの状態を確認する。
$ qemu-img info debian.img
$ filefrag debian.img
$ filefrag -v debian.img
$ sudo hdparm --fibmap debian.img

手動で、新しいハードディスク、古いハードディスク、linuxのCDを指定して、CDからブートさせる。
$ sudo /usr/bin/kvm -k ja -m 1024 -smp 1 -hda debian.img -hdb debian.img.old -net nic,macaddr=52:54:00:12:34:58 -net tap,ifname=tap2,script=no,downscript=no -cdrom ../tmp/install-amd64-minimal-20110421.iso -boot d

VNCクライアントでログインしてgentooのインストールCDの設定を行う。
<< Load keymap (Enter for default):jp
$ ifconfig
$ ifconfig eth0 192.168.0.xxx # 設定されていない場合に手動で設定する。
$ passwd
$ /etc/init.d/sshd start

sshでログインする。ディスクの中身のコピーなどを行う。
$ ssh root@192.168.0.xxx

ディレクトリ作成。
$ cd /mnt/
$ mkdir disk{1,2}

元のディスクをリードオンリーでマウントする。設定によって異なる。/etc/fstabを見て確認しておく。
$ mount -r /dev/sdb3 disk2/
$ mount -r /dev/sdb1 disk2/boot/

新しいディスクをフォーマットする。 始まりが2048になっているが大丈夫???
$ fdisk /dev/sda
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048      264191      131072   83  Linux
/dev/sda2          264192     1312767      524288   82  Linux swap / Solaris
/dev/sda3         1312768    16777215     7732224   83  Linux

確認する。
$ fdisk -l /dev/sda

新しいディスクのパーテーションを作成する。UUIDを確認する。
$ mke2fs -j /dev/sda1
$ mke2fs -j /dev/sda3
$ mkswap /dev/sda2
$ blkid | grep ^/dev/sda

元のディスクと同じ構成でマウントする。
$ mount /dev/sda3 disk1/
$ mkdir disk1/boot
$ mount /dev/sda1 disk1/boot/

元のディスクを新しいディスクにコピーする。
このコマンドの場合、元のディスクのルートディレクトリに/.htaccessなどの隠しファイルがあってもコピーされない。
$ cd disk1/
$ cp -pir ../disk2/* .

chrootで新しいディスクに入る。
$ mount -t proc none proc/
$ mount -o bind /dev dev/
$ chroot . /bin/bash
$ source /etc/profile
$ export PS1="(chroot) $PS1"

UUIDを更新してgrubをインストールする。
$ cd /etc/
$ cp -pi fstab fstab.old
$ blkid | grep ^/dev/sda
$ vi fstab
$ grub-install /dev/sda
$ update-grub
$ exit

終わり。 shutdown終了後に、手動で起動したkvmが終了しなければkvmを手動で終了させる。
$ shutdown -h now

virt-managerなどの本来の起動方法で起動する。
うまく行けば起動する。

deianのレスキューモード => bashと打つ。シェルを変更する場合。

起動しない原因はUUIDが違うため。 UUIDを使わない場合、設定に使うlinuxのバージョンなどによってデバイス名が違う。
/dev/sda
/dev/hda
/dev/vda
など。

参考。
http://orangesooda.com/no/2011/02/kvm.html
http://www.gentoo.org/doc/ja/handbook/handbook-x86.xml?part=1&chap=6
https://forums.ubuntulinux.jp/viewtopic.php?pid=44967
http://www.bigegg.net/post/913233960/0x07-linux-os-vmware-server
http://sokohakato.wordpress.com/linux/centos/xenimgmount/



ホストOS上で直接コピーする。(失敗)

マウントする。
$ mkdir /tmp/disk1
$ mkdir /tmp/disk2
$ sudo fdisk debian.img
$ fdisk -l debian.img|tail -n4
デバイス ブート      始点        終点     ブロック   Id  システム
debian.img1            2048      264191      131072   83  Linux
debian.img2          264192     1312767      524288   82  Linux スワップ / Solaris
debian.img3         1312768    16777215     7732224   83  Linux
$ sudo losetup /dev/loop0 debian.img
$ sudo losetup /dev/loop1 debian.img.old
$ sudo kpartx -l /dev/loop0
$ sudo kpartx -l /dev/loop1
$ sudo kpartx -a /dev/loop0
$ sudo kpartx -a /dev/loop1
$ ls -l /dev/mapper/

フォーマットする。
$ sudo mke2fs -j /dev/mapper/loop0p1
$ sudo mke2fs -j /dev/mapper/loop0p3
$ sudo mkswap /dev/mapper/loop0p2

元のディスクをマウントする。
$ sudo mount -r /dev/mapper/loop1p3 /tmp/disk2/
$ sudo mount -r /dev/mapper/loop1p1 /tmp/disk2/boot/

新しいディスクをマウントする。
$ sudo mount /dev/mapper/loop0p3 /tmp/disk1/
$ sudo mkdir /tmp/disk1/boot
$ sudo mount /dev/mapper/loop0p1 /tmp/disk1/boot/
$ df -h|grep ^/dev/map
$ mount|grep ^/dev/map

コピーする。
$ sudo rsync -a /tmp/disk2/ /tmp/disk1/

grubのインストールができなさそうなことと、ホストOS上で作業すると失敗しそうなのでkvm上で作業することにする。

2011-04-24

virt-managerでfreebsdが起動しない例

virt-managerでfreebsdのインストールをしたが、いつのまにか起動画面の10秒待つ部分で停止している状態になっていた。

http://wiki.libvirt.org/page/QEMUSwitchToLibvirt#-no-kvm
http://qemu-forum.ipi.fi/viewtopic.php?f=14&t=719

修正します。
$ sudo virsh edit freebsd

修正後。
$ sudo grep -n "domain type" /etc/libvirt/qemu/{centos5,freebsd}.xml
/etc/libvirt/qemu/centos5.xml:1:<domain type='kvm'>
/etc/libvirt/qemu/freebsd.xml:1:<domain type='qemu'>

sys-kernel/gentoo-sourcesの2.6.36-r8から2.6.37-r4にホストOSのkernelを更新したからかもしれない。

2.6.38-gentoo-r2に更新しても-no-kvm無しで起動できなかった。
2.6.36-gentoo-r8に戻したところ-no-kvm無しで起動できた。
$ sudo grep -n "domain type" /etc/libvirt/qemu/{centos5,freebsd}.xml
/etc/libvirt/qemu/centos5.xml:1:<domain type='kvm'>
/etc/libvirt/qemu/freebsd.xml:1:<domain type='kvm'>
$ uname -a
Linux amdgentoo 2.6.36-gentoo-r8 #1 SMP Sun Apr 24 20:30:35 JST 2011 x86_64 AMD Phenom(tm) 9350e Quad-Core Processor AuthenticAMD GNU/Linux

バージョンを上げる理由が無ければ2.6.32-r24が良いのかもしれない。

2011-04-21

virt-managerでdebianが起動しない例

手動でkvmを起動させる場合には起動するが、そのディスクファイルを指定してvirt-managerで起動すると起動しない。
mkinitramfsで/boot/initrd.img-2.6.26-2-amd64を再作成しても変化無かった。
手動でkvmを起動させる場合で、使うCPU数を1=>2にして、しばらくすると停止する。
lenny => squeezeへアップグレードした。
$ diff /etc/apt/sources.list.2011-04-21 /etc/apt/sources.list
6,8c6,8
< deb http://security.debian.org/ lenny/updates main
< deb-src http://security.debian.org/ lenny/updates main
< deb http://ftp.jp.debian.org/debian/ lenny main
---
> deb http://security.debian.org/ squeeze/updates main
> deb-src http://security.debian.org/ squeeze/updates main
> deb http://ftp.jp.debian.org/debian/ squeeze main

実際に更新する。大量の更新と設定の確認が行われる。
$ sudo aptitude update && sudo aptitude full-upgrade

更新後にvirt-managerでディスクファイルを指定して新規登録する。起動できた。
MACアドレスが変わっている場合、その設定を消す。(再起動で再作成されるはず。)
$ sudo mv -i /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.old

2011-04-20

virt-managerでcentos5が起動しない例

手動で作成したイメージをvirt-managerで起動できない。
mount could not find filesystem ' dev root'

http://communities.vmware.com/thread/288708

virt-managerの「新しい仮想マシンの作成」からレスキューモードでブートする。
boot: linux rescue
言語        : english
キーボード  : jp106
ネットワーク: 無し
マウント    : する(書き込みOKで)

initrdを再作成する。
$ chroot /mnt/sysimage/
$ cd /boot/
# デフォルトのカーネルを確認する。
$ mv -i initrd-2.6.18-238.9.1.el5.img initrd-2.6.18-238.9.1.el5.img.old
$ mkinitrd initrd-2.6.18-238.9.1.el5.img 2.6.18-238.9.1.el5
$ reboot

デフォルトのカーネルを確認する。default=0の場合、1番最初のtitle~の部分辺りの名前。
たぶん番号の多いものがデフォルトなので見なくても良い。
$ sudo lv /boot/grub/grub.conf
default=0
...
title CentOS (2.6.18-238.9.1.el5)
...
initrd /boot/initrd-2.6.18-238.9.1.el5.img
...

変わっていればネットワークを設定しなおす。HWADDRなど。
$ ll /etc/sysconfig/network-scripts/ifcfg-eth0*
-rw-r--r-- 1 root root 245 2011-04-20 02:39:45 /etc/sysconfig/network-scripts/ifcfg-eth0
-rw-r--r-- 1 root root 230 2011-04-20 01:47:10 /etc/sysconfig/network-scripts/ifcfg-eth0.bak

virt-managerの設定を手動で変更する場合、止めてからの方が良い。
$ sudo /etc/init.d/libvirtd stop
$ sudo vi /etc/libvirt/qemu/centos5.xml
$ sudo grep img /etc/libvirt/qemu/centos5.xml
      <source file='/mnt/share/kvm/centos5/centos5.img'/>
$ sudo /etc/init.d/libvirtd start

libvirt, virt-manager

管理ソフトでkvmを起動します。
useフラグを追加してインストールします。

http://bugs.gentoo.org/305407

$ eix "^(libvirt|virt-manager)$"
[I] app-emulation/libvirt
     Available versions:  **0.8.5-r2 0.8.8-r1 ~0.9.0 ~0.9.0-r1 **9999 {avahi caps debug iscsi +json +libvirtd lvm +lxc macvtap +network nfs nls numa openvz parted pcap phyp policykit python qemu sasl selinux udev uml virt-network virtualbox xen}
     Installed versions:  0.8.8-r1(16時23分30秒 2011年04月19日)(avahi json libvirtd lxc network nls python qemu -caps -debug -iscsi -lvm -macvtap -nfs -numa -openvz -parted -pcap -phyp -policykit -sasl -selinux -udev -uml -virt-network -virtualbox -xen)
     Homepage:            http://www.libvirt.org/
     Description:         C toolkit to manipulate virtual machines

[I] app-emulation/virt-manager
     Available versions:  ~0.8.6 (~)0.8.7 **9999 {gnome-keyring policykit sasl}
     Installed versions:  0.8.7(16時01分08秒 2011年03月29日)(-gnome-keyring -policykit -sasl)
     Homepage:            http://virt-manager.org/
     Description:         A graphical tool for administering virtual machines (KVM/Xen)

Found 2 matches.
$ grep -iP "libvirt|virt-manager" /etc/portage/package.{keywords,mask,unmask,use}|grep -v ":#"
/etc/portage/package.keywords:=app-emulation/virt-manager-0.8.7 ~amd64
/etc/portage/package.use:app-emulation/libvirt  qemu

起動します。
$ sudo /etc/init.d/libvirtd start
$ sudo rc-update add libvirtd default
$ sudo virt-manager (ホストOSのGUIの画面で)
アプリケーション => システムツール => 仮想マシンマネージャーで起動するには設定が必要なのかもしれません。

新規作成します。
新しい仮想マシンの作成 => CDを選んだりします。
その際ディスクをすでにfedora14が入っているファイルにします。
$ sudo grep mnt /etc/libvirt/qemu/fedora14.xml
      <source file='/mnt/share/kvm/fedora/fedora.img'/>
CDから起動した状態の画面が表示されますが、この場合すぐに再起動します。
今度は作成済みのユーザーが表示されるログイン画面になったのでCDから起動していないです。

仮想マシンの設定をします。
設定ファイル
$ ll /etc/libvirt/qemu/fedora14.xml

グラフィカルな画面で設定します。
fedora14仮想マシン
表示 => 詳細 => Boot Options => 自動起動 => ホスト起動時に仮想マシンを起動する
                Processor => Configration => phenom

設定が追加されます。
$ sudo grep phenom /etc/libvirt/qemu/fedora14.xml
    <model>phenom</model>

監視項目の追加をします。ディスクI/O、ネットワークI/Oを追加します。
仮想マシンマネージャー(スーパーユーザーで)
編集 => 設定 => 統計 => 統計情報の監視を有効に => チェックする
表示 => グラフ => チェックする

起動オプションが長いので、手動でやるより監視ソフトを使うのが良いようです。
$ ps aux|grep /usr/bin/qemu-system-x86_64|grep -v grep
root     24528  3.5 11.2 1255004 908796 ?      Sl   17:39   1:02 /usr/bin/qemu-system-x86_64 --enable-kvm -S -M pc-0.13 -cpu phenom -enable-nesting -enable-kvm -m 1024 -smp 2,sockets=2,cores=1,threads=1 -name fedora14 -uuid 848b5932-0a0c-5fbf-d0df-de4aa5b08fee -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/fedora14.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -boot c -drive file=/mnt/share/kvm/fedora/fedora.img,if=none,id=drive-virtio-disk0,boot=on,format=raw -device virtio-blk-pci,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,fd=15,id=hostnet0 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:c4:84:e4,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -usb -device usb-tablet,id=input0 -vnc 127.0.0.1:0 -vga cirrus -device AC97,id=sound0,bus=pci.0,addr=0x4 -incoming fd:12 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6

仮想マシンを停止します。ゲストOSはスリープ状態になります。
$ sudo /etc/init.d/libvirtd stop
 * Stopping libvirtd ...
 *  Shutting down domain(s):
 *    fedora14                                                                                                          [ ok ]
$ ssh 192.168.0.212
ssh: connect to host 192.168.0.212 port 22: No route to host
$ sudo /etc/init.d/libvirtd start
 * Starting libvirtd ...                                                                                                [ ok ]
$ ssh 192.168.0.212
user@192.168.0.212's password:

起動とスリープはlibvirtだけでいいかもしれませんが設定、管理などがvirt-managerが無いと大変そうです。

spiceを試した。
$ sudo ACCEPT_KEYWORDS="**" emerge --oneshot -avt =app-emulation/spice-0.8.0

kvmが対応していなかった。(-vga qxl)
$ kvm --help | grep -n ^-vga -A1
71:-vga [std|cirrus|vmware|xenfb|none]
72-                select video card type

違うものを入れるようだ。ハードマスクされているのでやめておく。
$ eix qemu-kvm -c
[I] app-emulation/qemu-kvm (0.13.0-r2@2011年03月28日): QEMU + Kernel-based Virtual Machine userland tools
[N] app-emulation/qemu-kvm-spice (--): Spiced QEMU + Kernel-based Virtual Machine userland tools
Found 2 matches.

ルート権限で起動させるため アプリケーション => システムツール => 仮想マシンマネージャー を変更した。(gnomeの場合)
virt-manager => gksudo virt-manager

2011-04-18

kvmのdebian(lenny)のcpu数

debianでsmpの指定が-smp 2だけの場合に起動しない。
centos5.6,fedora14の場合は指定しなくても起動する。
/usr/bin/kvm -k ja -m 2048 -cpu phenom -smp 2,maxcpus=2,cores=2 \
-hda /mnt/share/kvm/debian/debian.img \
-net nic,macaddr=52:54:00:12:34:57 -net tap,ifname=tap1,script=no,downscript=no &
$ kvm --help | grep "^-smp" -A6
-smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]
                set the number of CPUs to 'n' [default=1]
                maxcpus= maximum number of total cpus, including
                offline CPUs for hotplug, etc
                cores= number of CPU cores on one socket
                threads= number of threads on one CPU core
                sockets= number of discrete sockets in the system
しばらくすると反応が無くなるので、多分止まっているので、-smp指定無しにした。

設定を変更して様子を見た。
/usr/bin/kvm -k ja -m 2048 -cpu phenom -smp 2,maxcpus=2,cores=1,threads=1,sockets=2 \
-hda /mnt/share/kvm/debian/debian.img \
-net nic,macaddr=52:54:00:12:34:57 -net tap,ifname=tap1,script=no,downscript=no &

2011-04-17

kvmのマウスの利用

fedora14のインストールを行った際のメモです。
vncクライアントで127.0.0.1:5902などでアクセスする場合です。

http://www.linux-kvm.org/page/FAQ#When_I_click_the_guest_operating_system_window.2C_mouse_is_grabbed._How_can_I_get_mouse_to_not_to_do_that.3F_OR_Mouse_doesn.27t_show_up_.2F_doesn.27t_work_in_the_guest._What_do_I_do.3F
http://wiki.clug.org.za/wiki/QEMU_mouse_not_working
http://blog.livedoor.jp/les_paul_sp/archives/694273.html

$ export SDL_VIDEO_X11_DGAMOUSE=0
$ sudo kvm -k ja -hda fedora.img -cdrom /tmp/Fedora-14-x86_64-Live-Desktop.iso -boot d \
-net nic,macaddr=52:54:00:12:34:58 -net tap,ifname=tap2,script=no,downscript=no \
-usb -usbdevice tablet -cpu phenom -smp 2 -m 2048

オプションを追加する。(-usb -usbdevice tablet)
オプションを追加してもマウスが動かない場合に起動前に追加する。(export SDL_VIDEO_X11_DGAMOUSE=0)
使用できるメモリをある程度増やして起動しないとまともに動作しない。(-m 2048)

ハードディスクの場合はrawにしたほうが良いです。
ssdなどの場合は -f qcow2 でも良いかもしれません。
sudo qemu-img create -f raw fedora.img 8G

コンバート。1.5G => 20G(設定したサイズ)まで増えた。
$ sudo qemu-img convert -O raw debian.img.2011-04-16 debian.img

ネットワークの設定。
$ cat net | grep -v ^# | grep -v ^$
bridge_br0="eth0 tap0 tap1 tap2"
config_eth0=( "null" )
config_br0=( "192.168.0.100/24" )
routes_br0=( "default via 192.168.0.1" )
dns_servers_br0="192.168.0.1"
brctl_br0=( "setfd 0" "sethello 10" "stp off" )
RC_NEED_br0=( "net.tap0" "net.tap1" "net.tap2" "net.eth0" )
depend_br0 ()
{
  need net.eth0 net.tap0 net.tap1 net.tap2
}
config_tap0=( "null" )
tuntap_tap0="tap"
tunctl_tap0="-u root"
mac_tap0="52:54:01:12:34:56"
config_tap1=( "null" )
tuntap_tap1="tap"
tunctl_tap1="-u root"
mac_tap1="52:54:01:12:34:57"
config_tap2=( "null" )
tuntap_tap2="tap"
tunctl_tap2="-u root"
mac_tap2="52:54:01:12:34:58"
config_eth0=( "null" )
config_dummy0=( "192.168.0.101 netmask 255.255.255.255" )

●起動の設定。
$ cat /etc/conf.d/local.start | grep -v ^# | grep -v ^$
/usr/bin/kvm -k ja -m 2048 -cpu phenom -smp 2 \
-hda /mnt/share/kvm/centos5/centos5.img \
-net nic,macaddr=52:54:00:12:34:56 -net tap,ifname=tap0,script=no,downscript=no &
/usr/bin/kvm -k ja -m 2048 -cpu phenom -smp 1 \
-hda /mnt/share/kvm/debian/debian.img \
-net nic,macaddr=52:54:00:12:34:57 -net tap,ifname=tap1,script=no,downscript=no &
SDL_VIDEO_X11_DGAMOUSE=0 /usr/bin/kvm -k ja -m 2048 -cpu phenom -smp 2 -usb -usbdevice tablet \
-hda /mnt/share/kvm/fedora/fedora.img \
-net nic,macaddr=52:54:00:12:34:58 -net tap,ifname=tap2,script=no,downscript=no &
ホストOS終了時にシャットダウンするようにしないとまずいかもしれない。

2010-06-26

kvmのインストール

http://en.gentoo-wiki.com/wiki/KVM
http://www.linux-kvm.com/content/using-ksm-kernel-samepage-merging-kvm
http://foamy-capriccio.seesaa.net/article/109941507.html

まず無い場合はkernelに設定を追加します。
(例) それっぽい文字を探します。
$ find /lib/modules/*/ -type f -iname '*.o' -or -iname '*.ko' -ls|grep -i kvm

無い場合、設定を変えて再インストールします。
この例の場合genkernelを利用していますがmenuconfigの部分は同じです。
menuconfigは/で検索できます。
$ sudo genkernel --menuconfig all

[*] Virtualization  --->
<*>   Kernel-based Virtual Machine (KVM) support # ここは<M>でOK
<*>     KVM for AMD processors support           # ここは<M>でOK。CPU毎に異なる。無くても良い。

Device Drivers  --->
[*] Network device support  --->
<M>   Universal TUN/TAP device driver support

-*- Networking support  --->
Networking options  --->
<*> 802.1d Ethernet Bridging
<M> 802.1Q VLAN Support

# いらない?複数のゲストOSを動かす場合に有効な共有メモリ?
Processor type and features  --->
[*] Enable KSM for page merging

/dev/kvmが無いので、モジュールだとダメなのかと思い<*>に変えてインストールしましたがダメでした。
BIOSが原因でした。
$ dmesg | grep kvm
kvm: disabled by bios

マザーボードに依存する。
MA78GM-DS2HPの場合
起動時にDEL
Advanced BIOS Features
Virtualization [Disabled] => [Enabled]
Save & Exit Setup => Y

kernelの設定が成功の場合
$ ll /dev/kvm
crw-rw---- 1 root kvm 10, 232 2010-06-24 10:40:32 /dev/kvm

ここがMだと
<M>   Kernel-based Virtual Machine (KVM) support
<M>     KVM for AMD processors support
/etc/modules.autoload.d/kernel-2.6 などに
kvm-amdなどを書くと起動時に有効になります。
ディストリビューション毎に異なる場合が有ります。

手動
$ sudo modprobe kvm-amd

関連するパッケージをインストールします。
$ sudo vi /etc/portage/package.keywords
$ grep -i kvm /etc/portage/package.keywords
app-emulation/qemu-kvm
#$ sudo emerge -av app-emulation/qemu-kvm
$ sudo emerge -uav qemu-kvm usbutils bridge-utils usermode-utilities iptables
$ sudo gpasswd -a ユーザー名 kvm

インストールCDのイメージファイルをダウンロードします。
$ cd /mnt/share/kvm/
$ wget http://ftp.riken.jp/Linux/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-bin-DVD-1of2.iso
$ qemu-img create -f qcow2 centos5.img 20G
$ kvm -hda centos5.img -cdrom CentOS-5.5-x86_64-bin-DVD-1of2.iso -boot d
$ sudo emerge -av net-misc/tigervnc

CentOS-5.5-x86_64-netinstall.iso にしたら途中で止まりました。
なのでDVDのisoファイルをダウンロードしました。
インストール項目のチェックを全部外す場合、CDの1枚目で大丈夫だったかもしれません。
http://ftp.riken.jp/Linux/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-bin-1of8.iso など。

グラフィカルな環境で実行します。無い場合はqemu-kvm(kvm)コマンドでコンソールを指定して繋げると可能かもしれません。
$ vncviewer など (ssvncが接続設定を保存できたので楽かもしれません)
127.0.0.1:5900 を入力

なんだかんだで、centos5が起動したところ、ゲストOSから外にpingが通りませんでした。
OK ping 192.168.0.210 (centos5,ゲストOS)
OK ping 192.168.0.100 (gentoo,ホストOS)
NG ping 192.168.0.1   (ルーター)
NG ping www.example.com (外)

原因は /etc/sysctl.conf に余分な設定があるためでした。
sysctl.confをデフォルトの設定ファイルに戻して修正したところ成功しました。
反映させる場合、デフォルト値がわからない場合はsysctl -pより再起動した方が早いです。
-#net.ipv4.ip_forward = 0
+net.ipv4.ip_forward = 1

他の原因としてはiptablesが有効な場合ブリッジ(br0など)のFORWARDを通す設定が無いかもしれません。
# 追加する
$ sudo iptables -A FORWARD -i br0 -j ACCEPT
# 一旦止める
$ sudo /etc/init.d/iptables stop

セーブする場合、設定ファイルをバックアップすると良いです。
/var/lib/iptables/rules-save
/etc/sysconfig/iptables
など。

起動コマンドの例
$ sudo kvm -hda centos5.img -m 2048 -net nic,macaddr=52:54:00:12:34:56 -net tap,ifname=tap0,script=no,downscript=no &

ネットワークの設定(/etc/conf.d/net)の例
起動時に有効にする場合
bridge_br0="eth0 tap0"
brctl_br0=( "setfd 0" "sethello 10" "stp off" )
depend_br0 ()
{
  need net.eth0 net.tap0
}
config_br0=( "192.168.0.100/24" )
routes_br0=( "default via 192.168.0.1" )
dns_servers_br0="192.168.0.1"
config_tap0=( "null" )
tuntap_tap0="tap"
tunctl_tap0="-u root"
mac_tap0="52:54:00:12:34:56"
config_eth0=( "null" )

/etc/sysctl.conf のコメントアウトした設定の例
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_timestamps = 1

ホストOSの起動時に起動する。キーボードの種類を設定する例
$ /etc/conf.d
$ diff local.start.2010-07-03 local.start
8a9,10
>
> /usr/bin/kvm -k ja -hda /mnt/share/kvm/centos5/centos5.img -m 2048 -net nic,macaddr=52:54:00:12:34:57 -net tap,ifname=tap0,script=no,downscript=no &