Archives

他们要结婚了

今年结婚的同学真不少,是不是大家都看着2012快来了,想赶紧将错就错地把生米煮成熟饭呢?还是上了车之后现在才开始补票呢?

光我目前知道的今年要结婚的就有三对,按照时间的先后顺序如下。

首先是简佳同学,没错,就是上次提到的去非洲的那个妞儿!人家这次从非洲大草原回来硬是带来一本结婚证,还得瑟地说是从大使馆领的。姑娘,可是你不知道嘛,我们这边虽然神马都在涨价可唯独结婚证却是在降价……

我离开北京之前她请我吃饭,我还专门给她准备了一个红包,塞了一个吉利数字的钱。我觉得没机会去参加她的婚礼了,可咱也得先把红包送到啊。结果她看到红包之后眼睛都发绿,然后拆开红包之后两眼放光,再看到红包背面写的那句话之后气得脸都绿了。你猜我写的什么?——“祝您丫好运!”

其次是小林子同学,当时怎么也不会想到这个87年的小朋友会突然就要结婚了,因为听说他找对象的事还是在不久之前,这让我们这些连对象都没有的人只能去挠墙了……我和他关系不错,所以我决定亲自前往福州参加他的婚礼,其实主要还是想看看那个传说中的新娘子到底啥样!所以4月底我会到达福建,因为福州之前去过,到了先去厦门转一圈。

然后是Wendy同学,毕业后留在了生活安逸的西安,后来找了个对象,然后今年十月也要结婚了。比较八卦的是,这位同学和前面那位同学在大学期间曾经谈过恋爱……所以我觉得这俩人今年都要结婚不是简单的巧合……

我还知道两对,虽然今年不太可能会结婚,但是都是谈了挺长时间了,一直还没舍得结!或许是还腼腆害羞内向!一对是我们老大和那个小大嫂,其实我本以为最可能结婚的是他们两个,结果半路杀出来一个小林子。另一个是我在济南的高中同学飞哥,这次从北京回来还特意去济南和飞哥飞嫂一起吃了顿饭,用我当时的话说是,你们都谈了六年了,是我们的榜样啊!

严肃地讲,其实我觉得结婚这事儿挺美好的,两个人从陌生到相识、到相恋、到最后结婚,每一步都不容易,有道是”百年修得同船渡,千年修得共枕眠”!婚姻并不是结束,而是开始,那“识人间烟火”的生活这才刚刚开始!衷心祝愿上面的同学生活美满幸福!

兄弟姐妹们,你们不要害怕!点播一首《结了》送给你们!

关于 /proc/mounts

现在的 Linux 系统里一般都有这么三个文件:/etc/fstab,/etc/mtab,和 /proc/mounts,比较容易让人迷惑。简单解释一下。

/etc/fstab 是只读不写的,它提供的是系统上挂载设备的静态信息,比如 mount -a 就会挂载 /etc/fstab 里面指定的文件系统。

/etc/mtab 是供 mount/umount 进行读写的,是相对动态的。读的话,比如你在挂载一个文件系统时缺少一个参数,它就会自动去/etc/mtab 或者 /etc/fstab 里去查,如果找到的话,只要一个参数也够。写的话,比如你umount了一个文件系统,umount 就会删掉/etc/mtab 里面的相关记录。

看似上面的这两个文件已经够用了,但是新的情况出现了。Linux 内核引入了一个 mount namespace,是给container用的。因为这个的出现,Linux 不得不引入 /proc/mounts。为什么呢?因为记录 mount 信息的 /etc/mtab 是全局的,也就是说,就算你的某个进程有自己的 namespace,但只要还和外面共享同一个 /etc/mtab,那么,里面进行umount/mount操作的信息也会被记录到/etc/mtab里,外面也会看到!凌乱了!由此可见,我们不能有全局的mtab,肿么办呢?/proc/mounts 出来了,有人可能觉得它也是全局的啊!可你仔细看一下的话会发现,它其实是到 /proc/self/mounts 的一个符号链接!如此以来,container 里面的 /proc/mounts 和外面的当然就不会一样了!聪明啊!

所以,/etc/mtab 已经过时了,应该被抛弃,或者直接符号链接到/proc/mounts。同理,查看系统上挂载的文件系统的话,直接调用无参数的mount也是不妥的,因为那样也是读 /etc/mtab。我们应该使用 util-linux-ng 提供的一个新命令: findmnt,它是读的 /proc/self/mountinfo。

Fedora 上那些内核包

Fedora 上和内核相关的包很多,运行下面的命令看一下:


~% repoquery -q ‘kernel*’
kernel-0:2.6.35.11-83.fc14.x86_64
kernel-debug-0:2.6.35.11-83.fc14.x86_64
kernel-debug-debuginfo-0:2.6.35.6-45.fc14.x86_64
kernel-debug-devel-0:2.6.35.11-83.fc14.x86_64
kernel-debuginfo-0:2.6.35.6-45.fc14.x86_64
kernel-debuginfo-common-x86_64-0:2.6.35.6-45.fc14.x86_64
kernel-devel-0:2.6.35.11-83.fc14.x86_64
kernel-doc-0:2.6.35.11-83.fc14.noarch
kernel-headers-0:2.6.35.11-83.fc14.x86_64



我们一一看一下这些包的内容和用途。

kernel 这个包不言而喻了,必备的,里面包含了vmlinuz,initramfs,以及所有内核模块,也就是/lib/modules/uname -r下面的东东。

kernel-devel 这个包是给开发内核驱动,写内核模块的人用的,里面包含了内核源代码中的头文件,Kconfig文件,Makefile等等。

kernel-headers 这个包是给glibc 等用户空间的库、程序使用的,它提供内核导出到用户空间的所有头文件,主要在/usr/include/linux/中,这样以来用户空间就可以和内核使用相同的常量,结构体定义等等。

kernel-doc 这个包提供内核文档,即源代码 Documentation/目录下的文档,不过里面包含了make htmldocs 和 make mandocs 之后的文档。

kernel-debug 和 kernel 包类似,但编译时使用的是带debug选项的config文件。

kernel-debug-devel 同理,和 kernel-devel 包类似。

kernel-debuginfo,给SystemTap在 kernel 上使用的。 kernel-debug-debuginfo 同理,供 SystemTap在 kernel-debug 上使用。 而 kernel-debuginfo-common 包为它们提供一些共同的源文件。注意,kernel-debuginfo 包提供vmlinux! 像 crash 这样的工具也需要它。

这里似乎少了一个 kernel-firmware,原来在 Fedora 上它已经改名为 linux-firmware 了,但是在RHEL上面没改,里面提供内核源代码目录 firmware/ 里面的固件。

当然了,因为 perf 也在内核源代码树中,所以 perf 这个包也是从同一个spec文件生成的。

RHEL6上制作RHEL5 srpm

如果直接在rhel6上面制作rhel5的srpm的话,编译的时候会出错:

error: unpacking of archive failed on file /builddir/build/SOURCES/98-kexec.rules;4cea13ae: cpio: MD5 sum mismatch

google 了一下发现这是因为从 Fedora 12 开始 RPM 压缩算法改变了。一个解决方法是创建一个脚本 /usr/bin/rpmbuild-md5,其内容如下:

[bash]

!/bin/bash

rpmbuild —define “_source_filedigest_algorithm 1”
—define “_binary_filedigest_algorithm 1”
—define “_binary_payload w9.gzdio”
—define “_source_payload w9.gzdio”
—define “_default_patch_fuzz 2” “$@”
[/bash]

然后制作srpm的时候调用 rpmbuild-md5 就行了。

在Fedora上,fedora-packager 这个包已经提供了这个命令,但在RHEL6上面没有。

这才刚刚开始

这些天饭局不断,北京的朋友们排队给我送行,搞得真有点儿离别的惆怅了。不过我觉得,离开北京并不是生活的结束,真正的生活才刚刚开始啊!

那天,公司的几个同事打着团队建设的旗号给我送行,问我想吃啥,我提出以下几点要求:“要有风儿,要有肉,要有火锅儿,要有雾,要有美女儿,要有驴”。那个姑娘想了半天没想明白,还是我机灵,仔细琢磨了一下,我发现符合这个要求的只能是带着美女去吃驴肉火锅了!

给我送别的姑娘不少,我就怕哪一个想不开了又哭鼻子又抹眼泪的。唉,你说我不走的时候你们都干嘛去了,这一走反倒倍儿感亲切了!悲喜交加啊!所以我吃饭之前就和她们提前说好,“不许流泪也不能反对!”

那天早上,我突然收到一张奖状,真的是一张奖状,是公司经理表彰该同志对公司作出的贡献。于是,我要求,等我走之后,公司给我保留一把空椅子,并把我这张奖状摆上面,美其名曰,红帽和平奖。有同事认为这还不够,还应该放一个iPad在上面,把我的照片放上,并调成黑白模式。我觉得再上一柱香才更加完整……

这些天我被问到的最多的问题是,你要去南方哪里,我统一的回答是,你猜。结果鲜有人猜对,很多人能猜到它东边那个,也能猜到它西边那个,唯独猜不中它。所以,那些不知道的人,你们就别猜了!

我认为,世界癫痫病日和情人节是同一天并不是巧合!这充分说明谈恋爱其实和癫痫差不多!都是一种病,而且还都容易上瘾,得治,不,得电!所以那天晚上我看到那么多人在放烟花时,我就感叹,你看人家家里的癫痫病病人终于治好了,庆祝呢!你再看街上那一对对失散多年的姐弟们,今天能相聚多不容易啊!

等到了那里,我要养一只狗,狗的名字还没想好,不过已经有人出主意了,说叫二奶,这样我逢人就可以自豪地说,“我养了一个二奶!”倍儿有面子!就这么定了!叫小三也成。小二不行,搞得跟店里的伙计似的。小四也不行,郭四姐不愿意,韩寒更不愿意。沉默同学对此有贡献。

北京以后很可能不会再回来了,回来也只是路过,匆匆过客而已。你们真要是想我了就去南方找我,我随时恭候,到时我定会摆酒设宴招待各位朋友。“不惜歌者苦,但伤知音稀!”有道是,“酒逢知己千杯少!”

我这哪里是在享受生活啊,分明是在反抗生活!

没那么简单

有些事情没有你想的那么简单,那么浪漫。

你们可能觉得我要离开北京了,要去美丽温柔的南方了,要过一个与世隔绝的清净日子了,很潇洒很浪漫是吧?可是你们没有看到,我离开北京放弃了什么。我这里有很多的朋友,我当然也不舍得离开。北京就算是再脏再挤,可这里毕竟还是首都,有各种便利,比如网上买书免快递费,第一天买第二天基本上就能到,而到了一个小城市就不会。你们没有想到,我自己去了那个人生地不熟的地方什么都要一个人去折腾,租到房子之前还得住旅馆,朋友还得重新认识。我作出离开北京的决定之前我都考虑过这些,我只是想说,这并不是像你想的那么浪漫,或者说,浪漫也是要付出代价的。

你们可能都觉得我自己经常出门旅行,头一天想走第二天就可以背着背包出发,很自由很自在是吧?可是你们没有看到,我为了制定行程,安排住宿,预订机票所花费的精力。你们没有看到我旅途上的各种疲惫,各种劳累,各种孤单。有的时候都晚上八九点了我还没找到住的地方;去青海湖骑车的时候适应不了那里的昼夜温差,晚上感冒连药都没得吃,拖着疲惫的身子去给服务员要几片药,要了一壶热水;在拉萨的时候感冒得厉害,还以为会挂在高原上了;晚上爬峨眉山的时候,在海南夜里骑自行车的时候,很长时间连个人影都看不到……自由自在也是要付出代价的。

和看那些名人一样,我们往往只看到人家光辉的外表,殊不知人家为了今天这份荣耀所付出的努力,人家说不定熬了多少个日日夜夜,经历了多少的失败坎坷。那句话说得好,“荣耀的背后刻着一道孤独!”我虽不是什么名人,可是那份孤独我还是能理解的。不光荣耀,我觉得任何好的、光鲜的事情都是如此,一切都得靠自己的努力才行。

之所以说这些是因为今天和一个同学谈起了这个话题,她觉得我是一个理想主义的浪漫主义者。是,我骨子里确实如此,可是我也很理性很现实,我深知要得到这些需要付出怎样的努力,需要作出怎样的取舍。还是那句话,有舍才有得,能放得下的人才能拿得起!

她还感慨,为什么找个合适的人就那么难?这种感慨我也发过不止一次。没错,就是这么难,而且是很难很难很难!拿我来说,我有时候就想,我想要的只不过是一个谈得来的姑娘啊!看似不难,其实呢,“谈得来”本身就已经很难的。每个人都有自己的脾气,性格,家庭背景,教育背景,生活习惯,人生观价值观……想谈得来真不是那么简单的事儿!更何况,现实中你还得看姑娘的长相,年龄,身高,体重……好,就算都合适,你看上人家了,可人家能看上你么?嗯,就算彼此都看上了,那么你能让姑娘的父母看上么?你的父母能看上这个姑娘么?等等。问题很多很多。你看到别的情侣甜甜蜜蜜,却不知人家背后经历了多少坷坷绊绊,吵吵闹闹,彼此有过多少迁就、容忍、让步,甚至牺牲,才走到了一起?所以谈恋爱这种事儿更是没那么简单。

所以我就给她推荐看那个MV《没那么简单》。我觉得,人活着理想一些、浪漫一些,没错,挺好的,关键是为了得到这种理想这种浪漫,你必须付出努力,甚至你努力过之后仍然可能会得不到。浪漫和理想不是简单想想就能有的,有时甚至是需要牺牲别的来换的。最后我送她那句话:耐得住寂寞,才能守得住繁华!

我就是这样一个人,一个理想主义的浪漫主义者,但同时也是一个极度悲观的乐观主义者。

10年总结,11年计划

翻看去年这个时候给自己制定的目标,发现大多又都是悲剧。看下面,

>1. 找到一个女朋友,感叹号!愿春哥保佑啊!

事实证明,连春哥都救不了我。。。

>2. 做好自己现在的工作,学到更多的东西。

翻了翻自己一年来写的那些“半月报告”,感觉这一年下来确实踏踏实实做了不少东西。有付出就有收获,一定要坚信这一点。

>3. 写的书希望可以圆满完成并出版。

书也会像代码一样,写得多了也是乱,代码需要重构,书亦如此。今年无论如何都不能再拖了,一定给大家一个交代。

>4. 认识更多的人,结识更多的朋友。

出去旅行和户外活动中确实认识了不少新朋友。

>5. 希望7月份可以回葡萄牙一趟;如果条件允许,还准备去山西,河南,甘肃,内蒙古等地旅旅游。

因为经济原因,葡萄牙没有去成。不过今年应该没问题了,钱已经攒够了。再加上可以远程办公,所以今年去葡萄牙这事就很靠谱了,准备去那里待上一个月,在m@rco家蹭吃蹭住蹭无线。。。roflol

去年一年去了内蒙古的库布齐沙漠,河南郭亮,山西大同、平遥、太原,青海湖环湖骑车,西藏拉萨、川藏线,江苏南京,浙江杭州、宁波,单车环海南岛,现在我自己看着都觉得挺吃惊,我怎么一年之内去了那么多地方?!呃,如果我只能给你推荐一个地方的话,我希望是青海湖,一定要自己一个人去骑一圈。

今年主要是想去葡萄牙,去欧洲,如果还有时间的话,我还希望去新疆,甘南,贵州转一转。

>6. 学到更多的非专业知识;了解更多的“好想法”。

书倒是看了不少,杂而不精。除了技术的书,我看书很少有目的性,每次都是想到什么了就看什么。

>7. 想买一个单反,学学摄影知识;想买把吉他,重新学一下弹吉他。

两样都没买,玩单反太烧钱,玩吉他没时间练。希望今年有所改观。

现在,我很快就要离开北京了,要开始一种全新的生活了,未来会是什么样子我自己也不清楚。

我幻想着等我到了那个向往的地方,自己租一个小院子,依山傍水,里面种一些花花草草,还要养一只狗。白天努力工作,晚上坐在院子里弹吉他唱歌。周末没事的时候还可以画一些素描。想出门远行的时候,背着背包拖着行囊四处游荡,奔波在车站、机场、码头……多年以后,你或许还会看到我依然在路上……

去年一年经历了太多事情,来年只图一个安逸,只为一个平静。淡泊名利,与人无争,与世无争。我觉得,如果一个人什么都可以放下,那么这个人一定是不可战胜的,因为无欲则刚。

这就是我今年的计划,也算是另一个小小的梦想。

祝您在二零一一年……

祝大家像TNS人民一样高!像AJ人民一样硬!又高又硬!

祝所有没钱、没权、爸爸不是李刚的人都肉身翻墙成功!到美利坚去,到英格兰去,到法兰西去……

祝所有程序员的项目需求都不用改,祝所有QA的测试都不需重提,祝所有PM的项目都不必延期!

祝所有北漂的童鞋都能找到一个月才77块钱的45平的房子!向党和人民保证:我们可以承受!

祝大家的生活像新闻联播里一样,比花儿还要幸福!

继续在红帽工作

前两天和我美国的经理通了一次电话聊了聊我的情况和想法,她想让我继续在红帽工作,而我不想留在北京。经过评估之后,她决定让我远程办公,这下可以放心离开北京了。:-)

我们部门的这个经理是个华人,但不懂汉语。她绝对是整个红帽公司最忙碌的人之一,有时我甚至觉得“之一”也不用加。她手下管理一批内核牛人,比如耳熟能详的David Miller大牛。有人说,管理程序员就像是在放养一群猫,可见她的工作也不轻松。

当初我来红帽的时候就是她面试我,于是我就成了红帽北京这边第一个做内核开发的了。所以,她对我的赏识和信任我感激不尽,绝对不是别的公司给我开出几倍的工资能换得来的,这也是我为什么一直留在红帽工作的原因之一。

在红帽北京这边工作,工资不算高,尤其是和Google这种公司比,但是工作环境很宽松。每天没有固定上下班时间,早来早走,晚来晚走,有个同事还经常吃完午饭才来上班。虽然说是每天要上够八个小时,但绝对没有什么打卡之类的东西监督你,全靠自觉。平时有事还可以在家办公,所以有的同事没干净的裤子穿了在家办公我们见怪不怪了。

这里每人每年都有15天年假,比起国外来不多,但比起国内的很多公司来不少。调休就不用说了,看我就知道,每次都是眼花缭乱。开放和自由是红帽在社区一直倡导的,其实在公司内部也大抵如此,从上面你也看得出来。这是我为什么一直留在红帽工作的原因之二。

我写这些东西不是恭维,即使是我要离职我也会这么写,因为事实就是如此。写这些也是为了让那些觉得红帽公司很神秘的人有进一步的了解,免得每次见我都要反复问。;-)

如果一切顺利的话,我会于2月19号离开北京。再见,北京!

LINUX_REBOOT_MAGIC

include/linux/reboot.h 中有五个魔数:

define LINUX_REBOOT_MAGIC1 0xfee1dead

define LINUX_REBOOT_MAGIC2 672274793

define LINUX_REBOOT_MAGIC2A 85072278

define LINUX_REBOOT_MAGIC2B 369367448

define LINUX_REBOOT_MAGIC2C 537993216

第一个的意思很了然,是feel dead的hex表示,类似于0xdeadbeef。

而后面四个就有意思了,今天在公司的邮件列表上看到一个讨论说这些其实是Linus和他女儿的生日。猛一看看不懂,这么一看就了然了:

% awk ‘/MAGIC2/ {printf “%Xn”,$3}’ include/linux/reboot.h
28121969
5121996
16041998
20112000