Device 8086:1528
http://pci-ids.ucw.cz/read/PC/8086/1528
2.6.38からサポートされている
http://kernelnewbies.org/Linux_2_6_38-DriversArch
drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c
バニラカーネルであれば使えそう。
そこはかとなく書きつくれば
| Intelのカッコいい箱はCPU等と同様のカラーリング。 |
| 同梱物の写真 SSD本体、3.5インチマウンター、CD、説明書、シール、 電源ケーブル、SATAケーブル、ネジが同梱されています。 |
| 3.5インチマウンタ。通常の電源ケーブルとSATAケーブルを利用する。 |
| SSD本体 |
| カッコいいシールはパソコンに貼るも善し。 |
CPU: Quad-Core AMD Opteron 1352, 2.1GHz, cache 512 KBkvmで仮想マシンを作る場合、IntelのCPUであればIntel VT、AMDのCPUであればAMD-Vに対応している必要がある。CPUのそれらの仮想化支援機能が無ければただの低速エミュレーターになってしまう。
MEM: DDR2 800MHz ECC Unbuffered 4GB x8
HDD: Seagate ST3320613AS 320GB SATA
NIC: Broadcom NetXtreme BCM5722
Intelのマシンの場合、vmxというのがあれば良い。root@kvm:~# egrep flags /proc/cpuinfo |head -n 1flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs npt lbrv svm_lock
ktaka@hana:~$ egrep flags /proc/cpuinfo |head -n 1
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
KVMホスト上でブリッジネットワークを利用するために必要な以下のフラグも有効にした。CONFIG_CGROUPS=yCONFIG_CGROUP_DEBUG=yCONFIG_CGROUP_FREEZER=yCONFIG_CGROUP_DEVICE=yCONFIG_CGROUP_CPUACCT=yCONFIG_CGROUP_MEM_RES_CTLR=yCONFIG_CGROUP_MEM_RES_CTLR_SWAP=yCONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=yCONFIG_CGROUP_PERF=yCONFIG_CGROUP_SCHED=yCONFIG_BLK_CGROUP=mCONFIG_DEBUG_BLK_CGROUP=yCONFIG_HIGH_RES_TIMERS=yCONFIG_HPET_TIMER=yCONFIG_HPET_EMULATE_RTC=yCONFIG_COMPACTION=yCONFIG_MIGRATION=yCONFIG_KSM=yCONFIG_HPET=yCONFIG_HPET_MMAP=yCONFIG_HAVE_KVM=yCONFIG_HAVE_KVM_IRQCHIP=yCONFIG_HAVE_KVM_EVENTFD=yCONFIG_KVM_APIC_ARCHITECTURE=yCONFIG_KVM_MMIO=yCONFIG_KVM_ASYNC_PF=yCONFIG_VIRTUALIZATION=yCONFIG_KVM=mCONFIG_KVM_INTEL=mCONFIG_KVM_AMD=mCONFIG_KVM_MMU_AUDIT=yCONFIG_VHOST_NET=m
CONFIG_BRIDGE_NETFILTER=yカーネルコンパイル&インストール後、新規カーネルでブートしバージョン確認
CONFIG_BRIDGE=m
CONFIG_BRIDGE_IGMP_SNOOPING=y
CONFIG_STP=m
CONFIG_LLC=m
root@kvm:~# uname -a
Linux kvm 3.2.9-64kvmh01 #1 SMP Mon Mar 5 21:47:42 JST 2012 x86_64 GNU/Linux関連モジュールの確認
root@kvm:~# lsmod |egrep "kvm|bridge"
kvm_amd 71505 0
kvm 566158 1 kvm_amd
bridge 125971 0
stp 2987 1 bridge
llc 8862 2 bridge,stp
auto lo kbr0
iface lo inet loopback
iface kbr0 inet staticホストOSを再起動すると、以下の様な状態になります。
bridge_ports eth0
bridge_stp off
bridge_maxwait 2
address 192.168.20.9
netmask 255.255.252.0
network 192.168.20.0
broadcast 192.168.20.255
gateway 192.168.20.1
pre-up /sbin/ip link set dev eth0 up
root@kvm:~# brctl showブリッジインターフェースkbr0が作成され、eth0が接続されている。
bridge name bridge id STP enabled interfaceskbr0 8000.0022190601e3 no eth0
ブリッジインターフェースkbr0に192.168.20.9というアドレスが割り当てられている。root@kvm:~# ip add1: lo:mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0:mtu 1500 qdisc mq master kbr0 state UP qlen 1000
link/ether 00:22:19:06:01:e3 brd ff:ff:ff:ff:ff:ff
3: kbr0:mtu 1500 qdisc noqueue state UP link/ether 00:22:19:06:01:e3 brd ff:ff:ff:ff:ff:ffinet 192.168.20.9/22 brd 192.168.20.255 scope global kbr0
wget http://wiki.qemu.org/download/qemu-1.0.1.tar.gz普通にtarボールを展開して、コンパイル&インストールする。
tar xf qemu-1.0.1.tar.gz ; cd qemu-1.0.1
./configure --prefix=/kvm/qemu/qemu-1.0.1/ --enable-kvm
make install
tree -L 2 /kvm/qemu/
/kvm/qemu/
`-- qemu-1.0.1
|-- bin
|-- etc
`-- share
root@kvm:~# /kvm/qemu/qemu-1.0.1/bin/qemu-x86_64 -version
qemu-x86_64 version 1.0,1, Copyright (c) 2003-2008 Fabrice Bellard
dd if=/dev/zero of=./kvm.img bs=1024 seek=9999999 count=1ファイルシステム作成
mkfs.ext4 kvm.imgdebootstrapでDebianインストール
mount -o loop kvm.img /mnt/tmp/その他の細々した設定
debootstrap --include=openssh-server,openssh-client,rsync,pciutils,acpid squeeze /mnt/tmp/
T0:23:respawn:/sbin/getty -L ttyS0 19200 vt100
UTC=no
auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp
rm /mnt/tmp/etc/udev/rules.d/70-persistent-net.rules
chroot /mnt/tmp/
passwd
apt-get clean
dpkg-reconfigure tzdata
CONFIG_HOTPLUG=y
CONFIG_TICK_ONESHOT=y
CONFIG_PARAVIRT_GUEST=y
CONFIG_PARAVIRT_TIME_ACCOUNTING=y
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST=y
CONFIG_PARAVIRT=y
CONFIG_PARAVIRT_SPINLOCKS=y
CONFIG_PARAVIRT_CLOCK=y
CONFIG_PARAVIRT_DEBUG=y
CONFIG_MEMORY_HOTPLUG=y
CONFIG_MEMORY_HOTPLUG_SPARSE=y
CONFIG_MEMORY_HOTREMOVE=y
CONFIG_VIRT_TO_BUS=y
CONFIG_HOTPLUG_CPU=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
CONFIG_ACPI_HOTPLUG_CPU=y
CONFIG_PCI_MSI=y
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_NET=y
CONFIG_VIRTIO_CONSOLE=y
CONFIG_HW_RANDOM_VIRTIO=y
CONFIG_VIRTIO=y
CONFIG_VIRTIO_RING=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BALLOON=y
CONFIG_VIRTIO_MMIO=y
CONFIG_VIRT_DRIVERS=y
CONFIG_HAVE_KVM=y
root@kvm:~# ls -la /kvm/boot/
total 8728
drwxr-xr-x 2 root root 4096 Mar 8 03:38 .
drwxr-xr-x 10 root root 4096 Mar 6 17:12 ..
-rw-r--r-- 1 root root 1105677 Mar 8 03:38 System.map-3.2.9-64kvmg01
-rw-r--r-- 1 root root 44798 Mar 8 03:38 config-3.2.9-64kvmg01
-rw-r--r-- 1 root root 3152304 Mar 8 03:38 vmlinuz-3.2.9-64kvmg01
/kvm/qemu/qemu-kvm-1.0/bin/qemu-system-x86_64 ¥以下、それぞれのオプションについて説明する。
--enable-kvm -nographic -daemonize ¥-drive file=/kvm/data/kvm.img,if=virtio -m 512 ¥
-kernel /kvm/boot/vmlinuz-3.2.9-64kvmg01 ¥
-append "console=ttyS0,19200n8 root=/dev/vda" ¥
-net nic,vlan=0,macaddr=52:54:00:21:00:01,model=virtio ¥
-net tap,vlan=0,script=/kvm/etc/qemu-ifup,ifname=hoge ¥
-serial unix:/tmp/con.sock,server,nowait ¥
-monitor unix:/tmp/mon.sock,server,nowait
--enable-kvm Intel-VT またはAMD-Vのハードウェア仮想化支援機能を利用する
-nographic グラフィカルな出力を無効にし、シリアルをコンソールにリダイレクトする
-daemonize qemuをデーモンとして起動する
-m 512 メモリを512MByte 割り当てる
-smp 1 仮想マシンにプロセッサを一つ割り当てる
-kernel ゲストカーネルを指定。イメージの外、ホストOS上に置くことができる
-append カーネルに与えるオプションを指定-drive file= イメージファイルの指定。if=virtioオプションによりパラヴァーチャルなブロックデバイスとして見せる
-net nic,vlan=0,macaddr= ,model=virtio
NICを作成しvlan=0に接続する。model=virtioオプションによりパラバーチャルなNICに見せる。
-net tap,vlan=0,script=/kvm/etc/qemu-ifup,ifname=hoge
ホストにtapデバイスhogeを作成しvlan=0に接続する。そしてスクリプト/kvm/etc/qemu-ifupを実行する。
-serial unix:/tmp/con.sock,server,nowait
シリアルポートをUNIXドメインソケット/tmp/con.sockにリダイレクトする。
-monitor unix:/tmp/mon.sock,server,nowait
QemuのモニターをUNIXドメインソケット/tmp/mon.sockにリダイレクトする。
#!/bin/shタップデバイスhogeがブリッジkbr0に接続されている。
/sbin/ip link set dev $1 up promisc off
/usr/sbin/brctl addif kbr0 $1
brctl show
bridge name bridge id STP enabled interfaces
kbr0 8000.0022190601e3 no eth0
hoge
socat -,icanon=0,echo=0 unix-connect:/tmp/mon.sock
QEMU 1.0,1 monitor - type 'help' for more information
(qemu)
socat -,icanon=0,echo=0 unix-connect:/tmp/con.sock
Debian GNU/Linux 6.0 (none) ttyS0
(none) login:
#!/bin/bash
tty_setting=`stty -g`
stty intr ^]
socat -,icanon=0,echo=0 unix-connect:/tmp/con.sock
stty $tty_setting