Make love, not war

剛剛看到睡長輩http://blog.bsdchat.commake love (羞)這篇提到在 FreeBSD 下 make love 的結果改變了。

原本是這樣的

FreeBSD 6.3-RELEASE-p2 # make love
make: don’t know how to make love. Stop

現在變成

FreeBSD 7.2-PRERELEASE # make love
Not war.

原本以為 Not war. 這段 code 是在這幾年才加進去的,後來翻了一下 cvs 的紀錄發現,其實這個笑話從 1998/04/28 r1.8 就加進去了,只不過 OLD_JOKE 被定義為 0,所以一直都不會有這個效果。

+#if OLD_JOKE
+		if (strcmp(gn->name,"love") == 0)
+		    (*abortProc)("Not war.");
+		else
+#endif
+		    (*abortProc)("%s %s. Stop", msg, gn->name);

然後到了 2008/03/04,就有人說「No need to tell make to DTRT with “make love”, just do it.」,不過他最後還是補上了 WITHOUT_OLD_JOKE,讓人有機會用 CFLAGS 回到之前的狀況……。

+#ifndef WITHOUT_OLD_JOKE
 				if (strcmp(gn->name,"love") == 0)
 					(*abortProc)("Not war.");
 				else
+#endif
 					(*abortProc)("%s %s. Stop",
 					    msg, gn->name);
 				return (FALSE);

其實還蠻有意思的,原本 Make, not war 這句話是 1960 年代美國反戰(越戰)的標語,卻沒想到今天會在 FreeBSD 的原始碼得見他的蹤跡。

即使不用檢視原始碼,許多知名的 Easter egg 也帶給使用者不少樂趣。如果再進一步檢視原始碼,或許更能看見每個專案的心路歷程,又或者是工程師對於專案的看法等等。

(我去年 6/19 的 submit log 好像寫著「祝我自己生日快樂」,這或許也是一種悲傷吧 XD)

而每個專案的 version control 就這樣忠實紀錄下來每一個點點滴滴,就算人開始遺忘,那也無法抹除那曾經存在過的事實。

更新 FreeBSD 6.3-STABLE 兩三事

某天 NotExist 在 irc 說他在 installworld 的時候發生了

14:02 < @NotExist> ————————————————————–
14:02 < @NotExist> >>> Installing everything
14:02 < @NotExist> ————————————————————–
14:02 < @NotExist> cd /usr/src; make -f Makefile.inc1 install
14:02 < @NotExist> ===> share/info (install)
14:02 < @NotExist> ===> include (install)
14:02 < @NotExist> creating osreldate.h from newvers.sh
14:02 < @NotExist> touch: not found
14:03 < @NotExist> *** Error code 127
14:03 < @NotExist> 就爆炸了orz…

這個時候有很多答案出現,像是 mergemaster 有沒有乖乖做,不過經由 google 大神的指引之後,我們發現這個問題根本就有列在 FreeBSD 官方的 FAQ 啦,見 5.33. Why does buildworld/installworld die with the message “touch: not found”?

不過就算跑了 adjkerntz -i 好像還是一樣,結果 NotExist 索性給我機器的帳號,讓我實際進來試試看。因為 handbook 教的好,所以我就按照 23.4 Rebuilding “world” 的標準流程做了一次。

#rm -rf /usr/obj
#cd /usr/src
#make buildworld

結果早上到了公司一看,咦!

===> kerberos5/tools/asn1_compile (all)
cd /usr/src/kerberos5/tools/asn1_compile/../make-roken && make
cc -O2 -pipe -I/usr/src/kerberos5/tools/asn1_compile/../../../crypto/heimdal/lib/roken -I/usr/src/kerberos5/tools/asn1_compile/../../../crypto/heimdal/lib/asn1 -I. -DHAVE_CONFIG_H -I/usr/src/kerberos5/tools/asn1_compile/../../include -DINET6 -I/usr/obj/usr/src/tmp/legacy/usr/include -c /usr/src/kerberos5/tools/asn1_compile/../../../crypto/heimdal/lib/asn1/gen.c
In file included from ./roken.h:61,
from /usr/src/kerberos5/tools/asn1_compile/../../../crypto/heimdal/lib/asn1/gen_locl.h:51,
from /usr/src/kerberos5/tools/asn1_compile/../../../crypto/heimdal/lib/asn1/gen.c:34:
/usr/include/resolv.h:320: error: syntax error before “ns_tsig_key”
*** Error code 1

結果這個問題的資料少得可憐,只有日本的留言板留下了相關的資訊。像是更新 src-tree 之類的建議就不用說了,砍掉 obj 重練這種方法我都做過了。不過從錯誤訊息來看,這個問題其實很明顯,/usr/include/resolv.h 對於 ns_tsig_key 這個東西感到不舒服,而 ns_tsig_key 定義在 /usr/include/arpa/nameser.h 裡,結果系統的 namser.h 卻沒有 ns_tsig_key 的相關定義,你可以參考 Revision 1.16.14.1 和 1.16 的 diff,所以我就很大膽的

cp /usr/src/include/arpa/nameser.h /usr/include/arpa/nameser.h

這樣的確奏效了,原本錯誤的地方也可以很順利的編過,不過之後沒多久又遇到了奇怪的問題

Change begemotBridgeBaseName > bridge_oid.h
line 31: ‘(‘ expected at begin of node
context: ” TruthValue ENUM (
*** Error code 1
Stop in /usr/src/usr.sbin/bsnmpd/modules/snmp_bridge.

根據這邊的說法來看,這是因為系統的 gensnmptree(1) 比較舊,所以會發生這個問題,我們只要預先將新版的 gensnmptree(1) 放進 base 就沒事了。

#cd /usr/src/usr.sbin/bsnmpd/gensnmptree/
#make && make install

總之,希望這些資料對於遇到相同狀況的人有所幫助。順道一提,在舊機器 make buildworld 還真久阿……

檢查 Rootkit

chkrootkit:
http://www.chkrootkit.org/

Rootkit Hunter:
http://www.rootkit.nl/projects/rootkit_hunter.html

說真的,這些也只是求心安而已,而且 false positive 的機率也是有的,請自己注意。

為什麼會特別拿出來寫呢?因為發現 FreeBSDsecurity/rkhunter 加上了 periodic script,讓你可以在每天的 root mail 看到檢查結果。

在 /etc/periodic.conf 加上

daily_rkhunter_update_enable=”YES”
daily_rkhunter_check_enable=”YES”

蠻不錯的,不是嗎。

p.s 這個月的文章數是前三個月的總和……

bsdstats

你可以在 sysutils/bsdstats 安裝這個,官方網站在 http://bsdstats.hub.org/

主要就是要證明還是有很多人在用 BSD 的啦,請 vendor 們不要放棄對他的支援 ^^”

你還可以看到一些統計的資料,例如哪些國家的人使用 BSD 佔總回報的最大宗,還有 Drivers, CPU 等等。如果你也是用 BSD 系列的作業系統的話,可以考慮看看。

至少看看那些統計數據也是很有趣的啦~~~

Learning VoIP Security from Dr. Stephen Kent

這是今天在浩然國際會議廳所舉辦的一場研討會,主講人 Stephen Kent 表達非常的清楚,偶爾也有一些小小的幽默。比較特別的是,我覺得他用兩台電腦搭配兩台投影機的 present 效果出乎意料的好,舉例而言,可能在一個在介紹 SDP,一個就能夠帶出例子來,比起有時候我們非得要分成兩張投影片,然後前後切換,他的表達要來的清楚很多。

此外,剛好今天有一部分在講 SRTP (RFC 3711) 以及 MIKEY (RFC 3830)。這也剛好是我六月初在實驗室報告的題目,也趁著今天的研討會恢復一下腦袋中的記憶。 Continue reading “Learning VoIP Security from Dr. Stephen Kent”

abcde

因為在實驗室的時間太多,所以都沒有時間回寢室轉mp3,要不然我以前習慣用 EAClame 來轉mp3。

剛好我身邊有一台空的FreeBSD,也剛好就發現了這個取名叫「abcde」的ports。

abcde 全名為 A Better CD Encoder,下面是 freshports 對他的一些描述。

abcde (A Better CD Encoder) is a frontend sh script to rip tracks from a CD, encode them in ogg vorbis or mp3 format, and tag them.

Rippers supported: cdparanoia, cdda2wav, dagrab
Encoders supported: bladeenc, gogo, flac, l3enc, lame, mp3enc, oggenc, speex, vorbize, xingmp3enc
ID3 taggers supported: id3, id3v2
Other: vorbiscomment, distmp3, normalize

Many other useful features are supported.

對我而言很方便的設定有幾個:

1. CDDB: 再配合 iconv 應該就無敵了吧 :p
2. 自訂輸出格式: 像是,OUTPUTFORMAT=’${ALBUMFILE}/${TRACKFILE}’
3. Rip的品質:也許只是設好看的 XD

而對我而言,這樣的軟體是最好的,沒有多餘的介面,單純的 Fronter,幫你叫 encoder 和 ripper 起來、更名好檔名、存一份 playlist。

所以我要慢慢去享受音樂啦,順便說一下 NANA 電影版的插曲很不錯呢,不管是中島美嘉的GLAMOROUS SKY,或是伊藤由奈 (REIRA starring YUNA ITO) 的 ENDLESS STORY 都很讚啊。

對了,GLAMOROUS SKY 是 L’Arc~en~Ciel 的 HYDE 譜曲歐。