Archive for the 'CSIE' Category

FreeBSD local ports

前陣子在整理工作站裝的 Ports 跟 patches 的時候,決定自己造造一個 local 的類別,來放這個 patch 過的 ports,好處是很多東西就不用再手動 patch,而且也可以換像是 portsnap(8) 這種好東西。

在做這些東西之前,最好要對 Ports system 有些認識,一些細節的部份我就不多說,可以參考 FreeBSD Porter’s Handbook。首先,要造一個目錄來放 local ports:

mkdir /usr/ports/local

然後,造一個 local/Makefile:

COMMENT = Local ports
SUBDIR += your_port
.include <bsd.port.subdir.mk>

跟 local/Makefile.inc:

PKGNAMEPREFIX?= local-
PKGCATEGORY= local

然後在 ports/Makefile.local 寫:

SUBDIR += local

在 /etc/make.conf 加上:

VALID_CATEGORIES+= local

再來就是你要自己製造你想要的 ports 了,這邊就不多說了。還有一個問題要處理的是 INDEX。如果有用 portupgrade(1) 的話,每次更新過 ports tree 之後,用 portsdb -Uu 來更新一次 INDEX 跟 INDEX.db,這樣子才不會出意外。我知道這個很慢(在 P4-2.8G 的機器大概是 13 分鐘),不高興的話,可以試試看 sysutils/p5-FreeBSD-PortIndex 或者想辦法用 portsanp(8) 的 make_index 弄,這部份可以參考前陣子 -ports@ mailing 上面有過一些討論。

nfs mount 不要用 intr (-i)

前陣子在研究為什麼單純的 dd 寫到 nfs 上面 ^C 會 panic,在半天之內 post 三次到 stable@,不過都沒人理我 XD 後來翻 open PRs,看到 PR/79700,裡面說到 intr (-i) 這個選項會讓很多行為變得很怪,不太建議使用。後來仔細一看,我真的用了這個,拿掉之後,一切快樂無比…。

另外,我懷疑 217 很多卡在 nfsaio 的也是這個原因,不過要等下次重開機才能拿掉這選項了。

FreeBSD foot-shooting!

As of 5.x and above, you can NOT modify partition table whose disk is in-use. This is so-called anti-foot-shooting feature of GEOM.

After searching mailing lists, I found that setting the 4-th bit of kern.geom.debugflags to 1 will turn off this *feature*. *grin*

The original message is here.

NFS 跟 HTT

剛才被抱怨說為什麼最近在 NFS 存取大檔案都很慢,結果我測了一下,寫 100MB 要 30 秒,這速度實在是太糟糕了,結果跑去 server 把 HTT *打開*,瞬間變成 5秒…。說到這個,有另外一台機器,*打開* HTT 的話(5.3),network 反應時間會不正常。到底是 FreeBSD 你有問題還是 HTT 有問題….

說到 5.3,讓我想到最近應該有台 SMP 跑 4.x 的機器硬碟有問題要換掉,應該會重灌,我在認真考慮玩玩看 DragonFly BSD 1.2,然後等 1.3 出之後,看看效果到底怎樣。

FreeBSD 5.4-RC? on amd64

最近一台 5.4-RC1/2 的 amd64 機器,有事沒事就給我 hang 在那邊,一定要 reboot 才行。早一點的時候,已經寫信去 stable@ 幹兩下了,同時先回 5.3-p9,雖然我記得 5.3 也會,可是沒那麼頻繁(開個兩個小時就炸了… !@#$),先放著看看了 :o

LPRng 跟 8bit jobname

長久一來,如果印中文檔名的話,jobname 是爛掉的,剛去看 LPRng source,發現他在 Clean_meta() 的時候被處理過,而理由在這邊

簡單的說,因為 RFC1179 根本就沒定義 control file 可以包含的字元集,而很多 implementation 都會假定有,於是乎 LPRng 只好把他們幹掉,以免和其他的 implementation 產生問題。

我剛看了一下 source,這個在生 control file (lpr) 的時候就會處理,所以得所有 client 都弄一弄,另外一個是 lpd 也會在收到 job 的時候處理… 所以看起來最快的方式是把 Clean_meta() 變成假的 XD 不過可能得再仔細看看 code,以免 exploitable… :o

Update: 我又想了一下,最快的就是先過 rawurlencode() 然後就沒問題了 *grin*(其實我目的只是要在 web 上面讀出來是對的…)
Update2: patch

ypbind -m

剛發現 ypbind 有加 -m 的時候,如果原本 bind 的 fail,他會花較久的時候才會 bind 到另外一台。還沒空仔細研究狀況,不過現在拿掉 -m 了。

magicfilter 2.x

我終於發現了,magicfilter 2.x 的 filter 那個裡面格式其實還是差不多,只是印表機的 description 用 m4 寫,所以應該可以來換了…

forward 的用處…

剛才在研究某封怪信為什麼會跑到 root 的信箱,才發現某人的 .forward 裡面放的是 root… !@#$%

有沒有腦袋

媽的,機器就兩顆 CPU 你跑個 16 隻/55 隻程式是會比較爽是吧!