
utuntu17以后,/etc/network/interfaces失效,由netplan代管。但是我也试过netplan,我还是用不来。最好时直接用ip命令或者nmcli命令,免得麻烦。
以下以下是我总结的两个方法。步骤都差不多。方法1使用了老命令,方法2使用了新命令。
ubuntu下如何安装tap虚拟网络设备: https://www.jianshu.com/p/b1d315ea002e
为qemu虚拟机添加桥接网络和路由
在虚拟机的/etc/network/interfaces里面进行配置
重启虚拟机网络
实验:使用ip命令创建网桥,并调通网络
实验目的:ifconfig和tunctl等命令已经或者即将被淘汰,我必须找到官方公布的替代者,以保证以后还能使用这些命令写成的脚本。
添加网卡到网桥,网桥的状态必须时打开
注:两个从属网卡开启混杂模式,目的是让两个从属网卡可以通信。
在虚拟机的/etc/network/interfaces里面进行配置
1.ip命令能够替代ifconfig进行设置,并且能够替代tunctl和brctl进行工作。是一个十分强大的命令
2.网桥是一种特殊的连接。虽不不能明确个中缘由,但是从其拥有两张网卡可以窥知一二,同时命令nmcli和ip都把他归为连接,从这点也可以映证。
RedflagWorkstation下已经带了QEMU#QEMU-imgcreatewindows.img2G#这个就是创建虚拟机磁盘,2G大小
#QEMU-hdawindows.img-cdrom/dev/acd0-bootd-m512-enable-audio-localtime
-hda是指定硬盘
-cdrom指定使用光驱,这个参数后面必须要跟个文件名,可以是物理光驱/dev/hda,可以使用ISO文件,为文件的路径
-m是指定虚拟机使用的内存大小,如512M
-boot指定虚拟机启动用的设备,-boot后可以选择的参数是a,c,d.其中a是指从软盘启动,c就是用硬盘启动,d是光驱启动。
-enable-audio
-localtime使用实际主板bios上的时间。
应该可以顺利的进入虚拟机了,并开始安装了。
RedflagWorkstation下已经带了QEMU
#QEMU-imgcreatewindows.img2G#这个就是创建虚拟机磁盘,2G大小
#QEMU-hdawindows.img-cdrom/dev/acd0-bootd-m512-enable-audio-localtime
-hda是指定硬盘
-cdrom指定使用光驱,这个参数后面必须要跟个文件名,可以是物理光驱/dev/hda,可以使用ISO文件,为文件的路径
-m是指定虚拟机使用的内存大小,如512M
-boot指定虚拟机启动用的设备,-boot后可以选择的参数是a,c,d.其中a是指从软盘启动,c就是用硬盘启动,d当然就是光驱启动了。
-enable-audio
-localtime使用实际主板bios上的时间。
应该可以顺利的进入虚拟机了,并开始安装了。
安装过程中,要求换盘:在QEMU中按ctrl alt 2切换到QEMUmonitor模式输入?或help可以查看可用命令及使用说明。(在其他版本的QEMU中,运行QEMU加载OS后,这个shell就会自动变成QEMUmonitor模式)
changedevicefilename—changearemovablemedia
如changecdrom/tmp/xp1.iso
常用的快捷键:
ctrl alt F全屏切换
ctrl alt鼠标在虚拟机和主机间切换
虚拟机上网设置两种方式:
1.usermodenetwork:
这种方式实现虚拟机上网很简单,类似vmware里的nat,QEMU启动时加入-user-net参数,虚拟机里使用dhcp方式,即可与互联网通信,但是这种方式虚拟机与主机的通信不方便。
2.tap/tunnetwork:
这种方式要比usermode复杂一些,但是设置好后虚拟机互联网虚拟机主机通信都很容易
这种方式设置上类似vmware的host-only,QEMU使用tun/tap设备在主机上增加一块虚拟网络设备(tun0),然后就可以象真实网卡一样配置它.
dora 5 下的qemu安装使用qemu是最近出现的一种新的虚拟机,本身小巧的系 统和linux的加速,使它一经面世就受到了热烈的欢迎,国内也有不少用户,但没有一篇完整的文章介 绍,使许多人走了不少弯路,其实,安装是比较简单的,较为复杂的部分是在网络部分,下面,就以 Fedora 5加kernel 2.6.17.4做为主机详细介绍qemu的安装和使用
一.安装
下载
qemu最新版是0.81,同时下载加速kmenu,最新版是1.3
http://fabrice.bellard.free.fr/qemu/download.html
先安装Kqemu
$ tar zxvf kqemu-1.3.0pre9.tar.gz
$ cd kqemu-1.3.0pre9
$ su root
# ./configure
# make
# make install
然后安装qemu
# tar zxvf qemu-0.8.1.tar.gz
# cd qemu-0.8.1
#./configure --prefix=/usr/local --enable-kqemu --enable-user --enable-alsa --disable-gcc-check
说明:
--enable-user 可以允许系统下的所有用户使用Qemu
--enable-alas 可以允许系统共享系统的声音系统
--disable-gcc-check 因为wqemu默认是使用gcc3.2,我的系统gcc已经升级到了4.1,所有禁止了qemu对gcc的检查
#make
#make install
经过以上的 *** 作,加速和qemu都已经安装完成了。
二.创建新的img
用户可以将img文件创建到任意位置,只要有足够的空间就行。
# mkdir win2kp
# cd win2k
# qemu-img create win2k.img 2G
Formating 'win2k.img', fmt=raw, size=2097152 kB
2G是指定虚拟机的硬盘大小的
三.网络的设置
国 内的很多人都讲加参数就如何可以使用网络,但实际远没那么简单,我就是一开始看了网络上某人的贴子,结果是反反复复,网络一直不能正常工作,后来从 qemu的网站上下了所有的doc才搞定(比如有人发的贴都是使用-user-net就可以上网了,不但把语法写错了,而且只有这个参数根本就上不了 网!),在此我只说最复杂的部分,就是主机<->虚拟机<->internet全通的模式。
这种方式是使用tun/tap模式,必须崾内核的支持,主机上会增加一块虚拟网络设备(tun0),然后就可以象真实网卡一样配置它.
首先查看你的内核是否支持tun设备:
#ls -l /lib/modules/2.6.17.4/kernel/drivers/net/tun.ko
如果存在,则执行下面的命令,否则重新编译模块。
#modprobe tun
这时检查modules:
#lsmod |grep tun
tun 10240 1
tun 加载成功以后,要手工编辑一个shell.而且必须放在/etc下,文件名必须是qemu-ifup.最后要记得给脚本加上执行权限,如果要允许系 统下的所有用户使用,还必须更改脚本的权限,并在脚本中的命令前加上sudo,下面是是个完整的,给所有用户使用的脚本。
#vi /etc/qemu-ifup :
#!/bin/sh
sudo /sbin/ifconfig $1 192.168.10.1
sudo route add -host 192.168.10.100 dev $1
sudo echo 1 >/proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
#chmod a+x /etc/qemu-ifup
四.安装虚拟系统
虚拟机的启动有很多选项,下面我就以我安装好的win2k来说明
如果要使用shm,必须进行以下的 *** 作
# umount /dev/shm
# mount -t tmpfs -o size=528m none /dev/shm
别忘了启动加速
#modprobe kqemu
shm的容量必须比你将要分配给虚拟机的内存大16m,否则无法使用,上面是准备给虚拟机512m的内存,所以,shm被设置成了528,如果你只给虚拟机256m的内存,上面的size应该是272.
好了,下面准备开始给上面创建的win2k.img装入系统
# qemu -hda /usr/local/win2k/win2k.img -cdrom /dev/hdc -boot d -m 512 -win2k-hack
对于win2k的安装必须指定-win2k-hack参数,否则安装会中途出错退出,这个参数只需要在安装的时候使用,在运行的时候是不需要的。
-hda是指定将要使用的image文件,也就是windows的C盘
-cdrom 是准备给cdrom的驱动器,也就是windows的D盘,有人说这个参数是-cdrom /dev/cdrom,是指定你的主机的cdrom的位置,这是一个天大的错误,这里指的是启动后的虚拟机,和主机的cdrom在哪里没关系,当然,你的 系统必须有cdrom,如果没有cdrom,我想在linux下虚拟mount一个还是很容易的。
-boot d ,就是指定系统从D启动,各上面一项相关的
-m 512,指定分配组虚拟机的内存
如果一切顺利,安装完成以后,你就可以启动系统了
五.启动虚拟机
首先,按前面的介绍,加载好加速和tun的模块,如果前面已经加载了,这里就不再需要了,只在主机重启了以后需要,如果经常使用虚拟机,也可以将它们直接添加进/etc/rc.d/rc.local让系统自动加载。
#modprobe kqemu
#modprobe tun
#qemu -hda /usr/local/win2k/win2k.img -cdrom /dev/hdc -hdb fat:/home/seabird/work -m 512 -localtime -net nic -net tun
参数:
-hdb fat:/home/seabird/work
这是一个非常有用的参数,它的意思是把主机的/home/seabird/work目录直接以fat的格式加载到虚拟机,当然,它是只读的
-localtime,指定虚拟机使用当前的系统时间
-net nic -net tun
这两个参数必须同时使用,否则,你还是上不了网,它的意思是启动虚拟机的网卡同时和主机以及internet通讯,只有这个参数加载的时候,系统才会去读取/etc/qemu-ifup文件,其它的模式是不会读取这个文件的。
启 动完成以后,将win2k的网卡地址指定为192.168.10.100,网关设为1921.68.10.1还记得/etc/qemu- ifup文件吗,这个文件中的地址和你的虚拟机的地址是相关的,并不像有些人说的你可以像主机一样随便指定地址去上网,它是把主机作为一个NAT设备来使 用的。当然,你别忘记指定一个虚拟机可以到达的DNS服务器
六.后记
1.指定虚拟机的网络地址的时候。千万别指一个和你的主机相同网段的,那样,你是不可能上网的。
2.可以去安装98,但到目前的最新版为止,winxp在大多情况下安装是不成功的,这个在qemu的网站上说的很清楚,只有等以后的版本了,所以,你看到的安装winxp的贴子是没有实践的,我在三台配置不同的机器上安装都以失败告终了。
3.win2k运行的时候,如果用它自己的关机是关不掉虚拟机的,原因是不支持电源管理, 教你一个方法,使用win2k的安装/卸载硬件,一步步往下走, 在windows搜索完硬件后出现的对话窗中选择添加新硬件(白痴的windows,我竟然不能让它跳过搜索), ->下一步,选择“否,我想从列表选择硬件”->下一步->NT Apm/legacy支持->下一步,安装完成后你就可以正常关机了。
4.qemu还有一个最大的优点是可以启动你的硬盘上的双系统,如果现在就是双系统,你可以像下面一样直接启动:
#qemu -hda /dev/hda1 -m 512 -net nic -net tun
/hda1是你的另一个系统的硬盘分区,如果你是grub启动,这里就是你的grub所在的位置,等grub菜单出现后,选择想启动的系统就可以了(天啊,别选你现在正在运行的系统啊). Linux联盟收集整理
如果你的XXX卡没被内核支持,又怕自己编译的内核会造成系统损坏就可以试试这个方法喽 ^_^vmware三种网络连接上网设置:
1.bridge :
默认使用vmnet0
将虚拟机的ip设置与主机同网段未使用ip,其余与主机相同:
例如主机ip是10.70.54.31,设置虚拟机ip为10.70.54.22。netmask,broadcast,gateway,dns都与主机相同即可实现虚拟机<--->主机 虚拟机<---->互联网 通信。
2.nat :
默认使用vmnet8
将虚拟机设置成使用dhcp方式上网,windows下选择"自动获取ip",linux下开启dhcp服务即可
也可以手动设置:
ip设置与vmnet8同网段,gateway设置成vmnet8的gateway(/etc/vmware/vmnet8/nat/nat.conf)中可以查到vmnet8的gateway,通常是xxx.xxx.xxx.2。
netmask,broadcast设置与vmnet8相同,dns设置与主机相同。
例如 vmnet8 ip:172.16.249.1 gw :172.16.249.2
虚拟机设置: ip :172.16.249.100 gw: 172.16.249.2
3.host-only :
默认使用vmnet1
将虚拟机ip设置与vmnet1同网段,gateway设置成vmnet1的ip,其余设置与vmnet1相同,dns设置与主机相同
例如 vmnet1 ip :172.16.245.1
虚拟机设置: ip :172.16.245.100 gateway :172.16.245.1
这样就实现了虚拟机<--->主机 通信,但是 虚拟机<--->互联网 仍无法通信
虚拟机与互联网通信:
1.开启主机路由功能
2.设定iptables,使主机成为一台nat server
1. echo 1 >/proc/sys/net/ipv4/ip_forward 这样就主机就具有了路由功能
2. iptables -t nat -A POSTROUTING -o eth0 -s 172.16.245.0/24 -j MASQUERADE
这条规则意思是将来自172.16.245.0/24封包的来源ip伪装成eth0的ip,实现虚拟机与互联网通信
如果网络接口是ppp+或pppoe则需要修改成-o pppoe
当然-s 172.16.245.0/24 也要根据实际情况修改
qemu两种上网方式:
user mode network :
这种方式实现虚拟机上网很简单,类似vmware里的nat,qemu启动时加入-user-net参数,虚拟机里使用dhcp方式,即可与互联网通信,但是这种方式虚拟机与主机的通信不方便。
tap/tun network :
这种方式要比user mode复杂一些,但是设置好后 虚拟机<-->互联网 虚拟机<-->主机 通信都很容易
这种方式设置上类似vmware的host-only,qemu使用tun/tap设备在主机上增加一块虚拟网络设备(tun0),然后就可以象真实网卡一样配置它.
首先内核中支持tap/tuns设备:
Device Drivers --->
Networking support --->
[M] Universal TUN/TAP device driver support
如果当前内核没有支持,可以重新只编译相应模块加入,方法很简单:
将当前内核配置文件cp到内核源码目录下:
[root@LFS ~]#cp /boot/config-[kernel-version] /usr/src/linux
[root@LFS ~]#cd /usr/src/linux
配置内核,将TUN/TAP选择模块(M),如上所示:
[root@LFS ~]#make menuconfig
重新只编译模块(M),不编译核心(*)支持的东东:
[root@LFS ~]#make modules
编译好后在/usr/src/linux/drivers/net下可以找到tun.ko:
[root@LFS net]#ls -l /usr/src/linux/drivers/net/tun.ko
-rw-r--r-- 1 root root 11116 Mar 23 20:29 /usr/src/linux/drivers/net/tun.ko
[root@LFS net]#
将它cp到当前内核的模块目录的相应位置:
[root@LFS net]#cp /usr/src/linux/drivers/net/tun.ko /lib/modules/`uname -r`/kernel/drivers/net
重新建立模块依赖关系:
[root@LFS net]#depmod
现在就可以加载它了 :
[root@LFS net]#modprobe tun
检查一下:
[root@LFS net]#lsmod |grep tun
tun 8704 0
[root@LFS net]#
OK. 成功不重新编译整个内核加入特殊模块支持
如果你的xx卡不被内核支持,又可以编译成模块,自己怕重新编译内核后出问题就可以用这个办法只编译自己需要的模块,然后手动安装到相应位置,再加载它。
这样编译速度要也比编译整个内核快,不会对系统有任何损害,就可以使用上XX卡喽。^_^
要注意三点:
1.内核源码必须与当前内核版本完全一致,否则编译出的模块是不能用的。
2.注意只make modules(编译模块),没有make modules_install(自动安装模块到/lib/modules下)
3.加载新编译的模块前必须先运行depmod,否则modprobe找不到它
其实使用当前内核配置文件(/boot/config-[kernel-version]),只加入自己需要的模块,不做任何其他改,make modules_install应该也不会有问题的。
不过最稳妥的办法还是手动安装它,控制权在自己手里更踏实嘛 :-)
OK,转回qemu上网问题
如果使用udev管理设备(通常2.6.x内核的发行版都已经使用udev),当modprobe tun后就会自动建立/dev/net目录,并创建出tun设备,做好相关链接:
[root@LFS net]#ls -l /dev/net/tun
lrwxrwxrwx 1 root root 6 Mar 25 15:35 /dev/net/tun ->../tun
[root@LFS net]#
如果很不幸,你没看到它,就需要自己手动做这些工作了
[root@LFS ~]#mkdir /dev/net
[root@LFS ~]#mknod /dev/net/tun c 10 200
OK,相关设备已经准备好了,还需要一个tun/tap的初始化脚本 :
/etc/qemu-ifup :
#!/bin/sh
/sbin/ifconfig $1 172.20.0.1
再给予qemu-ifup x执行权限放在/etc下就可以了。
这个脚本只能root用户执行,如果需要普通用户使用qemu,就需要改成sudo /sbin/ifconfig .....再设置sudo相关权限。
启动qemu后,它会在主机上增加一块虚拟网络设备(tun0):
[root@LFS ~]#ifconfig tun0
tun0 Link encap:Ethernet HWaddr 0A3:8A:5D:97:CD
inet addr:172.20.0.1 Bcast:172.20.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING 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)
[root@LFS ~]#
现在就可以启动qemu配置虚拟机网络参数了,和vmware host-only一样:
ip与tun0相同网段,gateway为tun0 ip 其余参数与tun0相同,dns与主机相同:
tun0 : ip :172.20.0.1 broadcast:172.20.255.255 netmask :255.255.0.0
qemu : ip :172.20.0.100 broadcast:172.20.255.255 netmask :255.255.0.0 gateway:172.20.0.1
与host-only一样,这样只实现了虚拟机<---->主机间通信,还需要设置router,nat才可以连上互联网
[root@LFS ~]#echo 1 >/proc/sys/net/ipv4/ip_forward
[root@LFS ~]#iptables -t nat -A POSTROUTING -o eth0 -s 172.20.0.0/24 -j MASQUERADE
[root@LFS ~]#
OK,虚拟机<--->主机 虚拟机<---->互联网通信 都完成啦
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)