如何将让主机的系统“完整地克隆”在qemu中?

9 views
Skip to first unread message

Kermit Mei

unread,
Feb 3, 2010, 8:58:28 AM2/3/10
to Xiyou Linux, SZLUG
Dear all,

qemu可以直接跑kernel和initrd, 我想,有没有办法让主机的Linux系统,不
用通过重新在虚拟机中安装,就做为一个虚拟机跑起来。

kernel和initrd都比较简单,我直接指定从kernel加载,并指定相应的initrd
就可以运行了:
/usr/bin/qemu -kernel '/boot/vmlinuz-2.6.28-17-generic' -initrd
'/boot/initrd.img-2.6.28-17-generic' -boot c -m 256 -hda
'/home/kermit/qemu/image' -net nic,vlan=0 -net user,vlan=0 -localtime &
Could not open '/dev/kqemu' - QEMU acceleration layer not activated: No
such file or directory
qemu: loading initrd (0x740e50 bytes) at 0x0f8af000

这个能够跑到:

[ 5.604010] ...trying to set up timer as Virtual Wire IRQ ...
然后停下来,暂时还没有找到原因。

请问,如果内核可以加载到initrd,那么有没有什么办法,能够把主机上的文件系
统做到qemu可以识别的镜像磁盘文件里面,这样在虚拟机中再跑一个主机的克隆版本?

Thanks

B.R
Kermit

Jiahua Huang

unread,
Feb 3, 2010, 9:20:37 AM2/3/10
to sz...@googlegroups.com, Xiyou Linux
哪那么麻烦
qemu -snapshot /dev/sda 
就可以了,


2010/2/3 Kermit Mei <kermi...@gmail.com>

Kermit Mei

unread,
Feb 3, 2010, 9:40:13 AM2/3/10
to sz...@googlegroups.com, Xiyou Linux
Jiahua Huang wrote:
> 哪那么麻烦
> qemu -snapshot /dev/sda
> 就可以了,
>
起不来:
sudo qemu -snapshot /dev/sda

停留在:
[ 5.756010] .. MP-BIOS bug: 8254 timer not connected to IO-APIC


另外,我不仅仅想在本机运行这个“克隆”的系统,我还想把我的系统作为一个qemu
镜像,拿到别的机器上运行,来让所有人能够在qemu中使用我现在的系统。


Thanks
B.R
Kermit

Américo Wang

unread,
Feb 3, 2010, 9:45:08 AM2/3/10
to Kermit Mei, Xiyou Linux, SZLUG
On Wed, Feb 03, 2010 at 09:58:28PM +0800, Kermit Mei wrote:
>
> 请问,如果内核可以加载到initrd,那么有没有什么办法,能够把主机上的文件系
> 统做到qemu可以识别的镜像磁盘文件里面,这样在虚拟机中再跑一个主机的克隆版本?
>

dd if=/dev/sda of=/your/qemu/image.img bs=1M


--
Live like a child, think like the god.

Américo Wang

unread,
Feb 3, 2010, 10:03:36 AM2/3/10
to Kermit Mei, sz...@googlegroups.com, Xiyou Linux
On Wed, Feb 03, 2010 at 10:40:13PM +0800, Kermit Mei wrote:
> 另外,我不仅仅想在本机运行这个“克隆”的系统,我还想把我的系统作为一个qemu
> 镜像,拿到别的机器上运行,来让所有人能够在qemu中使用我现在的系统。

dd | gzip | nc

Fai Wong

unread,
Feb 3, 2010, 8:31:23 PM2/3/10
to sz...@googlegroups.com
再简单一点的方法,懂得用 Ghost 吧?
方法很简单,先弄一个硬盘映像,要够大的,再把 Ghost 的 ISO 或者软盘加到 VM,再把把整个 sda 也加进去。
用 Ghost ISO 开机,把 sda 整个倒进你弄的硬盘映像 就可以了,够直接吧。

Kermit Mei

unread,
Feb 4, 2010, 3:38:44 AM2/4/10
to Américo Wang, Xiyou Linux, SZLUG
Américo Wang wrote:
> On Wed, Feb 03, 2010 at 09:58:28PM +0800, Kermit Mei wrote:
>
>> 请问,如果内核可以加载到initrd,那么有没有什么办法,能够把主机上的文件系
>> 统做到qemu可以识别的镜像磁盘文件里面,这样在虚拟机中再跑一个主机的克隆版本?
>>
>>
>
> dd if=/dev/sda of=/your/qemu/image.img bs=1M
>
这个不行吧,我的文件系统已用空间只有2.2G,总硬盘是17G,结果生成的
image.img有15G之大。还不知道是不是因为没有空间才停下来的……

机械唯物主义 : linjunhalida

unread,
Feb 4, 2010, 3:59:47 AM2/4/10
to sz...@googlegroups.com
dd能够压缩吗?

2010/2/4 Kermit Mei <kermi...@gmail.com>:

机械唯物主义 : linjunhalida

unread,
Feb 4, 2010, 4:01:10 AM2/4/10
to sz...@googlegroups.com
我想可以dd到一个管道里面,然后管道另外一头接gzip。

2010/2/4 机械唯物主义 : linjunhalida <linjun...@gmail.com>:

Américo Wang

unread,
Feb 4, 2010, 4:07:53 AM2/4/10
to Kermit Mei, Xiyou Linux, SZLUG
2010/2/4 Kermit Mei <kermi...@gmail.com>:

这是个很常用的技巧。

我担心的唯一问题是,你的image本身是否在/dev/sdXX,为了避免这种问题
你最好把输出的image放到另一个分区/硬盘上。很明显你应该知道这个。

Kermit Mei

unread,
Feb 4, 2010, 4:36:28 AM2/4/10
to Américo Wang, Xiyou Linux, SZLUG
硬盘上出了只有/分区和swap分区,我用samba把一个机器挂在了/home/me/share目
录下,这样生成的image.img还是很大,现在已经将近10G了,还没有弄完……

难道/home/me/share下的内容也被生成进去了?

Thanks

Kermit Mei

unread,
Feb 4, 2010, 5:14:22 AM2/4/10
to linuxdev lyn, SZLUG, Xiyou Linux
linuxdev lyn wrote:
> Hi,
> �ҽ���������dd������������ʱ�򣬾� ��������Ӳ����Ŀ���̡�
>
>
>
> 2010/2/4 Kermit Mei <kermi...@gmail.com <mailto:kermi...@gmail.com>>

>
> Am��rico Wang wrote:
>
> 2010/2/4 Kermit Mei <kermi...@gmail.com
> <mailto:kermi...@gmail.com>>:

>
> Am��rico Wang wrote:
>
> On Wed, Feb 03, 2010 at 09:58:28PM +0800, Kermit Mei
> wrote:
>
>
> ���ʣ�����ں˿��Լ��ص�initrd����ô��û��ʲô��
> �����ܹ�������ϵ��ļ�ϵ
> ͳ��qemu����ʶ��ľ�������ļ����棬�����������
> ������һ�����Ŀ�¡�汾��
>
>
>
> dd if=/dev/sda of=/your/qemu/image.img bs=1M
>
>
> ����аɣ��ҵ��ļ�ϵͳ���ÿռ�ֻ��2.2G����Ӳ����17G����
> ����ɵ� image.img��15G֮�󡣻���֪���Dz�����Ϊû�пռ��
> ͣ��4�ġ���
>
>
>
> ���Ǹ�ܳ��õļ��ɡ�
>
> �ҵ��ĵ�Ψһ�����ǣ����image�����Ƿ���/dev/sdXX��Ϊ�˱�����������
> ����ð�����image�ŵ���һ�����/Ӳ���ϡ���������Ӧ��֪�����
>
> Ӳ���ϳ���ֻ��/�����swap��������samba��һ����������
> /home/me/shareĿ¼�£�������ɵ�image.img���Ǻܴ������Ѿ�����10G
> �ˣ���û��Ū�ꡭ��
>
> �ѵ�/home/me/share�µ�����Ҳ����ɽ�ȥ�ˣ�
>
> /home/me/share������ļ���Ȼ����/����ģ��϶��ᱻ���ƽ�ȥ�ˡ���������
> samba��Զ�̻�����������µ�Ӳ��4�ı��ա�
�����и�ط��Ҳ��Ǻ���⣺�����Dz�һ��USB�ƶ�Ӳ�̣�Ҳ�ǹ�����/media/disk
Ŀ¼���棬��Ȼsamba�����ƽ�ȥ�ˣ��ѵ� /media/disk�Ͳ�����

��ʹӲ�̱����ǿյģ�����ɵ�image�᲻��д�룬Ȼ���ٱ�dd��ȡ����д�룬��
������ѭ����ô�� ����Ǻ���⡭��


лл��
Kermit


Américo Wang

unread,
Feb 4, 2010, 10:20:45 AM2/4/10
to Kermit Mei, Américo Wang, Xiyou Linux, SZLUG

我不认为如此,读/dev/sdXX是从物理上进行读,而你挂载的smbfs/CIFS是软件上的,
也就是说物理上是不相关的。(我并没有看内核代码,只是感觉应该如此。)

Jiahua Huang

unread,
Feb 4, 2010, 7:49:28 PM2/4/10
to sz...@googlegroups.com
你挂到目录上的东西,不会反映在块设备上的。

2010/2/4 Kermit Mei <kermi...@gmail.com>
这里有个地方我不是很理解:即便是插一个USB移动硬盘,也是挂在在/media/disk
目录下面,既然samba被复制进去了,难道 /media/disk就不会吗?

即使硬盘本身是空的,但生成的image会不断写入,然后再被dd读取,再写入,这
不就死循环了么? 这个不是很理解……

Reply all
Reply to author
Forward
0 new messages