在CentOS上安装基于qemu的虚拟机

1. 从源码安装qemu和vde(Virtual Distributed Ethernet) Qemu的安装过程比较标准,编译vde时则需要有些小改动:

$ svn co https://vde.svn.sourceforge.net/svnroot/vde/trunk/vde-2 vde_svn
$ cd vde_svn
$ autoreconf -fi
$ ./configure --enable-experimental --prefix=./Your_Destination
$ make
$ sudo make install

在编译vde时,需要安装python-devel包并创建一个空的"stropts.h"文件才能通过编译:

$ yum install python-devel
$ touch /usr/include/stropts.h

2. 创建虚拟网络, 并使用slirpvde建立默认的dhcpd服务器:

$ vde_switch -s /tmp/switch
$ slirpvde -s /tmp/switch --dhcp
Starting slirpvde: virtual_host=10.0.2.2/24
                   DNS         =10.0.2.3
                   dhcp_start  =10.0.2.15
                   vde switch  =/tmp/switch

3. 创建qemu镜像并开始使用cdrom镜像安装系统:

$ qemu-img create -f qcow2 Windows.qcow2 16G
Formatting 'Windows.qcow2', fmt=qcow2 size=17179869184 encryption=off cluster_size=65536 lazy_refcounts=off 

# 使用创建的镜像安装系统 
$ qemu-system-i386 -net nic,macaddr=52:54:00:00:EE:17 -net \
vde,vlan=0,sock=/tmp/switch -m 765 -enable-kvm  -cdrom \
/path_to_your_iso.iso  -boot d \
/path_to_your_image/Windows.qcow2 -vga std -vnc :7

4. 在本机上,可以使用vncviewer来查看安装情况:

$ vncviewer Your_server_ip:7

5. 安装完毕后,启动创建好的虚拟机:

$ qemu-system-i386 -net nic,macaddr=52:54:00:00:EE:17 -net \
vde,vlan=0,sock=/tmp/switch -m 765 -enable-kvm  \
-hda /path_to_your_image/Windows.qcow2 -vga std -vnc :7

6. 指定物理网卡:

model=? ,rtl8139可以被Windows自动驱动
qemu-system-i386 -net nic,model=rtl8139,macaddr=52:54:00:00:EE:17 -net vde,sock=/tmp/switch -m 765 -enable-kvm -hda ./virt/Windows/Windows.qcow2 -vga std -vnc :7

MarkdownSyntax

1. 自动编号的问题:

Markdown里的自动编号只适用于块(block)中的自动编号,也就是说,在使用了例如Solarized格式化代码块以后,全局中的自动编号不再起作用。 正常的自动编号, 不会有问题, 前标号分别为1/2/3:

1. item 1
2. item 2 
3. item 3

加入代码块后的情形: item 1/item 2/item 3都将以1. item开头, 前标号变成1/1/1:

1. item 1
// code blocks
2. item 2 
// code blocks
3. item 3

解决方法:使用Markdown转义字符, 在.前加\

1\. item 1
2\. item 2 
3\. item 3

2. Solarized高亮代码的两种用法:

把代码放在如下块中: {% raw %}

	//Your code here!
	
或者

```
//Your code here!
```

{% endraw %}

代码高亮方法

a. 指定codeblock参数: {% raw %} #include <stdio.h> int main(void) { printf("Hello World!\n"); return 0; } {% endraw %}

结果:

#include <stdio.h>
int main(void)
{
	printf("Hello World!\n");
	return 0;
}

b. 指定多行代码参数:

标题"Discover if a number is prime”, 链接地址"http://…", 链接名称"Source Article”. {% raw %}

	class Fixnum
	  def prime?
	    ('1' * self) !~ /^1?$|^(11+?)\1+$/
	  end
	end
	

{% endraw %}

class Fixnum
  def prime?
    ('1' * self) !~ /^1?$|^(11+?)\1+$/
  end
end

3. Syntax Highlight 在 ArchLinux 上的问题:

因为ArchLinux默认的python版本是3, 导致pygments不能正确解析源文件,编辑: vim ~/.rvm/gems/ruby-1.9.3-p448/gems/pygments.rb-0.3.4/lib/pygments/mentos.py 第一行 /usr/bin/env python –> /usr/bin/env python2

用github管理octopress源码

1. 新建或改变某个已存在的源码仓库名为"debian_octopress”,以后可以用“https://github.com/kkkttt/debian_octopress.git”来访问此仓库。

2. 配置Git:

$ git init
$ git add README.md	# 这个文件中可以添些项目的描述文字
$ git commit -m "First Commit"
# 配置git的本地用户名和email
$ git config --global user.email "kkkttt@gmail.com"
$ git config --global user.name "Trusty"
# 将文件夹里所有内容加入到git中并提交
$ git add .
$ git commit -m "First Sourcecode Commit"
# 同步到github
$ git remote add origin https://github.com/kkkttt/debian_octopress.git
$ git push -u origin master --force

3. 删除本地文件夹并同步到Github的方法:

$ git rm -rf public.back
$ git commit -m "remove backup directory"
$ git push origin master

4. 将本地修改同步到Github:

$ git commit -m "do some changes"

这时候会列出本地修改过的内容,运行:

$ git commit -a

修改需要提交的修改后运行下列命令后同步到Github:

$ git push origin master