from: http://www.embeddedlinux.org.cn/html/xinshourumen/200811/07-311.html