最近做的几件事情:
1. 研究gstreamer的使用。
http://blog.csdn.net/sakulafly/article/details/19398257
参考这个地方的blog,其也是根据gstreamer的官方教程进行的翻译(不过版本有点老)。
看完这个教程基本可以对gstreamer有个初步的使用有所了解。
2. 转接qemu的程序
在使用qemu的时候,发现一些过程需要在启动虚拟机的之前进行,于是使用C编写exec编写了转接程序。
后发现直接使用C编写转接程序会有后续执行过程修改等的麻烦,便在C中集成了python,执行过程使用python编写。(也考虑过用lua来编写过程,但是python毕竟更加熟悉)
C中,exec前并未使用fork生成子进程。对于qemu非启动虚拟机的参数,或者是参数过短的情况,直接exec qemu执行。
3. qemu snapshot的研究
http://dustymabe.com/2015/01/11/qemu-img-backing-files-a-poor-mans-snapshotrollback/
http://libvirt.org/formatdomain.html
libvirt目前不支持qemu的snapshot的全局启动参数和针对driver的snapshot,认为无需支持。该选项是qemu在/var/tmp下创建临时文件,并做为对启动中drive文件(base文件)的overlay,所有改动都写入临时文件,即并不对原虚拟机做改动。
http://www.virtclouds.com/129.html
qemu的虚拟机快照,可以分为内置磁盘快照,外置磁盘快照,内置系统还原点,外置系统还原点。
外置磁盘快照,通过新建一个drive文件,做为overlays,原先的drive文件做为backing file。新的改动,直接写入overlays。可以放弃改动,即还原。可以将改动提交到原backing file中。外置快照只可以在虚拟机关闭状态创建。
内置磁盘快照,即数据和快照保存在原qcow2文件中,虚拟机运行状态和关闭状态都可以创建。
内置系统还原点,为运行中的虚拟机创建,内存状态、设备状态和磁盘状态,所有信息都存储在同一个qcow2文件中。
外置系统还原点,虚拟机的磁盘状态保存到一个文件中,内存和设备的状态保存到另外一个新的文件中。
get_tmp_filename函数,qemu正是通过该函数,生成临时文件。