4: 2013-05-18 (土) 21:21:49 iseki |
5: 2013-05-19 (日) 11:08:58 iseki |
| /sbin/ifconfig $1 down | | /sbin/ifconfig $1 down |
| - $1 には tap# が入る | | - $1 には tap# が入る |
| + | #br |
| + | **** Macアドレスが変化しても,ネットワークインターフェイスを見失わない方法 [#bb7bbfac] |
| + | - 最近のディストリビューションは NICのMacアドレスが変化すると,別のインターフェイスを作って対応させる.その結果,インターフェイスを見失う |
| + | - 対策 |
| + | -- /etc/udev/rules.d/70-persistent-net.rules を削除して,/dev/null にシンボリックリンクを張る.(起動時にワーニングがでる) |
| + | -- /etc/sysconfig/network-scripts/ifcfg-eth# の HWADDR を削除する. |
| #br | | #br |
| | | |
| **** 起動例 [#mb397d99] | | **** 起動例 [#mb397d99] |
| # /usr/libexec/qemu-kvm -hda /data/centos-base-1.img -m 1024 -k ja -vnc none -net nic,macaddr=52:54:00:12:34:00 -net tap,ifname=tap0,script=/etc/qemu-ifup | | # /usr/libexec/qemu-kvm -hda /data/centos-base-1.img -m 1024 -k ja -vnc none -net nic,macaddr=52:54:00:12:34:00 -net tap,ifname=tap0,script=/etc/qemu-ifup |
- | - macaddr は Guest OS のMACアドレスになる.設定し直すと /etc/udev/rules.d/70-persistent-net.rules で eth の名前が変わるので,合わせる必要がある.また /etc/sysconfig/network-scripts/ifcfg-eth# の HWADDR は削除した方が面倒くさくない. | + | - macaddr は Guest OS のMACアドレスになる.%%設定し直すと /etc/udev/rules.d/70-persistent-net.rules で eth の名前が変わるので,合わせる必要がある.また /etc/sysconfig/network-scripts/ifcfg-eth# の HWADDR は削除した方が面倒くさくない.%% (上記参照) |
| | | |
| - qemu-kvm オプション: http://opensuse-man-ja.berlios.de/opensuse-html/cha.qemu.running.html#cha.qemu.running.gen_opts | | - qemu-kvm オプション: http://opensuse-man-ja.berlios.de/opensuse-html/cha.qemu.running.html#cha.qemu.running.gen_opts |
| #br | | #br |
| + | **** 起動用スクリプト (kvm-start) [#v9cf6a20] |
| + | - kvm-start xxxx.img 512 |
| + | #!/bin/sh |
| + | # |
| + | |
| + | function get_interface_num() |
| + | { |
| + | TAPLST=`/sbin/ifconfig | grep '^tap[0-9]' | awk -F" " '{print $1}'` |
| + | NUM=0 |
| + | while [ $NUM -lt 100 ]; do |
| + | FLG=1 |
| + | for TAP in $TAPLST ; do |
| + | if [ "tap$NUM" = "$TAP" ]; then |
| + | FLG=0 |
| + | break |
| + | fi |
| + | done |
| + | if [ $FLG = 1 ]; then |
| + | echo $NUM |
| + | return 0 |
| + | fi |
| + | NUM=`expr $NUM + 1` |
| + | done |
| + | return 0 |
| + | } |
| + | |
| + | |
| + | if [ ! -f "$1" ]; then |
| + | echo "Not found image file $1 !!" |
| + | exit 1 |
| + | fi |
| + | |
| + | IFNUM=`get_interface_num` |
| + | if [ "$IFNUM" = "" ]; then |
| + | echo "Can not get Interface Number!!" |
| + | exit 1 |
| + | fi |
| + | |
| + | HWADDR=`/usr/local/bin/macgen.py` |
| + | if [ "$HWADDR" = "" ]; then |
| + | MACNUM=`printf "%02d" $IFNUM` |
| + | HWADDR="00:16:3e:00:00:$MACNUM" |
| + | fi |
| + | |
| + | MEM=$2 |
| + | if [ "$MEM" = "" ]; then |
| + | MEM=1024 |
| + | fi |
| + | |
| + | echo "macaddr = $HWADDR" |
| + | echo "interface = tap$IFNUM" |
| + | echo "vnc num = $IFNUM" |
| + | echo "memory = ${MEM}M" |
| + | echo "start qemu-kvm" |
| + | |
| + | /usr/libexec/qemu-kvm -hda $1 -m $MEM -k ja -vnc :${IFNUM} -net nic,macaddr=$HWADDR -net tap,ifname=tap${IFNUM},script=/etc/qemu-ifup |
| + | **** MACアドレスの自動生成 by [[RedHat カスタマーポータル>https://access.redhat.com/site/documentation/ja-JP/Red_Hat_Enterprise_Linux/5/html/Virtualization/sect-Virtualization-Tips_and_tricks-Generating_a_new_unique_MAC_address.html]] [#wa7bbc0e] |
| + | - /usr/local/bin/macgen.py |
| + | #!/usr/bin/python |
| + | # macgen.py script to generate a MAC address for virtualized guests on Xen |
| + | # |
| + | import random |
| + | # |
| + | def randomMAC(): |
| + | mac = [ 0x00, 0x16, 0x3e, |
| + | random.randint(0x00, 0x7f), |
| + | random.randint(0x00, 0xff), |
| + | random.randint(0x00, 0xff) ] |
| + | return ':'.join(map(lambda x: "%02x" % x, mac)) |
| + | # |
| + | print randomMAC() |