ubuntu14.04上使用virt-manager备忘录

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值