Gentoo安裝kvm橋接網路

來源:互聯網
上載者:User

本來最先是在 Gentoo 上實現 KVM 的,後來又在 Debian 上玩了玩:http://blog.csdn.net/cenziboy/article/details/6957890

後來覺得還是有必要再總結總結,只當是複習罷了,於是乎出現了此文。

一 安裝前準備

1. KVM需要硬體支援,並在BIOS中開啟CPU虛擬化功能

2. 配置 kernel 

kvm 模組

[*] Virtualization --->    --- Virtualization    <M> Kernel-based Virtual Machine (KVM) support    <M>   KVM for Intel processors support  #我是 intel CPU    < >   KVM for AMD processors support

3. TUN/TAP 模組,橋接網路要用到

Device Drivers --->    [*] Network device support --->            <M> Universal TUN/TAP device driver supportNetworking support --->    Networking options --->        <*> 802.1d Ethernet Bridging        <*> 802.1Q VLAN Support

4. 半虛擬化(可選,根據自己需求)

Processor type and features --->    [*] Paravirtualized guest support  --->            [*]   KVM paravirtualized clock                                                                 [*]   KVM Guest support                                                                         -*-   Enable paravirtualization code            [*]     Paravirtualization layer for spinlocks

編譯並安裝核心(模組)

# make# make install# make modules_install

二 安裝qemu 

kvm是核心模組,使用者無法直接使用。這裡就要藉助 qemu ( 也叫 kvm 的前段工具)來使用 kvm

1. 先看看 qemu-kvm :

# emerge -pv qemu-kvmThese are the packages that would be merged, in order:Calculating dependencies... done![ebuild   R    ] app-emulation/qemu-kvm-0.15.1-r1  USE="aio alsa jpeg ncurses png pulseaudio sdl ssl vhost-net -bluetooth -brltty -curl -debug (-esd) -fdt -hardened -nss -qemu-ifup (-rbd) -sasl -spice -threads -vde -xattr -xen" QEMU_SOFTMMU_TARGETS="x86_64 -arm -cris -i386 -m68k -microblaze -mips -mips64 -mips64el -mipsel -ppc -ppc64 -ppcemb -sh4 -sh4eb -sparc -sparc64" QEMU_USER_TARGETS="-alpha -arm -armeb -cris -i386 -m68k -microblaze -mips -mipsel -ppc -ppc64 -ppc64abi32 -sh4 -sh4eb -sparc -sparc32plus -sparc64 -x86_64" 0 kBTotal: 1 package (1 reinstall), Size of downloads: 0 kB 

當然,我的系統上已經安裝過了[ ebuild  R ]

2. 然後再改變USE、QEMU_SOFTMMU 和 QEMU_USER_TARGETS 變數看看(對照兩次參數與結果):

# USE="-jpeg -png" QEMU_SOFTMMU="i386" QEMU_USER_TARGETS="i386 x86_64" emerge -pv qemu-kvmThese are the packages that would be merged, in order:Calculating dependencies... done![ebuild   R    ] app-emulation/qemu-kvm-0.15.1-r1  USE="aio alsa ncurses pulseaudio sdl ssl vhost-net -bluetooth -brltty -curl -debug (-esd) -fdt -hardened -jpeg* -nss -png* -qemu-ifup (-rbd) -sasl -spice -threads -vde -xattr -xen" QEMU_SOFTMMU_TARGETS="x86_64 -arm -cris -i386 -m68k -microblaze -mips -mips64 -mips64el -mipsel -ppc -ppc64 -ppcemb -sh4 -sh4eb -sparc -sparc64" QEMU_USER_TARGETS="i386* x86_64* -alpha -arm -armeb -cris -m68k -microblaze -mips -mipsel -ppc -ppc64 -ppc64abi32 -sh4 -sh4eb -sparc -sparc32plus -sparc64" 0 kBTotal: 1 package (1 reinstall), Size of downloads: 0 kB

3. 當然,去掉 emerge 後面的 -pv 就可以安裝了。如下(根據自己需要來改變編譯條件 USE, QEMU_SOFTMMU 和 QEMU_USER_TARGETS ):

# emerge qemu-kvm  

三 開始

1. 為了讓普通使用者也能使用kvm ,添加使用者至 kvm 使用者組

# gpasswd -a <使用者名稱> kvm

2. 建立虛擬磁碟

qemu-img create -f qcow2 gentoo.img 10G

四  橋接網路

因為安裝某些系統( Gentoo )需要網路,所以就先配置好網路

1. 編輯 /etc/conf.d/net (此處只給出了 靜態IP 的方法,其他的本人沒做過)

# config_eth0="10.65.10.80/16"  #注釋掉之前的網路介面 eth0# routes_eth0="default via 10.65.255.254" #注釋掉之前的 網關config_eth0="null"bridge_br0="eth0"config_br0="10.65.10.80/16"   #原來 eth0 的地址brctl_br0="setfd 0 sethello 30 stp off"routes_br0="default via 10.65.255.254"

2. 安裝橋接網路工具:

net-misc/bridge-utils:  命令 brctl 要使用
sys-apps/usermode-utilities:  命令 tunctl 要使用

# emerge bridge-utils# emerge usermode-utilities

3. 建立 br0 ,並設定起開機啟動

# cd /etc/init.d# ln -s net.lo net.br0# rc-update add net.br0 default# rc-update del net.eth0    # 移除 eth0 開機啟動

4. 重啟網路

# rc-service net.br0 restart

看看網路可用不,如所示就可以了,否則就有問題了

# ifconfigbr0       Link encap:Ethernet  HWaddr 18:03:73:af:66:99            inet addr:10.65.10.80  Bcast:10.65.255.255  Mask:255.255.0.0          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:137 errors:0 dropped:44 overruns:0 frame:0          TX packets:53 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:0           RX bytes:17364 (16.9 KiB)  TX bytes:6562 (6.4 KiB)eth0      Link encap:Ethernet  HWaddr 18:03:73:af:66:99            UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1          RX packets:41495 errors:0 dropped:0 overruns:0 frame:0          TX packets:13952 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:15108839 (14.4 MiB)  TX bytes:2736817 (2.6 MiB)          Interrupt:20 Memory:7ea00000-7ea20000 lo        Link encap:Local Loopback            inet addr:127.0.0.1  Mask:255.0.0.0          UP LOOPBACK RUNNING  MTU:16436  Metric:1          RX packets:4 errors:0 dropped:0 overruns:0 frame:0          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:0           RX bytes:312 (312.0 B)  TX bytes:312 (312.0 B)

5. 配置橋接網路

# modprobe tun  
# tunctl  -u <使用者名稱>      #為某使用者(-u 參數可選)建立虛擬網卡tapX (X代表數字0,1,2…本文使用的是tap0)  
  
# brctl addif br0 tap0   #將上一步建立的 tapX 加入橋接器 br0  
# ifconfig tap0 promisc up    #啟用tapX 並設定為promisc 模式  

我的執行結果如下(nehc是使用者名稱):

nehc ~ # tunctl -u nehcSet 'tap0' persistent and owned by uid 1000nehc ~ # brctl addif br0 tap0nehc ~ # ifconfig tap0 promisc upnehc ~ # ifconfigbr0       Link encap:Ethernet  HWaddr 18:03:73:af:66:99            inet addr:10.65.10.80  Bcast:10.65.255.255  Mask:255.255.0.0          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:1295 errors:0 dropped:400 overruns:0 frame:0          TX packets:156 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:0           RX bytes:165002 (161.1 KiB)  TX bytes:85908 (83.8 KiB)eth0      Link encap:Ethernet  HWaddr 18:03:73:af:66:99            UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1          RX packets:42725 errors:0 dropped:0 overruns:0 frame:0          TX packets:14055 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:15291865 (14.5 MiB)  TX bytes:2816677 (2.6 MiB)          Interrupt:20 Memory:7ea00000-7ea20000 lo        Link encap:Local Loopback            inet addr:127.0.0.1  Mask:255.0.0.0          UP LOOPBACK RUNNING  MTU:16436  Metric:1          RX packets:4 errors:0 dropped:0 overruns:0 frame:0          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:0           RX bytes:312 (312.0 B)  TX bytes:312 (312.0 B)tap0      Link encap:Ethernet  HWaddr 62:65:15:b5:ad:25            UP BROADCAST PROMISC MULTICAST  MTU:1500  Metric:1          RX packets:0 errors:0 dropped:0 overruns:0 frame:0          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:500           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

五  安裝 Guest OS

1. 載入 kvm 模組

# modprobe kvm_intel

2. 安裝系統

$ kvm -net nic,macaddr=00:00:00:00:00:00 -net tap,ifname=tap0,script=no,downscript=no -hda gentoo.img -cdrom gentoo_amd64.iso -m 512 -boot d

六 啟動系統

系統已經安裝完畢,沒必要像上一步提供那麼多參數

$ kvm -net nic,macaddr=00:00:00:00:00:00 -net tap,ifname=tap0,script=no,downscript=no gentoo.img 

另外提供一種後台運行虛擬機器的方法:

$ kvm -net nic,macaddr=00:00:00:00:00:00 -net tap,ifname=tap0,script=no,downscript=no gentoo.img -vnc 0.0.0.0:0 -daemonize

啟動後Guest OS 在後台運行,Host OS 沒有 Guest OS 視窗彈出,適合運行在沒有圖形介面的系統(伺服器應該都是這麼乾的吧)。

這裡雖然提供了 -vnc 參數,但 Guest OS 並沒有安裝 vnc , 我還是習慣使用  ssh 遠端連線。 

我的執行結果:

nehc@nehc ~/vms/els $ uname -a                # Host OS 資訊Linux nehc 3.2.1-gentoo-r2 #2 SMP Tue Mar 13 20:08:39 CST 2012 x86_64 Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz GenuineIntel GNU/Linuxnehc@nehc ~/vms/els $ kvm -net nic,macaddr=00:00:00:00:00:00 -net tap,ifname=tap0,script=no,downscript=no els.vmdk -vnc 0.0.0.0:0 -daemonize  # 啟動Guest OS, 後台運行nehc@nehc ~/vms/els $ ssh root@10.65.30.38    # ssh 串連後台啟動並執行虛擬機器Password: Last login: Thu Mar 15 11:27:41 CST 2012 from 10.65.10.80 on pts/0xut ~ # uname -a       # 虛擬機器資訊Linux xut 3.2.1-gentoo-r2 #1 Wed Mar 14 10:08:14 CST 2012 i686 QEMU Virtual CPU version 0.15.1 GenuineIntel GNU/Linuxxut ~ # halt           # 關閉虛擬機器Broadcast message from root@xut (pts/0) (Thu Mar 15 11:31:48 2012):The system is going down for system halt NOW!xut ~ # 

附圖:

七  沒有了

參考自:http://en.gentoo-wiki.com/wiki/KVM 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.