ubuntu14.04上使用virt-manager备忘录
虽然有8G内存,win7主机+ubuntu虚拟机编Android卡主。我自己的笔记本6G内存,主机一直用ubuntu, 都是linux近亲,编译android自然畅快。不过需要访问一些只能windows才能访问的资源,比如QQ,当然我现在也付费用wine+qq 国际版,不过感觉不是很完美;公司vpn只有win版客户端;另一个就是网银。当然双系统也可以,不过需要重启切换,并且win7不能读取ex
Q: 笔记本原先是win7,安装ubuntu占用了f,e盘,编译发现空间不够。
A:
D盘 ntfs
utime错误可以忽略,但是acp时chmod错误编译不过。
#创建66GB大小的文件
dd if=/dev/zero of=d66g.img bs=1073741824 count=66
mke2fs d66g.img
mkdir /mnt/d66g
mount -o loop,rw,exec d66g.img /mnt/d66g
虽然有8G内存,win7主机+ubuntu虚拟机编Android卡主。我自己的笔记本6G内存,主机一直用ubuntu, 都是linux近亲,编译android自然畅快。不过需要访问一些只能windows才能访问的资源,比如QQ,
当然我现在也付费用wine+qq 国际版,不过感觉不是很完美;公司vpn只有win版客户端;另一个就是网银。当然双系统也可以,不过需要重启切换,并且win7不能读取ext4分区,
那就让win7作为虚拟机好了。
几年前印象qemu/kvm是很慢的, 不过今非昔比了,直接使用vmx等技术,测评[1]显示kvm已经非常接近主机性能了。
使用备忘录
× win7共享主机目录: ubuntu14.04 nautinus 右键菜单已集成共享功能; win7访问时如果提示没有权限,需要chmod 777甚至setfacl。
× win7 里面激活需要把系统分区卷标改成B, 开始我设置为A不行;映射网络驱动器盘符竟然没有D <-- 实际上是光驱占用了。
× 全屏时显示模糊: virt-manager设置video qxl, display splice, win7里面装上[2]重启后生效, 并且需要把win7分辨率调成和主机一样,比如笔记本是1366x768(16:9)。
× win7 cpu只显示2个: CPU拓扑需要改成slot 1 core 2 thread 4才能在win7里面显示4个
x动态减少虚拟机占用的内存: virsh setmem win7 1024000 (单位KiB)。虚拟机win7任务管理器总内存2GB不变,但是占用内存立即增加了1GB, 这就是balloon设备占用的,可被主机使用,表现为主机系统监视器里面的空闲内存增加了。
文件夹共享问题 (ubuntu shared folder list)
====
nautilus 右键的共享虽然方便,但是却没有地方取消共享!这个需要命令行操作:
#!/bin/sh
shares=$(ls -l /var/lib/samba/usershares | awk '{print $9}')
for i in $shares
do
net usershare delete $i
done
并且如果在虚拟机win7 svn下载代码,在主机linux查看用户名是nogroup的,这样就给linux上编译带来问题。
既然nautilus的共享有问题,我们还是用传统的方式吧:
$ cat /etc/samba/smb.conf
[global]
netbios name = UBUN_LUDI
name resolve order = host wins bcast
workgroup = WORKGROUP
unix charset = UTF-8
dos charset = cp936
[disk_E]
path = /media/ludi/disk_E
public = yes
writable = yes
valid users = ludi
create mask = 0700
directory mask = 0700
force user = ludi
force group = ludi
available = yes
browseable = yes
sudo smbpasswd -a ludi
sudo testparm
sudo /etc/init.d/smbd restart
ubuntu无需重启即可在nautilus网络查看修改过的,win7需要重启,访问地址为\\UBUN_LUDI\disk_E或者\\server_ip\disk_E。
注意上面global下面的前两行是为了解决win7不能按名字访问, 第三行要和win7的一样。(最好大写?)
kvm: host and guest cant ping each other
====
虚拟机除了和主机通信外,还需和外部主机通信,这样需要设置网卡为bridge。这样之后,ping 外网没有问题,但是单单不能访问主机,包括ping,网络邻居等。
原因是eth0:macvtap把通向主机的过滤了。解决办法是把主机和虚拟机网卡连到网桥上[3]:
stop network-manager
echo "manual" | sudo tee /etc/init/network-manager.override
ifconfig eth0 down
$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet dhcp
# iface br0 inet static
# address 192.168.2.107
# netmask 255.255.255.0
# network 192.168.2.0
# broadcast 192.168.2.255
# gateway 192.168.2.1
bridge_ports eth0
# bridge_stp on
bridge_maxwait 0
bridge_fd 0
sudo /etc/init.d/networking restart
gvim /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
gvim /etc/rc.local
/sbin/sysctl -p /etc/sysctl.conf
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
exit 0
#verify
tail /proc/sys/net/bridge/*
iptables -L FORWARD
brctl show
#modify
ifdown bridge0
brctl delbr bridge0
这里面又涉及到gui工具和命令行工具的冲突问题,因此把network-manager需要先关闭。但是NetworkManager打开关闭wifi确实好用,怎么才兼顾呢?
用NetworkManager设置网桥
====
rm /etc/init/network-manager.override 让它开机自动启动
gvim /etc/network/interfaces
仅仅保留lo。
断开当前有线连接。
编辑连接-->添加-->桥接。
连接名称改成bridge0, 接口名称改成br0。
桥接连接-->添加-->以太网,名称改成br0_s1。
选择设备MAC地址,常规下面选择勾上自动链接。
其他参数默认,保存。
nmcli con list
sudo nmcli con up id br0_s1
No compatible disconnected device found for master connection
把“自动以太网”删掉,重启又自动出现了。搞了多遍仍然不行。
最终正解是:
gvim /etc/NetworkManager/NetworkManager.conf
managed=false
managed表示是否全部接管所有接口。
策略是interfaces里面管理lo,eth0,br0, 而把wlan0留给GUI管理。
重启后主机,虚拟机上网正常。现在打开主机无线, 上网正常,关掉主机不能上网,但是虚拟机可以。
原因,查看前后的route输出就明白了,原来默认ip走的是wlan0,关掉自然不行啦。
这个问题只需:
route add default gw 192.168.2.1 br0
为了避免重启后失效,可把这句加到/etc/rc.local里面。但是我发现好像没有生效,
尝试了在interfaces里面加入
up route add default gw $(cat /proc/net/route | awk '/^br0\s00000000/{x = strtonum("0x"$3); a = x%256; x = x/256; b = x%256; x = x/256; c = x%256; x = x/256; d = x%256; printf "%d.%d.%d.%d", a,b,c,d; }') br0
sudo ifdown br0 && sleep 5 && sudo ifup br0
提示重复,原来它会自动route del default 和route add default。
考虑过如何在wlan0 down时自动执行添加br0网关,鉴于目前由NM托管,搞不了。把上面的up route删掉,加上
up date > /tmp/tm_br0
算是留点纪念吧。
说明:down之后不能立即up,否则会up失败,故而有上面的sleep。
但是问题又来了,发现ping 外网网址可以,说明路由是好的,但是ping www.baidu.com不行,说明dns哪个地方有问题了。
由于上面的down /up要重新dhcp,耗时间,干脆这样子好了:每次关掉wifi后, br0-gw。
~/.bashrc中为
alias br0-gw="sudo route add default gw 192.168.2.1 br0"
搞了一圈后,又重新回到原点。
[1] http://www.phoronix.com/scan.php?page=article&item=ubuntu_1110_xenkvm&num=3
[2] http://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-0.74.exe
[3] http://wiki.libvirt.org/page/Networking#Forwarding_Incoming_Connections
更多推荐
所有评论(0)