Li-Wen Hsu’s Blog

June 6th, 2007

系足期末隊聚

之前《2007 交大系際盃足球賽》說到亞軍的獎品有 2000 元的大潤發禮卷。
於是這個學期的期末隊聚基金就有著落啦。:D

交大待到第五年了,第一次上電資大樓的樓頂,就是為了烤肉。
也才知道,原來電資大樓的頂樓是交大的烤肉盛地…

想不到,2000 元可以餵飽這麼多人阿。
我們大概十多個人,從晚上 7 點開始生火,一直烤到臨晨 1 點,
大家都再也吃不下了以後,還有三盤肉剩下來。

這張圖是學弟正在排「勾肩搭背的雞翅們」,在後面也可以看到幾個緊急照明燈。
據了解,原來電資大樓除了頂樓可以烤肉以外,
原來最上面幾層的緊急照明燈還可以拆下來當烤肉時的照明用…
IMGP0963

最後整理場地時,我無意間發明了一個奇怪的遊戲:把燒紅的木碳用夾子放到水裡面
被學長關心說是不是寫論文壓力太大,心理變態(這是一個很深的誤解阿…)
但是每個人嘴巴說好變態,身體卻很誠實地玩了起來,
然後大家都迷上了這個感覺是怎樣… -_-||
(從夾子傳過來一陣一陣的振動,那觸感還真是新奇有趣呀…)
最後連學妹們也玩起來了…
IMGP0969
於是我們花了比平常還多很多的時間在收拾(或是玩樂?)善後上…

六個小時的中,大家雜七雜八的聊了很多,學弟聊著暑假環島的計劃。
學長講著之前環島的經驗。才覺得,好像我的大學回憶中,少了這一點耶。
(不,現在不可以想這些東西,敢緊做出些對世界有貢獻的東西吧,
像是一篇可以讓自己畢業的論文,以免亂浪費寶貴的研究資源…)

Oh, 最後應該要記錄一下,這次活動的時間是在六月2日。

Filed under: cs.football, CS, NCTU, Diary — lwhsu @ 03:19

June 3rd, 2007

FreeBSD 最近的大動作

標題好像寫的很大,不過FreeBSD 最近做了那些事也輪不到我來提了 XD

又好久沒有按 “Publish” 了…
上一篇的 ID 是 56,這一篇已經到 67 了…(結果到頭來,68先被 publish 出來)

今天(Oops, 這是 May. 22 的事了…)在 #bsdports 看到下面這段,挺有趣的。

23:52 < linimon_> gcc4.2
23:52 < linimon_> then xorg
23:52 < linimon_> then the shlib bump.
23:52 < @Pav> missed symbol versioning
23:53 < linimon_> and the rewrite of the kernel in C++

好像以前在 CSZone (KKcity 上面的) 的某個板 (或許是 HighHand 板吧?)
有看到有人介紹用 C++ 寫的 OS,不過已經不知道在那邊了…

寫到 CSZone,才發現有這個地方:
http://groups.google.com.tw/group/cs_zone

Filed under: Uncategorized — lwhsu @ 19:30

2007 交大系際盃足球賽

系際盃戰績:亞軍

十六強
資工:應化 2:1

八強
資工:材料 4:1

四強
資工:工管 2:0

冠軍賽
資工:機械 1:1 (PK 2:3 機械勝)

其實上個星期就打完了,但是這個星期才拿到照片 XD

IMG_8787

本學期的所有賽事都結束啦,下學期再多加油(果然有下學期冒出來了…)
亞軍的獎品是大潤發禮卷 2000 元,昨天晚十幾個人在電資大樓頂烤了六個小時的肉才全部消化完…
(其實還有三盤肉沒有解決…)

慶祝會的事,拿到照片再來寫吧。

Filed under: cs.football, CS, NCTU — lwhsu @ 19:20

May 6th, 2007

FreeBSD Anonymous CVS over SSH Setup

什麼是 Anonymous CVS? OpenBSDOpenBSD AnonCVS 有很詳細的說明。
一般使用 anonymous CVS 的方法有兩種,pserver 和 over ssh,pserver 設定很簡單,照官方文件來就好;
而 over ssh 的會牽涉到 chroot(2) 的東西,比較複雜一點。
(我也在思考是否可以用 ~/.ssh/authorized_keys 裡的設定來達到這個效果,但是還沒有試出來,目前先能動就好)
OpenBSD 也提供一個 wrapper: http://www.openbsd.org/anoncvs.shar
解開來以後,照裡面的文件就可以將自己的 Anonymous CVS server 弄起來
FreeBSD 的 wrapper (ftp://ftp.freebsd.org/pub/FreeBSD/development/FreeBSD-CVS/anoncvs.shar)
基本上是從 OpenBSD 的 wrapper 改來的。

有趣的是,我們可以 dig 到 ftp.freebsd.org 有兩筆 A Record:

ftp.freebsd.org. 180 IN A 62.243.72.50
ftp.freebsd.org. 180 IN A 204.152.184.73

但是實際連進去看的時後,會發現只有 204.152.184.73 這台機器有 pub/FreeBSD/development/FreeBSD-CVS/anoncvs.shar
(喂喂… data 要保持 consistency 阿)

可惜的是,這兩份文件都已經過時,照上面的方法,是完全弄不起來的。連 anoncvssh.c 都沒辦法 compile。
麻煩的事情總是會大量消耗人體 CPU time,所以照 sched_hll(4) 的原則,這個 job 的 priority 就越來越低了….
(sched_hll — How Lazy Lwhsu Scheduler,請別相信我的鬼話…XD)
直到昨天晚上因為被雨困在實驗室,才再把這東西搞定。

  1. 首先,你要有一個正常 work 的 cvs mirror,這個在 Mirroring FreeBSDHow to Mirror FreeBSD 章節裡面說過了,本文不再贅述。以下假設你的 cvs mirror data 放在 /home/ncvs 下。
  2. 因為要用 ssh,為了要讓 anoncvs 可以不用密碼,我們要對系統預設的 ssh(8) 做些設定上的修改:
    /etc/ssh/sshd_config:

    PermitEmptyPasswords yes

    /etc/pam.d/sshd:

    auth required pam_unix.so no_warn try_first_pass nullok

    重新起動 sshd

    # /etc/rc.d/sshd restart

  3. vipw,加入 anoncvs 這個 user:

    anoncvs::32766:32766::0:0:Anonymous CVS User:/home/anoncvs:/home/anoncvs/anoncvssh

    當然別忘了,mkdir -p /home/anoncvs
    至於 group 的部份,加不加就沒那麼重要了。

    anoncvs:*:32766:

  4. 我改了一個 anoncvssh.c
    (希望不要有什麼問題,寫 setuid(2) 的程式總是叫人心驚膽顫,尤其這個還是要 setuid root 的 @_@)
    compile 好之後,放到 /home/anoncvs/anoncvssh ,並且將之 setuid root。
  5. 建立起必要的目錄和檔案,設定權限:

    # cd /home/anoncvs
    # touch .hushlogin .profile

    /home/anoncvs/.plan 放下面的東西:(不弄也不會怎樣)

    To use anonymous CVS in doing CVS operations on your local machine,
    first make sure you’re running a reasonably up-to-date copy of CVS
    (FreeBSD 2.2.5 or later) and then set the environment variable
    “CVSROOT” to anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs as follows:

    csh:

    setenv CVSROOT anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs

    sh/bash/ksh:

    CVSROOT=anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs
    export CVSROOT

    Then run your cvs commands as normal.

    建目錄們

    # mkdir -p home/ncvs lib libexec tmp usr/{bin,lib}
    # chown anoncvs tmp

    tmp 是為了給 cvs server 寫暫存檔用的,其他的目錄還是給 root:wheel 好

  6. 一定要有 ld-elf.so.1,不然什麼東西都不會動啦 XD

    # cp /libexec/ld-elf.so.1 /home/anoncvs/libexec/ld-elf.so.1

    usr/libexec 下的是個 symbolic link

    # ln -s /libexec/ld-elf.so.1

    chroot 以後會變成指到 /home/anoncvs/libexec/ld-elf.so.1 的。

  7. cvs 一定要搬過來:

    # cp /usr/bin/cvs /home/anoncvs/usr/bin

    看看 cvs 要什麼東西:

    $ ldd /usr/bin/cvs

    然後 /lib 的 cp 到 /home/anoncvs/lib 下,本來在 /usr/lib 的 cp 到 /home/anoncvs/usr/lib 下。

  8. 如果覺得上兩步很煩,丟個 static linked 的 cvs 到 /home/anoncvs/usr/bin 下我想應該也是可以的。

  9. 弄了這麼多,重要的就是這一步,要有東西給人家 check out :

    # mount_nullfs -o ro,noatime /home/ncvs /home/anoncvs/home/ncvs/

    還有為了要有 /dev/null :

    # mount_devfs devfs /home/anoncvs/dev/

    (沒有 devfs,mknod 造出來的 null device 不會動…)

  10. 大功告成,換台機器

    $ cvs -d anoncvs@xxx.xxx.xxx.xxx co <module>

    試試看結果吧。

Filed under: FreeBSD — lwhsu @ 09:09

May 4th, 2007

Ports Tree Frozen for Xorg 7.2 merge

故事是從這邊開始的:kris 昨天寫了一篇 HEADS UP: xorg upgrade plans
X11R7.2 終於要進 official ports tree 啦

今天早上, marcus 就把 ports repository 的 avail 改了,Ports Freeze 正式開始!

上面那些只是為了方便以後回來翻的 XD
最好笑的是在 #bsdports 上面的這句:

12:35 < @GeJ> Did someone send an email to miwi? I mean, I’m worried about his health. god knows what may happen if the guy doesn’t have his 80+ daily commits.

這個情形大概會持續好幾個星期吧(雖然 Guide 上面說通常是一到兩週,不過我覺得這次時間應該不會比以往 Release cycle 的時間短…必竟這次還要加個大怪物進去,不像以前只是要修 package building fail 的,不是那種實在不行就 mark broken 就好 XD)
所以,這段時間就乖乖地來寫論文好了…(應該會吧?)
(阿之前吃的一堆 PR 該怎麼辦呢?就…就…就先放著吧)
算算也差不多是是當上 Committer 滿月的日子 XD 順便把學到的東西記錄一下好了。

Fresh Ports Committer 的四個基本作業 :

  • Add a new port
  • 東西先丟到目的 category 下,像是 textproc

    Tools/scripts/addport -n -a -l 111267 -d py-hyperestraier-python

    一樣先把東西丟到目的 category 下,這次是 security
    不一樣的是, -l 後面要用 -1,代表沒有 PR

    Tools/scripts/addport -a -l -1 -d py-gnutls

    參考資料:clsung (mentor) 當年的筆記 [ports] add new port

  • Removing an Existing Port
  • 這也有寫好的 script 可以用,但是用別人寫的 script 總是怕怕的,這玩易兒為什麼老是要去把 ports repository 裡面所有東西都 check out 出來才甘心阿 @_@ (雖然也都被我 cancel 掉就是了…)

    ~/cvsroot/ports 下,其實也不一定要在這邊做啦…

    Tools/scripts/rmport devel/crossgo32 devel/crossgo32-djgpp2 devel/crossgo32-djgpp2-pdcurses

    然後寫寫 MOVED,寫寫 commit log 就可以送出拉。(現在到了真正要 ci 的時候還是會有點怕怕的…)

  • Repository Copies
    這個其實不難,大意就是把皮球踢給 portmgr XD
    詳情看 Committer’s Guide 裡面 Repository Copies 的部份
    步驟簡單整理如下:

    1. change State 為 repocopy 還有 change Responsible 為 portmgr
    2. 記得要在 Why: 那邊寫清楚要把什麼 copy 到那邊去,不然會被 portmgr 罵 @_@

    3. portmgr 做完之後就會被 assign 回來,這時候裡面的東西除了檔名以外都是舊的,所以就像平常一樣快快樂樂 update 就好 :D
    4. 其它地方的東西該改的改一改,這次就差點忘了要去加 lang/Makefile 裡面的 SUBDIR,還有 CVSROOT 裡面的 modules
    5. 還好是在 Ports Tree Frozen 之前想起來,不然到時候還要找 portmgr Approve 事情就複雜了…

    作業成果:ports/112223: [NEW PORT] lang/gnat-gcc42
    注意到了嗎?Responsible Changed 裡面有個 :

    lwshu->lwhsu

    我在 Big5 的世界會因為許的關係受到很多不公平的對待…想不到 ASCII 的世界也對我不好阿…
    之前 gnn 在 irc 上面也是把我名字叫錯好幾次…Orz
    (不過學到了一句話 “blames his keyboard” XD)

  • Regular port update
  • 這就沒有什麼太多好說了,大概做的事和以前做得差不多,反正就是改改改,tinderbox testing,過了就 ci,porttools 很好用,請多愛用。That’s all.
    阿對了,還有也可以處理別人的 PR,tinderbox testing 不過就退稿 XD

大致上就是這些工作啦,Mk/ 下面的東西,小朋友沒事不要亂動。據說新手要等到那天把 ports INDEX break 了才可以從 mentorship 裡面被放出來…大概就跟拔到獅子的鬃毛就會長頭髮的道理一樣吧 XD

References:

Filed under: FreeBSD — lwhsu @ 23:10
« Previous PageNext Page »

Powered by WordPress