Archive for April, 2010

自动生成内核config

April 21st, 2010

配置内核的人都清楚要选择内核的配置项是一件比较麻烦的事:要是多选了吧,内核体积可能变大,编译时间会变长;要是选少了吧,恐怕系统连启动都启动不了。所以一般我们的做法是拿过系统提供的 config 来直接make oldconfig。

但这么做并不是很好,因为发行版通常为了照顾不同配置的机器而选中了很多的模块,这样一来对本机器没有用的东西也会被编译进来,从而导致编译时间变长,这还是次要,关键是模块数量会增多,内核体积也有可能变大。

理想的情况是我们根据本系统运行时加载的模块来决定到底选中哪些模块。问题就来了,我们怎么才能知道自己的系统需要哪些模块不需要哪些模块呢?

为了解决这个问题,Steven Rostedt写了一个脚本,叫作streamline_config.pl,来解决这个问题。而且他已经把此脚本提交到内核,见scripts/kconfig/streamline_config.pl。这样一来,我们就可以通过 make localmodconfig 或 make localyesconfig 来生成我们真正需要的最小的config了。不同的是,后者会把系统正在使用模块编译进内核,而前者不会,它只会保留系统使用的模块而且继续以模块的形式存在。

这个脚本不复杂,原理也很简单,通过 lsmod 找出正在使用的驱动, 然后通过解析所有的Makefile中的obj-$(CONFIG_XXX) += xxx.o模式来找到驱动对应的CONFIG_*,不过还要解决依赖性的问题。

2010上半年旅行计划

April 11th, 2010

前一段时间天气比较冷,懒得出去。最近比较宅,不想出门。可是好久不出门旅行浑身难受,每个月总有那么几天……再这么宅下去不行,得出去活动活动了!

于是乎我制定了下面的近期旅行计划,初步计划,具体时间待定。

4月17号——19号,内蒙古,库布其沙漠穿越。已定。

4月底或5月初,苏州,南京,乌镇。本打算去山西平遥,但一想山西那么近,什么时候去都成,没必要在这么好的季节去,还不如趁着春天下江南,更主要的是看看传说中的江南美女!

5月底或6月份,青海,西藏。待详细计划。

6月底,大连。

一直以来都是一个人出门旅行,提前征征旅伴,最起码拍照方便一些。不靠谱人士免谈,极品人士请绕行。

改去西藏了

April 10th, 2010

鉴于地球日益危机,外星人犯我之心不死,不明飞行物频繁光临地球和太阳系,我深刻感觉到2012真的快要来了!同志们,你们的船票买好了吗?我不管了,我的船票已经通过黄牛买到,所以我得赶紧去西藏看看诺亚方舟建得如何了!葡萄牙等到2012过去后我坐诺亚方舟过去!

以上纯属虚构。真实原因如下。

感谢国家,贵国的护照除了去一些我都没听说过的国家不需要签证,去哪都需要!所以说就算你只是为了换个好用的护照你也得移民啊!我发现申请去葡萄牙的旅游签证比我想象中的还麻烦,还要搞什么财产证明之类的,就我这点儿财产还不够证明的呢。钱咋就花得这么快捏?反正葡萄牙今年7月份是去不成了,等我什么时候攒够钱了再去吧。决定改去西藏了,一直想去但没机会去的地方。花钱不多,省下的钱还可以买个单反。而且,我现在积攒了大约10天的假期,加上3个周末一共16天,估计去西藏应该差不多了。

于是从现在开始征旅伴,同去西藏的,估计可能会5月底或者6月去,坐火车。可以见我发起的豆瓣活动

痛定思痛,我深刻反思了一下上面的问题:我的钱到底都花到哪里去了呢?我发现,相当一部分钱交给了国家,交税不说了,还交了根本就没有用的住房公积金(我交一辈子也买不起首都的一个厕所啊!)和基本上是在忽悠人的养老保险金等。剩下拿到手的钱一部分贡献给了贵国的房地产,贵国的水泥盒子租也不便宜啊!其余的钱中,相当一部分花到了旅游、户外以及户外装备上,虽然我在旅途上已经算是很节省的了;一部分钱给了爸妈,这没的说,我又不是富二代,穷二代还倒是差不多;一部分外债,是借给别人的;一部分花在了吃上,穿很少花钱,差不多半年才买一次衣服,而且买的比去动物园买贵不了多少。这么一算心里踏实了,钱虽然花得快但没浪费,也算是持家有道吧。

下一步就是要买个单反,去西藏之前。有人给我推荐佳能550D,不知道到底怎样。哎,玩单反比玩户外烧钱还厉害,入行有风险,出手须谨慎啊!

傻逼们的原理

April 5th, 2010

傻逼们运行的基本原理是:

你永远不能战胜一个纯傻逼,因为他会把你的智商拉到跟他一个水平,然后用丰富的经验打败你!
Do not argue with an idiot. He will drag you down to his level and beat you with experience.

所以,没有足够的时间不要跟傻逼们斗。别把他们当正常人看就是了!

某些人就别对号入座了!

bonding和bridge对netpoll的支持

April 5th, 2010

最近我在做 netpoll 的东东,具体说是让 bridge 和 bonding 支持 netpoll,这样我们就可以通过 bridge 和 bonding 设备来使用 netconsole 和 netdump 了(注:netdump 已经被遗弃)。三个补丁见这里:

http://lkml.org/lkml/2010/4/5/13

http://lkml.org/lkml/2010/4/5/14

http://lkml.org/lkml/2010/4/5/15

其实很简单,无非就是实现几个回调函数,传递几个关键的指针。最纠结的地方是 netpoll 的那几个成员变量,一步错了导致后面全错,不过说到底,还是对 net 部分的代码不熟悉。

最气人的是,不少时候明明是一个成员忘了赋值,结果导致 lockdep 警告,有时甚至连警告都没有直接死掉,非常莫名其妙!所以我就说啊,你遇到 oops,soft lockup 不要紧张,你最起码是已经得到很多错误信息了,真要是一条错误信息都没有,那才紧张呢!你问我这时候怎么办?没什么好办法,只能尝试缩小可疑代码的范围,然后凭直觉去猜问题应该在哪里!比如我这个,我可以通过使用或不使用 netconsole 来判断问题是出在我的补丁上还是原有代码中(不要太迷信原有代码,它们也会有 bug 的),如果是出在我的补丁中,那到底是哪一块,哪个函数。如果没任何信息,系统死掉很可能是因为什么?当然是加锁了!重新检查锁到底有没有用对。如果还不行就老老实实地加 printk 吧!

还有就是,不要迷恋现象,现象并不一定能正确表明问题所在,它只是问题带来的症状,仅此而已!换句话说,可能是前面的一个小问题引发了后面大的症状,这并不意味着问题就是后面的一个大问题,也不意味着问题就真如症状直接表明的那样。静下心来仔细分析症状的每一个细节,不要轻易下结论说问题应该在哪里。

赤果果的教训啊!

党妈的关怀

April 4th, 2010

先上CCAV的新闻

山西王家岭矿难救援现场,伴随着营养液传送到井下的,有塞在空矿泉水瓶子里的两封信。

一封信写道:

亲爱的工友们:党中央、国务院和全国人民时刻都在关注你们的安危;省委、省政府领导正在现场指挥抢险工作。同志们都为你们传递的生命的信息万分高兴,都在争分夺秒、全力以赴救援。你们一定要坚定信心,坚持到底!坚持就是胜利!

另一封信写道:

弟兄们你们好:请耐心等待,地面上国家领导、省领导带领队伍在全力以赴,加管、加泵排水。很快就会排下去的,一定要坚持、坚持、再坚持!!!下面气体、风量情况如何?需要我们做些什么?请回信。山西焦煤汾西救护大队。

==================关怀的分割线==================

看完之后我灰常鸡动!我们知道,贵党早在抗战时期就靠书信和地下工作者连络,而如今建国60多年了依然笔耕不辍!对于地下工作者们来说,党妈的关怀比空气,比水,比食物更重要!真是“纵做鬼,也幸福”!

我只有一个疑问:地下工作者们在下面怎么回信呢?

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。
葡驻京办ICP备07006283号