git clone reference

git clone linux是一个漫长的过程,所以建议采用reference的方式clone,如下:

1
git clone --reference ./linux-stable.git/.git/ https://github.com/penberg/linux-kvm.git

reference可以是之前clone好的一个本地目录。

tar exclude vcs

今天学会一招,tar命令的参数--exclude-vcs,这个很好用,可以方便的排除常见的版本库目录!

比如:

1
tar -cf source.tar --exclude-vcs ./source

vim rst table plugin

安装vim-bridge

1
sudo pip install vim_bridge

安装vim rst table plugin

利用 bundle安装:

1
Bundle 'fire3/vim_rst_tables.vim'

然后在vim中运行命令

1
:BundleInstall

配置rst表格插件

.vimrc中增加:

1
2
3
4
5
6
7
" Add mappings, unless the user didn't want this.
" The default mapping is registered, unless the user remapped it already.
if !exists("no_plugin_maps") && !exists("no_rst_table_maps")
if !hasmapto('ReformatTable(')
noremap <silent> ,,c :call ReformatTable()<CR>
endif
endif

使用范例

1
2
中文 测试
中英文abc 测试ab

在上面任意位置按下 ,,c 即可出现:

1
2
3
4
5
6
+------------+---------+
| 中文 | 测试 |
+============+=========+
| 中英文abc | 测试ab |
+------------+---------+

段页结合的内存管理设计

序言

默认情况下,Linux操作系统是按照页面来管理内存使用的。当用户申请内存时,并不会真正的分配内存,而是根据“Page Fault”来触发异常,进而按照情况分配内存。用户的虚地址连续,而真实使用的物理地址不一定连续,通过“TLB”来进行虚实地址的映射。但在某些情况下,为了一些设备或特殊的计算部件需要,这些部件需要使用大块的连续物理内存,如果动辄数GB,默认的内存管理就不能满足需要了。一般情况下,在系统运行一段时间后,均不能保证可以正常申请到连续的大块物理内存。针对这类应用场景,最常见的做法是在开机阶段预留内存。但预留的内存没有灵活性,成为了专用内存,不能给普通的用户程序使用,即便能够使用,也不能通过标准的接口申请,而是通过自定义的特殊接口申请。所以,在这种场景下,需要一种更加灵活的内存管理策略,将段式内存管理和页式内存管理结合起来。

more >>

kvm内核调试小记

换了一台Ubuntu 12.04的机器,很久以前一份实验用内核在新的机器kvm环境下无法启动了。内核没有任何打印输出,也没有panic,就是无信息,有些无所适从。
用bochs试了试,可以进入内核运行啊,很是奇怪。突然灵光一闪,会不会打开我这份内核的paravirt相关配置就好了呢?

more >>

折腾Hexo第一天

安装

务必按照官方网站说明来:

1
$ sudo npm install -g hexo-cli

如果运行了如下命令:

1
npm install -g hexo

在deploy时我遇到了报错。

解决方法:

1
2
sudo rm -f /usr/local/bin/hexo
sudo npm install -g hexo-cli

初始化配置:

1
2
3
hexo init blog
cd blog
sudo npm install

more >>