<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>蒙卓&#38;博客 &#187; 折腾</title>
	<atom:link href="http://mengzhuo.org/blog/tag/%e6%8a%98%e8%85%be/feed" rel="self" type="application/rss+xml" />
	<link>http://mengzhuo.org/blog</link>
	<description>Just The Way It Was</description>
	<lastBuildDate>Fri, 27 Jan 2012 16:46:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>安装fakeshell最小化ssh用户权限</title>
		<link>http://mengzhuo.org/blog/%e5%ae%89%e8%a3%85fakeshell%e6%9c%80%e5%b0%8f%e5%8c%96ssh%e7%94%a8%e6%88%b7%e6%9d%83%e9%99%90.html</link>
		<comments>http://mengzhuo.org/blog/%e5%ae%89%e8%a3%85fakeshell%e6%9c%80%e5%b0%8f%e5%8c%96ssh%e7%94%a8%e6%88%b7%e6%9d%83%e9%99%90.html#comments</comments>
		<pubDate>Wed, 18 Jan 2012 16:08:11 +0000</pubDate>
		<dc:creator>mz</dc:creator>
				<category><![CDATA[阴]]></category>
		<category><![CDATA[雨]]></category>
		<category><![CDATA[Linux软件]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[折腾]]></category>
		<category><![CDATA[网站]]></category>

		<guid isPermaLink="false">http://mengzhuo.org/blog/?p=1444</guid>
		<description><![CDATA[因为新买的VPS跑网站（nginx+php-fastcgi）很吃力，可能是我配置得不好，配置邮件服务器我试了2次，都不行，所以干脆把新服务器改成了ssh代理站，至于用来干什么大家都很清楚哈。 但是Linux下新建的用户权限还是相当高，网上搜到的教程都是把shell指到/bin/false下的，文章连标点符号都一样，可见国内互联网环境有多差！抄就抄的吧，可我要是用这个方法链接刚开始就会自动退出了，所以，在github上找到个源码： github.com/xxlmira/fakeshell 完全符合我的要求，用户能登入，不需要其他动作，只需要添加即可。 这么方便？就看下面的教程吧。如果你知道什么是编译、用过make这种东西，下面的就不用看啦，哈哈。 安装fakeshell 因为是源码安装，所以肯定要有build-essential，然后下载上面的代码到自己的服务器上，并修改Makefile …… PROG= fakeshell SRCS= fakeshell.c BANNER= banner PREFIX= #原来是/usr/local 这里我喜欢用空值 PROVIDER= "mengzhuo.org" #改成你要的网站标题 ADMINS= "mengzhuo1203@gmail.com" #改成你要的管理员邮箱 CC= gcc …… 然后输入make &#038;&#038; make install即可，很容易吧。 配置用户 因为我只是想分发少量的帐号，毕竟这个服务器也不知道能撑到什么时候，所以就手动输入 useradd -s /bin/fakeshell test添加一个test用户 passwd test给test用户添加密码 到这里就好了，不敢相信吧~ 后记 登入后显示： Welcome to mengzhuo.org service on x200s! In case of any urgency, do not hesitate [...]]]></description>
			<content:encoded><![CDATA[<p>因为新买的VPS跑网站（nginx+php-fastcgi）很吃力，可能是我配置得不好，配置邮件服务器我试了2次，都不行，所以干脆把新服务器改成了ssh代理站，至于用来干什么大家都很清楚哈。<br />
但是Linux下新建的用户权限还是相当高，网上搜到的教程都是把shell指到/bin/false下的，文章连标点符号都一样，可见国内互联网环境有多差！抄就抄的吧，可我要是用这个方法链接刚开始就会自动退出了，所以，在github上找到个源码：<br />
<a href="https://github.com/xxlmira/fakeshell">github.com/xxlmira/fakeshell</a><br />
完全符合我的要求，用户能登入，不需要其他动作，只需要添加即可。<br />
这么方便？就看下面的教程吧。如果你知道什么是编译、用过make这种东西，下面的就不用看啦，哈哈。</p>
<h4>安装fakeshell</h4>
<p>因为是源码安装，所以肯定要有build-essential，然后下载上面的代码到自己的服务器上，并修改Makefile<br />
……</p>
<pre style="background:#F1F1F1">
PROG=		fakeshell
SRCS=		fakeshell.c
BANNER=		banner
PREFIX=		#原来是/usr/local 这里我喜欢用空值
PROVIDER=	"mengzhuo.org" #改成你要的网站标题
ADMINS=		"mengzhuo1203@gmail.com" #改成你要的管理员邮箱
CC=		gcc
</pre>
<p>……<span id="more-1444"></span><br />
然后输入<code>make &#038;&#038; make install</code>即可，很容易吧。</p>
<h4>配置用户</h4>
<p>因为我只是想分发少量的帐号，毕竟这个服务器也不知道能撑到什么时候，所以就手动输入<br />
<code>useradd -s /bin/fakeshell test</code>添加一个test用户<br />
<code>passwd test</code>给test用户添加密码</p>
<p>到这里就好了，不敢相信吧~</p>
<h4>后记</h4>
<p>登入后显示：</p>
<pre style="background:#F1F1F1">
Welcome to mengzhuo.org service on x200s!
In case of any urgency, do not hesitate to contact us at mengzhuo1203@gmail.com.
ls
What do you think I am, a shell?
^C
</pre>
<p>这个fakeshell确实很好，而且我还想给这个fakeshell加个uptime的功能，敬请期待<br />
<a href="https://github.com/mengzhuo/fakeshell">github.com/mengzhuo/fakeshell</a></p>
<blockquote><a title="安装fakeshell最小化ssh用户权限" href="http://mengzhuo.org/blog/%e5%ae%89%e8%a3%85fakeshell%e6%9c%80%e5%b0%8f%e5%8c%96ssh%e7%94%a8%e6%88%b7%e6%9d%83%e9%99%90.html">安装fakeshell最小化ssh用户权限</a> | <a title="蒙卓的博客，东西很杂" href="http://mengzhuo.org/blog/feed">订阅博客</a></blockquote><blockquote><small><a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh" title="保留权利声明">署名-非商业性使用-相同方式共享</a></small><blockquote>]]></content:encoded>
			<wfw:commentRss>http://mengzhuo.org/blog/%e5%ae%89%e8%a3%85fakeshell%e6%9c%80%e5%b0%8f%e5%8c%96ssh%e7%94%a8%e6%88%b7%e6%9d%83%e9%99%90.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>[HOWTO]网站开启缓存 加速用户载入</title>
		<link>http://mengzhuo.org/blog/howto%e5%bc%80%e5%90%af%e7%bc%93%e5%ad%98%e7%bd%91%e7%ab%99%e5%8a%a0%e9%80%9f%e7%94%a8%e6%88%b7%e8%bd%bd%e5%85%a5.html</link>
		<comments>http://mengzhuo.org/blog/howto%e5%bc%80%e5%90%af%e7%bc%93%e5%ad%98%e7%bd%91%e7%ab%99%e5%8a%a0%e9%80%9f%e7%94%a8%e6%88%b7%e8%bd%bd%e5%85%a5.html#comments</comments>
		<pubDate>Sun, 11 Dec 2011 14:36:09 +0000</pubDate>
		<dc:creator>mz</dc:creator>
				<category><![CDATA[晴]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[折腾]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://mengzhuo.org/blog/?p=1332</guid>
		<description><![CDATA[因为托管的服务器在美国，所以和国内的速度没有可比性，所以开启了缓存来加速各位的访问速度。火星人都不知道哈哈~ 本文针对的是Apache服务器，主要是修改一个叫.htaccess的文件。 要注意：htaccess是一层层地执行，所以最好修改的是网站根目录下面的.htaccess。 FireBug的测试结果 华丽地节省了98%的流量，独立博客们都知道这意味着什么哈，当然，只有再次访问网站的用户才能调用浏览器的缓存，所以有点老访客福利的感觉。 代码 #Cache IMG CSS Header set "Cache-Control" "max-age=2592000" #Super Cache for Jquery one year Header set "Cache-Control" "max-age=49881203" 代码解释 FilesMatch不用我说了吧，意思是：匹配文件。 重点是后面引号中的\.(flv&#124;gif&#124;jpe?g&#124;png&#124;ico&#124;swf&#124;css&#124;js&#124;bmp)$，这段表示让服务器缓存所有指定的扩展名的文件，比如常见的图片格式png、gif等。 而Cache-Control就是让浏览器控制缓存的时间，单位是秒。 可能你会奇怪，为什么后面还有jquery.*\.js$，其实是因为我网站上经常调用Jquery的JS库，但是我自己写的Js又要长期修改，不能设置得太长，所以让服务器去寻找所有：jquery开头的JS文件，并设置成577天的缓存。这样又不会干扰到我的js文件。 副作用 用户访问里以后，你更改了服务器上某个用户的缓存文件，浏览器不会一下子载入新的文件。 [HOWTO]网站开启缓存 加速用户载入 &#124; 订阅博客署名-非商业性使用-相同方式共享]]></description>
			<content:encoded><![CDATA[<blockquote><p>因为托管的服务器在美国，所以和国内的速度没有可比性，所以开启了缓存来加速各位的访问速度。火星人都不知道哈哈~</p></blockquote>
<p>本文针对的是<strong><a href="http://zh.wikipedia.org/zh/Apache">Apache服务器</a></strong>，主要是修改一个叫<code>.htaccess</code>的文件。<br />
要注意：htaccess是一层层地执行，所以最好修改的是网站根目录下面的.htaccess。</p>
<h3>FireBug的测试结果</h3>
<p><a href="http://mengzhuo.org/blog/wp-content/uploads/2011/12/timetesing.png"><img class="alignnone size-full wp-image-1343" title="timetesing" src="http://mengzhuo.org/blog/wp-content/uploads/2011/12/timetesing.png" alt="" width="365" height="105" /></a><br />
华丽地节省了98%的流量，独立博客们都知道这意味着什么哈，当然，只有再次访问网站的用户才能调用浏览器的缓存，所以有点老访客福利的感觉。</p>
<h3>代码</h3>
<pre><xmp>#Cache IMG CSS
<filesmatch "\.(flv|gif|jpe?g|png|ico|swf|css|js|bmp)$">
Header set "Cache-Control" "max-age=2592000"
</filesmatch>

#Super Cache for Jquery one year
<filesmatch "jquery.*\.js$">
Header set "Cache-Control" "max-age=49881203"
</filesmatch></xmp></pre>
<h3>代码解释</h3>
<p>FilesMatch不用我说了吧，意思是：匹配文件。<br />
重点是后面引号中的<code>\.(flv|gif|jpe?g|png|ico|swf|css|js|bmp)$</code>，这段表示让服务器缓存所有指定的扩展名的文件，比如常见的图片格式png、gif等。<br />
而Cache-Control就是让浏览器控制缓存的时间，单位是秒。<br />
可能你会奇怪，为什么后面还有<code>jquery.*\.js$</code>，其实是因为我网站上经常调用Jquery的JS库，但是我自己写的Js又要长期修改，不能设置得太长，所以让服务器去寻找所有：jquery开头的JS文件，并设置成577天的缓存。这样又不会干扰到我的js文件。</p>
<h4>副作用</h4>
<p>用户访问里以后，你更改了服务器上某个用户的缓存文件，浏览器不会一下子载入新的文件。</p>
<blockquote><a title="[HOWTO]网站开启缓存 加速用户载入" href="http://mengzhuo.org/blog/howto%e5%bc%80%e5%90%af%e7%bc%93%e5%ad%98%e7%bd%91%e7%ab%99%e5%8a%a0%e9%80%9f%e7%94%a8%e6%88%b7%e8%bd%bd%e5%85%a5.html">[HOWTO]网站开启缓存 加速用户载入</a> | <a title="蒙卓的博客，东西很杂" href="http://mengzhuo.org/blog/feed">订阅博客</a></blockquote><blockquote><small><a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh" title="保留权利声明">署名-非商业性使用-相同方式共享</a></small><blockquote>]]></content:encoded>
			<wfw:commentRss>http://mengzhuo.org/blog/howto%e5%bc%80%e5%90%af%e7%bc%93%e5%ad%98%e7%bd%91%e7%ab%99%e5%8a%a0%e9%80%9f%e7%94%a8%e6%88%b7%e8%bd%bd%e5%85%a5.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>折腾相册zenphoto主题</title>
		<link>http://mengzhuo.org/blog/%e6%8a%98%e8%85%be%e7%9b%b8%e5%86%8czenphoto%e4%b8%bb%e9%a2%98.html</link>
		<comments>http://mengzhuo.org/blog/%e6%8a%98%e8%85%be%e7%9b%b8%e5%86%8czenphoto%e4%b8%bb%e9%a2%98.html#comments</comments>
		<pubDate>Tue, 13 Sep 2011 13:56:32 +0000</pubDate>
		<dc:creator>mz</dc:creator>
				<category><![CDATA[晴]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[主题]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[折腾]]></category>
		<category><![CDATA[流水帐]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[网站]]></category>

		<guid isPermaLink="false">http://mengzhuo.org/blog/?p=1221</guid>
		<description><![CDATA[相册地址http://mengzhuo.org/album/ 某卓认为，中秋之夜是写代码的好时候，所以就开始改进相册的主题，改进开始后才发现zenphoto的结构真是让人觉得蛋疼，类极其难用，类似wordpress的结构却不伦不类。 比如，输出相册封面的函数叫printCustomAlbumThumbImage，够长吧，参数也够长的，有十个这么多，还都得NULL过去，这样也就算了，缩略图还给整个写死了高宽，找函数底层才发现，这帮娃竟然也写死了这些参数，还得自己重新调用，缩略图都是一样蛋疼。还好，他们的默认主题比较完善了，jQuery也默认加载，所以，放心调用啦。 动画方面，相当给力，自创了“随手丢”一般的照片特效（自己进相册里看效果吧），基本都是CSS3+jQuery实现的，所以各位IE8以下的孩子就没有眼福啦。 改进完了才发现&#8211;我这人讨厌照相……有个相册没有用！希望自己以后能多照点啊才是啊。 折腾相册zenphoto主题 &#124; 订阅博客署名-非商业性使用-相同方式共享]]></description>
			<content:encoded><![CDATA[<p><a href="http://mengzhuo.org/blog/wp-content/uploads/2011/09/aaa.png"><img class="size-large wp-image-1222 alignnone" title="aaa" src="http://mengzhuo.org/blog/wp-content/uploads/2011/09/aaa-610x344.png" alt="" width="610" height="344" /></a></p>
<p><a href="http://mengzhuo.org/album/">相册地址http://mengzhuo.org/album/</a></p>
<p>某卓认为，中秋之夜是写代码的好时候，所以就开始改进相册的主题，改进开始后才发现zenphoto的结构真是让人觉得蛋疼，类极其难用，类似wordpress的结构却不伦不类。</p>
<p>比如，输出相册封面的函数叫printCustomAlbumThumbImage，够长吧，参数也够长的，有十个这么多，还都得NULL过去，这样也就算了，缩略图还给整个写死了高宽，找函数底层才发现，这帮娃竟然也写死了这些参数，还得自己重新调用，缩略图都是一样蛋疼。还好，他们的默认主题比较完善了，jQuery也默认加载，所以，放心调用啦。</p>
<p>动画方面，相当给力，自创了“随手丢”一般的照片特效（自己进相册里看效果吧），基本都是CSS3+jQuery实现的，所以各位IE8以下的孩子就没有眼福啦。</p>
<p>改进完了才发现&#8211;我这人讨厌照相……有个相册没有用！希望自己以后能多照点啊才是啊。</p>
<blockquote><a title="折腾相册zenphoto主题" href="http://mengzhuo.org/blog/%e6%8a%98%e8%85%be%e7%9b%b8%e5%86%8czenphoto%e4%b8%bb%e9%a2%98.html">折腾相册zenphoto主题</a> | <a title="蒙卓的博客，东西很杂" href="http://mengzhuo.org/blog/feed">订阅博客</a></blockquote><blockquote><small><a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh" title="保留权利声明">署名-非商业性使用-相同方式共享</a></small><blockquote>]]></content:encoded>
			<wfw:commentRss>http://mengzhuo.org/blog/%e6%8a%98%e8%85%be%e7%9b%b8%e5%86%8czenphoto%e4%b8%bb%e9%a2%98.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>[python]豆瓣小组沙发机器人</title>
		<link>http://mengzhuo.org/blog/python%e8%b1%86%e7%93%a3%e5%b0%8f%e7%bb%84%e6%b2%99%e5%8f%91%e6%9c%ba%e5%99%a8%e4%ba%ba.html</link>
		<comments>http://mengzhuo.org/blog/python%e8%b1%86%e7%93%a3%e5%b0%8f%e7%bb%84%e6%b2%99%e5%8f%91%e6%9c%ba%e5%99%a8%e4%ba%ba.html#comments</comments>
		<pubDate>Sat, 03 Sep 2011 14:46:36 +0000</pubDate>
		<dc:creator>mz</dc:creator>
				<category><![CDATA[晴]]></category>
		<category><![CDATA[Linux软件]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[折腾]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://mengzhuo.org/blog/?p=1204</guid>
		<description><![CDATA[这玩意quick and dirty 点我下载 运行前参数要自己改源代码（CTRL+F搜索「#设置区域」） 如何获得小组ID？ 例如：B组的URL http://m.douban.com/group/17947/ group后面那串数字就是ID了。 运行前要修改代码 group_id = &#8216;小组ID填这里&#8217; #set refresh_interval refresh_interval = 1 #刷新的秒数（不过会有随机延迟，毕竟豆娘也不容易） #set sofa Content sofa_content = &#8216;沙发内容&#8217; data = {&#8216;form_email&#8217;:'注册邮件地址&#8217;, &#8216;form_password&#8217;:'密码&#8217;, &#8216;action&#8217;:'/&#8217;} 然后在终端输入：python douban.py，吼吼，就可以啦～ [python]豆瓣小组沙发机器人 &#124; 订阅博客署名-非商业性使用-相同方式共享]]></description>
			<content:encoded><![CDATA[<p><a href="http://mengzhuo.org/blog/wp-content/uploads/2011/09/2011-09-03-220616_1280x800_scrot1.png"><img class="size-large wp-image-1215 alignnone" title="2011-09-03-220616_1280x800_scrot" src="http://mengzhuo.org/blog/wp-content/uploads/2011/09/2011-09-03-220616_1280x800_scrot1-610x168.png" alt="" width="610" height="168" /></a><br />
这玩意quick and dirty</p>
<p><a href="http://mengzhuo.org/lab/file/douban_group_sofa_bot.py">点我下载</a><br />
运行前参数要自己改源代码（CTRL+F搜索「#设置区域」）<br />
如何获得小组ID？<br />
例如：B组的URL</p>
<blockquote><p>http://m.douban.com/group/17947/</p></blockquote>
<p>group后面那串数字就是ID了。</p>
<p>运行前要修改代码</p>
<blockquote><p>group_id = &#8216;小组ID填这里&#8217;<br />
#set refresh_interval<br />
refresh_interval = 1 #刷新的秒数（不过会有随机延迟，毕竟豆娘也不容易）<br />
#set sofa Content<br />
sofa_content = &#8216;沙发内容&#8217;<br />
data = {&#8216;form_email&#8217;:'注册邮件地址&#8217;, &#8216;form_password&#8217;:'密码&#8217;, &#8216;action&#8217;:'/&#8217;}</p></blockquote>
<p>然后在终端输入：<code>python douban.py</code>，吼吼，就可以啦～</p>
<blockquote><a title="[python]豆瓣小组沙发机器人" href="http://mengzhuo.org/blog/python%e8%b1%86%e7%93%a3%e5%b0%8f%e7%bb%84%e6%b2%99%e5%8f%91%e6%9c%ba%e5%99%a8%e4%ba%ba.html">[python]豆瓣小组沙发机器人</a> | <a title="蒙卓的博客，东西很杂" href="http://mengzhuo.org/blog/feed">订阅博客</a></blockquote><blockquote><small><a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh" title="保留权利声明">署名-非商业性使用-相同方式共享</a></small><blockquote>]]></content:encoded>
			<wfw:commentRss>http://mengzhuo.org/blog/python%e8%b1%86%e7%93%a3%e5%b0%8f%e7%bb%84%e6%b2%99%e5%8f%91%e6%9c%ba%e5%99%a8%e4%ba%ba.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>如何让Ubuntu启动提速50%与Upstart使用</title>
		<link>http://mengzhuo.org/blog/%e5%a6%82%e4%bd%95%e8%ae%a9ubuntu%e5%90%af%e5%8a%a8%e6%8f%90%e9%80%9f50%e4%b8%8eupstart%e4%bd%bf%e7%94%a8.html</link>
		<comments>http://mengzhuo.org/blog/%e5%a6%82%e4%bd%95%e8%ae%a9ubuntu%e5%90%af%e5%8a%a8%e6%8f%90%e9%80%9f50%e4%b8%8eupstart%e4%bd%bf%e7%94%a8.html#comments</comments>
		<pubDate>Thu, 18 Aug 2011 13:59:35 +0000</pubDate>
		<dc:creator>mz</dc:creator>
				<category><![CDATA[雨]]></category>
		<category><![CDATA[Linux软件]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[折腾]]></category>

		<guid isPermaLink="false">http://mengzhuo.org/blog/?p=1171</guid>
		<description><![CDATA[不得不说10.04以后的Canonical为了让Ubuntu启动速度加快下了相当大的功夫：不惜去掉传统的rc.X，init.d等，换成能并行启动处理的Upstart，还单独开发了ureadahead这个软件来预加载所有可能读到的文件。我觉得还是应该还真面目以正视听。我的机子按2011年的配置来说是相当老爷机和落伍了，可是启动经过调整后可以达到32秒 而且蓝牙、HAL、WIFI必须的程序没有移出启动队列。 首先得说说我的基本配置： ThinkPad X200s CPU：Intel Core2 SU3500-1.40GHz[单核] 内存：DDR3 1333 4GB 硬盘：HDD WDC WD2500BEVS 250GB 5400RPM 软件与平台： Ubuntu 10.04.3 LTS ureadahead 0.100.0 那么怎么做到的呢？ 了解Upstart 也许你也发现在10.04以后版本的Ubuntu中每次通过init.d启动程序，例如 /etc/init.d/mysql start Rather than invoking init scripts through /etc/init.d, use the service(8) utility, e.g. service mysql start Since the script you are attempting to invoke has been converted to an [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://mengzhuo.org/blog/wp-content/uploads/2011/08/x200s-lucid-20110818-6.png" alt="" title="x200s-lucid-20110818-6" width="473" height="99" class="size-full wp-image-1192" /><br />
不得不说10.04以后的Canonical为了让Ubuntu启动速度加快下了相当大的功夫：不惜去掉传统的rc.X，init.d等，换成能并行启动处理的Upstart，还单独开发了ureadahead这个软件来预加载所有可能读到的文件。我觉得还是应该还真面目以正视听。我的机子按2011年的配置来说是相当老爷机和落伍了，可是启动经过调整后可以<strong>达到32秒</strong><br />
而且<strong>蓝牙、HAL、WIFI必须的程序没有移出启动队列</strong>。<br />
首先得说说我的基本配置：</p>
<blockquote><p>ThinkPad X200s<br />
CPU：Intel Core2 SU3500-1.40GHz[单核]<br />
内存：DDR3 1333 4GB<br />
硬盘：HDD WDC WD2500BEVS 250GB 5400RPM
</p></blockquote>
<p>软件与平台：</p>
<blockquote><p>Ubuntu 10.04.3 LTS<br />
ureadahead 0.100.0
</p></blockquote>
<p>那么怎么做到的呢？<br />
<span id="more-1171"></span></p>
<h4>了解Upstart</h4>
<p>也许你也发现在10.04以后版本的Ubuntu中每次通过init.d启动程序，例如</p>
<blockquote><p>/etc/init.d/mysql start<br />
Rather than invoking init scripts through /etc/init.d, use the service(8)<br />
utility, e.g. service mysql start</p>
<p>Since the script you are attempting to invoke has been converted to an<br />
Upstart job, you may also use the start(8) utility, e.g. start mysql</p></blockquote>
<p>这是因为Ubuntu使用Upstart作为「启动控制器」，这样的好处就是可以「<strong>并行</strong>」启动，而以往的启动是是单一「线性」的，就好比老的启动方法是单行线，而Upstart是六车道。但是，太多程序在打包进源的时候，并没有将配置文件改写成Upstart使用的样式——继续用老式的启动方法，Upstart因为兼容老式方法，被拖累后并背黑锅。那么怎么分析启动项呢？那么就得搬出神器bootchart</p>
<h4>使用bootchart分析启动项</h4>
<p><a href="http://mengzhuo.org/blog/wp-content/uploads/2011/08/x200s-lucid-20110818-1.png"><img src="http://mengzhuo.org/blog/wp-content/uploads/2011/08/x200s-lucid-20110818-1.png" alt="" title="x200s-lucid-20110818-1" width="491" height="217" class="alignnone size-full wp-image-1177" /></a><br />
（注：中间绿色部分是为了排版方便而缩小的，两端为正常分辨率）<br />
可以看出我原来的启动时间是65秒左右，自从内核加载以来的粉红色的Disk Thoughout(磁盘读写总量)一直是满的，即磁盘在启动后一直没停过小文件的读写，上面还有磁盘的峰值读写速度为44MB/s。而后下面长长的列表中发现一些网站调试使用的apache、mysql之类平时不需要的项，但是<strong>使用老的管理器已经无法停止其启动的程序</strong>。那么要停止它启动载入才行，由于网上以讹传讹地是要注释掉/etc/init/*.conf中启动的那几行就可以了，但是我觉得这真TM是胡说！应该查明当前的启动等级，例如</p>
<blockquote><p>$ runlevel<br />
N 2
</p></blockquote>
<p>说明我目前以启动等级2启动，N(Normal)属于正常启动。<br />
再进行修改Upstart配置文件才行。</p>
<h4>Upstart配置文件部分分析</h4>
<p>启动部分是本文重点，因此举个常见的，「很难」去除的Mysql作为例子：</p>
<blockquote><p>start on (net-device-up<br />
          and local-filesystems<br />
	  and runlevel [345])<br />
stop on runlevel [016]</p></blockquote>
<p>和你的<code>/etc/init/mysql.conf</code>比较一下，我只是去掉了2这个runlevel中的数字，多简单啊！mysql就不会在正常启动的时候运行了。</p>
<p>而且这个配置文件还可以安排启动顺序，例如我的hald <code>/etc/init/hald.conf</code>启动项：</p>
<blockquote><p>start on (local-filesystems<br />
	  and started dbus<br />
	  and runlevel [2345])<br />
stop on runlevel [016]</p>
<p>exec /usr/sbin/hald &#8211;daemon=yes</p>
</blockquote>
<p>这样在dbus启动后并行启动hald，启动等级是[2345]，这样就不必在rc.local中拖Upstart的后腿了。<br />
注：
<ul>
<li>可以删除一些/etc/init/tty*.conf来减少tty的量，也加快一些加载速度。</li>
<li>调整一些程序的启动顺序，比如让mysql、gdm也在dbus之后启动的话，对于多线程的CPU应该会更快点</li>
<li>删除plymouth(加载的画面主题)也是个好办法</li>
</ul>
<h4>为ureadahead正名</h4>
<p>很多人认为ureadahead只是为SSD准备的，但是事实如图（为方便排版已缩小）：<a href="http://mengzhuo.org/blog/wp-content/uploads/2011/08/x200s-lucid-20110818-3.png"><img src="http://mengzhuo.org/blog/wp-content/uploads/2011/08/x200s-lucid-20110818-3.png" alt="" title="x200s-lucid-20110818-3" width="576" height="189" class="alignnone size-full wp-image-1185" /></a><br />
<a href="http://mengzhuo.org/blog/wp-content/uploads/2011/08/5.png"><img src="http://mengzhuo.org/blog/wp-content/uploads/2011/08/5.png" alt="" title="5" width="160" height="60" class="alignright size-full wp-image-1189" /></a><br />
可以看出ureadahead启动之完成后，磁盘的读写顿时下降，而且峰值已经从之前的44MB/s增至77MB/s，速度瞬间少了20秒，当然……取而代之的是CPU的用量猛增。要注意修改内核或启动项之后，下一次的启动会相当慢，但是想想这种机会应该比较少吧。</p>
<h4>小总结</h4>
<p>可见技术在发展，速度自然是越来越快的，欢迎大家提出优化得更好的启动方案。</p>
<blockquote><a title="如何让Ubuntu启动提速50%与Upstart使用" href="http://mengzhuo.org/blog/%e5%a6%82%e4%bd%95%e8%ae%a9ubuntu%e5%90%af%e5%8a%a8%e6%8f%90%e9%80%9f50%e4%b8%8eupstart%e4%bd%bf%e7%94%a8.html">如何让Ubuntu启动提速50%与Upstart使用</a> | <a title="蒙卓的博客，东西很杂" href="http://mengzhuo.org/blog/feed">订阅博客</a></blockquote><blockquote><small><a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh" title="保留权利声明">署名-非商业性使用-相同方式共享</a></small><blockquote>]]></content:encoded>
			<wfw:commentRss>http://mengzhuo.org/blog/%e5%a6%82%e4%bd%95%e8%ae%a9ubuntu%e5%90%af%e5%8a%a8%e6%8f%90%e9%80%9f50%e4%b8%8eupstart%e4%bd%bf%e7%94%a8.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

