您的位置:首页 > 其它

制作半虚拟镜像以及常见问题解决

2012-05-31 21:32 260 查看
在编译安装Xen 3.2以后,我们需要Guest OS的内核和磁盘镜像。我们可以到网上下载已经做好的基础系统。当然,可以根据自己机器上安装的系统,创建Guest OS的磁盘镜像。例如创建一个8GB的磁盘镜像fc.img,作为Guest OS的硬盘。以下所有的操作都必须以root权限执行。

  首先创建8G的空白文件,采用seek的方式比count快。

dd if=/dev/zero of=fc.img bs=1M seek=8192 count=1

格式化该文件(在该文件中创建文件系统)

mkfs -t ext3 fc.img

将该文件系统挂载到系统的某个目录下,例如/mnt/fc8。

mount -o loop fc.img /mnt/fc8

现在我们进入/mnt/fc8目录应该可以看到有个lost+found文件存在,表明成功创建了文件系统。

  另外,看你是否挂载成功还可以通过df -lh命令来查看,如果挂载成功,最下面一行会出现以你挂载的文件夹路径为首的一行信息。

  我们需要重点注意的是,一定要挂载上再进行下面的复制操作,不然会出现一些意想不到的问题。

  挂载上后将本机的一些目录和文件拷贝到磁盘镜像中。

cp -ax /{root,dev,var,etc,usr,bin,sbin,lib} /mnt/fc8

mkdir /mnt/fc8/{proc,sys,home,tmp}

  注意:我的机子是64位的fedora10,因此cp -ax /{root,dev,var,etc,usr,bin,sbin,lib,lib64} /mnt/fc8,这个lib64是很重要的,请大家注意。

修改与系统相关的配置文件,例如文件系统表(/etc/fstab),主机名(/etc/sysconfig/network),IP地址和MAC地址(/etc/sysconfig/network-scripts/ifcfg-eth0),这些最好都进行修改。

  注意:这里所说的文件系统表还有主机名等文件是在/mnt/fc8/下的,如/etc/fstab实际是指/mnt/fc8/etc/fstab含义其实很简单,就是修改我们创建的fc.img这套半虚拟话磁盘镜像系统内的系统表,主机名等,这里就不再赘述了。

  现将我的修改贴出来以供大家参考,我的修改全部是必须的修改,因为我之前这些有的没有修改,因此会爆出这样或那样的错误让人很困扰,后面的错误分析中我会具体说明是哪些未修改引起的错误。

  文件系统表(/etc/fstab)

  全部都注释掉,只留一行

  /dev/sda2 / ext3 defaults 1 1

  注:sda2这个要视情况而定。学长告诉我先要在终端中用fdisk -l这个命令,看看哪个在root那一行是*,然后就写成哪个,所以我本来写的是sda1,但是有问题,后来另一个学长告诉我恰恰相反,要用没有用过的,因此用了在fdisk -l里面没有出现的sda2,结果成功了,所以这个选择我希望大家最好还是试试看吧,有兴趣的尝试一下可以告诉我哦~

  补充:刚才我又试了一下,在一切的成功的基础上将sda2都改为sda1也没有问题,不知道是什么情况,希望知道的留言解释,呵呵。

  主机名(/etc/sysconfig/network)

  将主机名修改即可。

  IP和MAC地址(/etc/sysconfig/network-scripts/ifcfg-eth0)

  这个可以不修改,但是不修改则无法上网,至少我用的时候不修改是无法ping通本机的,建议大家修改

  

  更改系统级别(/etc/inittab)

  选择3 ***面方式

  更改系统安全(/etc/selinux/config)

  改Selinux=disabled selinux管理linux安全

  在这些命令执行之后,记住要取消挂载

  umount /mnt/fc8

  而且以后改动该镜像文件时,也记住一定要先挂载,然后才更改,更改完以后取消挂载。

  接下来是config文件的写法,大家知道我们要跑一个半虚拟镜像需要以下语句

  xend start //启动xend

  xm create -c XenUexample.cfg //使用配置文件创建一个半虚拟镜像的虚拟机

  

  XenUexample.cfg这个文件就是我们所需的config文件,我们可以将其放在任何的一个文件夹下,我放在了/home/evangelionyu下面,方便我使用。

  首先贴出我的cfg文件:

  kernel="/boot/vmlinuz-2.6.18.8-xen" //内核映像文件

name="XenUexample" //Dom名称

  memory=256 //分配给新建dom的内存大小

disk=['file:/home/evangelionyu/fc.img,sda2,w'] //指定新建Dom的磁盘设备

vcpus=2 //Dom的CPU数目

root="/dev/sda2 ro"

extra="xencons=tty"

vif=['mac=mac地址']

ip ="ip地址"

netmask ="子网掩码"

dns ="dns地址"

ramdisk="/boot/initrd-2.6.18.8-xen.img" //暂时不知道是干啥的。。希望大家补充。。

需要指出的是配置文件中的参数一定要和之前改过的文件系统表,以及ip,mac地址等一致,不然会出错。

  ip和mac地址那几行可以不要,但是创建成功了以后就相当于你创建了一个没有网卡的虚拟机,没法进行网络配置,比较悲剧。

  最后指出,创建的这个虚拟机是没有界面的,因此只有命令行。

  关于常见问题:

 1.如果遇到

  Mount failed for selinuxfs on /selinux: No such file or directory

Unable to load SELinux policy (No such file or directory). Halting now.

  请你更改系统安全(/etc/selinux/config)

  改Selinux=disabled selinux管理linux安全

 2.如果遇到

  启动控制台鼠标服务:O0o.oops(): [daemon/loadlut.c(77)]: is your kernel compiled with CONFIG_SELECTION on?

[失败]

[确定]rond:[确定]

正在启动 kerneloops:[确定]

[确定]td:[确定]

启动 Avahi 守护进程...[确定]

启动 cups:[确定]

启动 anacron:[确定]

  请你更改系统级别(/etc/inittab)

  选择3 ***面方式

 3.如果遇到

[67292.662769] TCP cubic registered

[67292.662866] NET: Registered protocol family 1

[67292.663475] Using IPI No-Shortcut mode

[67292.685096] xen-vbd: registered block device major 3

[67292.686185] blkfront: hda1: barriers enabled

[67292.705112] blkfront: hda2: barriers enabled

[67292.764661] netfront: device eth0 has copying receive path.

[67292.858770] XENBUS: Device with no driver: device/console/0

[67292.868502] Freeing unused kernel memory: 200k freed

[67295.891692] AppArmor: AppArmor initialized<5>audit(1206632734.886:2): type=1505 info="AppArmor initialized" pid=1089

[67295.983233] fuse init (API version 7.8)

[67296.059192] Failure registering capabilities with primary security module.

[67296.190239] thermal: Unknown symbol acpi_processor_set_thermal_limit

[67300.996194] kjournald starting. Commit interval 5 seconds

[67301.000855] EXT3-fs: mounted filesystem with ordered data mode.

解决方法

  在xm create -c 所使用的config文件中加入

extra = 'xencons=tty'

 4.如果还遇到问题,请您检查您的操作系统是否是64位的,如果是的话您在制作镜像时需要把lib64这个文件也考到制作的磁盘文件系统中(参见之前制作磁盘镜像的步骤)

5.如果遇到cp: preserving permissions for `filename': Operation not supported:

REASON:

cp和mv命令对于ACL的支持,mv命令保持ACL设置信息,cp命令在

使用-p,-a参数时保留ACL设置信息。但是如果从一个支持ACL的文件系统向

一个不支持ACL的文件系统移动或带ACL属性的拷贝,则会得到类似下面这样的错误提示。

设置了ACL的文件在ls -l时可以看到这样的情况,

-rw-rw----+ 1 allen chen 0 Jun 2 09:52 filename

有个加号在第一个列的末尾。

(pls refer to http://a3linux.blogspot.com/2005/09/linuxacl.html)

SOLUTION:

[root@FC6server ~]# umount /mnt/var

[root@FC6server ~]# mount /dev/vg/var /mnt/var -o rw,acl

[root@FC6server ~]# cp -a /var/* /mnt/var/

[root@FC6server ~]#   

 暂时总结了这么多,希望大家进行问题的补充以及解决方案的补充
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  系统 count