在ubuntu/Xen中启动现有的windows

是这样的,我机器上本来装了一个windowsXP,但是我不喜欢,于是就安装了ubuntu。(本来打算装 opensolaris, 但是没有光驱,在使用硬盘安装opensolaris 1/08的时候失败了)
但是有很多软件是必须在windows下运行的,并且还有很多网页是只有在ie下才能正常显示。
嗯,动手之前先做个自我介绍
分区情况:
三个主分区。
第一个主分区是windows的C盘,第二个是windows的扩展分区,然后下面是windows的d盘。第三个主分区是ubuntu.
C盘对应linux下的/dev/sda1,D盘对应/dev/sda5
CPU是Intel Core 2 E6550.
ubuntu用的是7.10 AMD 64,刚做完更新。然后安装了xen 3.1,Dom0是 Ubuntu 7.10, kernel 2.6.22-14-xen。xen是通过图形界面的“新立得”软件包管理器安装的。
没有采用amd 64的ubuntu作为dom0,因为没有启动起来。
安装xen然后重启。在grub中选择“Xen 3.1 / Ubuntu 7.10, kernel 2.6.22-14-xen”。进入后切换到root,开始想办法启动win。
首先,确定bios中是否打开了vmx的支持。
# xm dmesg |grep VM
VMX disabled by Feature Control MSR
我的主板默认是不打开的。
在bios中启用cpu的vt和vt-d后,得到的是这样的结果
# xm dmesg | grep VM
(XEN) HVM: VMX enabled
(XEN) VMX: MSR intercept bitmap enabled
然后对xend的配置做一点点小修改:
打开 /etc/xen/xend-config.sxp,
找到行“#(vnc-listen '127.0.0.1')”修改为
(vnc-listen '0.0.0.0')
这个不是必须的。如果只让它在127.0.0.1监听,要安全些,但是我,喜欢方便。反正是在内网嘛,无所谓。
修改完后要这样重启xen
#/etc/init.d/xend restart
每个DomU需要对应一个配置文件,我的配置文件如下:
kernel="/usr/lib/xen-ioemu-3.1/boot/hvmloader"
device_model='/usr/lib/xen-ioemu-3.1/bin/qemu-dm'
builder="hvm"
memory=512
name="winxp"
#vcpus=1
vif=['type=ioemu,bridge=xenbr0']
disk=['phy:/dev/sda,ioemu:hda,w','phy:/dev/sda5,ioemu:hdb,w']
cdrom ='/dev/hda'
vnc=1
vncviewer=1
#vncconsole=1
sdl=0
boot="c"
一行行来解释吧。
前两行不用说了,就是指定路径嘛。注意啊,不同的系统,hvmloader和qemu-dm的路径不一样,所以,如果你的xen版本和我的不一样,或者你的OS版本和我不一样,那么这个可能是要修改的。
builder行不用改。
memory是指定分给它多少内存,单位是M。
vcpus是指分给它几个虚拟cpu。例如我有一个物理CPU,但是因为是双核,所以逻辑上是2个。所以可以分给它一个,也可以分给它两个。
name和vif字段是针对网络的。主要还是把网卡通过ioemu的方式在Dom0和DomU之间分享。这个基本不用改。
disk字段比较复杂。xen有个核心概念叫做虚拟块设备(VBD,virtual block device),就像硬盘的逻辑分区一样,为操作系统的提供存储。
可以将一个单独的物理硬盘(/dev/sda*),或者linux的文件系统中的一个巨大的文件,或者LVM卷,作为VBD。disk字段的具体语法请见http://tx.downloads.xensource.com/downloads/docs/user/\#SECTION03300000000000000000
我这里是需要把windows的两个分区,/dev/sda和/dev/sda5,即windows的C盘和D盘,导出成hda、hdb供xen使用。
cdrom是指从哪个盘启动。即windows下的C盘。
boot字段可以有两种值,要么是c,代表从硬盘启动,要么是d,代表从cdrom启动。
配置文件写好后,就可以启动win了。
#xm create -c winxp
然后赶紧用vncviewer连上去看看。
事情是这样,我的只有一块硬盘,这个硬盘在linux被表示为/dev/sda,然后通过xen的ioemu模块,把这个虚拟成/dev/hda,然后从这里启动,然后启动grub,然后……如果不进行任何选择的话,10秒钟后就默认进入ubuntu了。所以一定要快。
嗯,我目前遇到的主要问题是,鼠标不听使唤。第一次启动的时候,鼠标不能动。windows提示说发现新的pci设备需要安装,然后重启,然后第二次,就好了,但是它移动起来很不方便。和ubuntu的xorg的鼠标的移动不同步。嗯,很奇怪。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥