Archive for the 'FreeBSD' Category

Page 3 of 9

FreeBSD ncurses 終於更新了

大約一天多前,透過 delphij@ 的幫忙,終於把 current 裡面的 ncurses 更新到去年底出的 5.6 了。再來的工作就是把 widec 的東西打開(嘿嘿,mutt utf8 會正常很多),還有順便把 6.x 的也更新(等 7.0 出大概還要一年吧,而且 6.x 還是會繼續會好一陣子…)。

xcin 從 ports 移除

剛剛我把 chinese/xcin 從 FreeBSD ports 移除了。理由是 xcin 計畫已經在前年十一月由計畫主持人 thhsien 宣佈卸下主持人,其實 xcin 已經很久沒有什麼新發展了,另外是也有一堆其他可用的輸入法,像是 oxim/gcin/scim 等可以使用。

掰掰 xcin ~

FreeBSD PXE 安裝

剛剛在幫一台 X60 裝 FreeBSD,外接的光碟機似乎怪怪的,會挑片還是怎樣,開起來會說找不到 kernel。一直之間又找不到其他的光碟機,於是就來試試看 PXE 安裝法。

概念上就是 PXE 開起來的時候,去要 pxeboot,然後找 dhcpd 給他的 root-path,用 NFS mount 起來,因此,你會需要 dhcpd 跟 NFS server。

設定我都放在 http://wiki.rafan.org/doc/freebsd#pxe_install

gjournal(8) committed!

數小時前,pjd@ commit 了他前幾個月在做的 gjournal(8) 到 CURRENT 了。有在注意 mailing 的話,應該多少會注意到這個非常神奇的東西,它是 block layer 的 journaling,簡單的說,fs 幾乎不用動,就可以跑 journaling。

commit logs 有十幾封,有興趣的人就自己去 cvs-src mailing 找 pjd@ 的,應該就有了 :p另外,不知道哪天才會有真的 UFS Journaling… 喔,對了,pjd@ 最近在 porting ZFS 到 GEOM layer 上(我只能說這個傢伙真嗨..)。

mergemaster 自動更新

大約十天前,mergemster 的 -U 這個功能,進了 6-STABLE 了。這功能很讚,就是他會看哪些 /etc 的檔案,你沒有改過的,就會自動 merge,這樣子可以省下很多時間跟力氣。

這個功能實際上是用 mtree(8) 的 checksum 來做的,相當有趣,我記得 mergemaster 的 code 只有大概九十行左右,有興趣的可以看一看 ;p

UPDATE: 我是指 -U  的 code 只有九十行 XD

紀錄 FreeBSD ports 的選項

有在玩 ports 的人大概都知道 ports 有一些 knob 可以調整哪些東西要或者不要,而要紀錄這些相當討厭。過去的解法是用 portupgrade 的 MAKE_ARGS 來紀錄,後來 ports 自己有了 OPTIONS 可以幫忙(雖然不是很完美,但是至少有了)。

現實上的問題是,目前的 OPTIONS 還不完全能讓全部的 ports 都來用,於是常常就會需要在 pkgtools.conf 紀錄一堆有的沒的。用 MAKE_ARGS 的方式的缺點是,當更新 A 的時候,他可能裝 B,而 B 我又有調過選項,這時候就大爆炸了。正確的做法式在 make.conf 裡面寫,但是要注意用 .CURDIR 去判斷該加甚麼。這麼做相當麻煩,所以我也就一直懶的去改。

前幾天,ale@ 弄了個 portconf(最早是 flz@ 寫的)。裝了這個之後,他會幫忙改 make.conf,你只需要弄一個 /usr/local/etc/ports.conf 像是:

*: WITH_CJK=yes
devel/subversion*: WITH_APACHE2_APR=yes | WITHOUT_BDB=yes
net/mtr: WITHOUT_X11=yes

就可以快樂的丟掉 MAKE_ARGS。注意到我的例子裡面有用 *,在 portconf 裡面,是用 sh 的 pattern match,所以可以這麼搞 :P 另外還有個問題要特別注意的是,如果你的 /usr/ports 是 link 的話,要去 make.conf 改成真正的路徑,否則會沒有用。

Update: 感謝 b6s 指正錯誤。

SMPng Project 劃下句點

剛剛看到 Kris Kennaway 在 SMP mailing 上的 Concluding the SMPng project,算是替 SMPng Project 劃下一個句點(雖然說算是正式的公告,我覺得應該要丟上 announce@ 才對 :p)。

從 2000 開始 5-CURRENT 一直到之前的 5-STABLE,去年的 6-STABLE,以及前陣子的 6.1-RELEASE,走了這麼久,6.x 終於算是可以取代 4.x 的版本了。另外,4.x 只剩下 4.11 還有 Security Officier 的 support,不過這也只到明年初了。5.4 到今年十月底,5.5 還有兩年左右。老實講,6.1 除了我碰到的 VFS 在 NON-MPSAFE 的 fs 上會有 GIANT leaking 以外(已經修好了,過幾天應該就會進 RELENG_6),其他我沒碰到甚麼問題。

Kris Kennaway 在那篇中提到,再來的計畫是用 profiling 工具,去看哪邊是 bottleneck,然後根據不同情況,決定該怎麼最佳化了。重心也不放在把 GIANT 通通幹光光 :p可能會改的名字再繼續下去吧。

如果計畫沒改而且我沒記錯,應該後年就會看到 7-STABLE 跟 7.0 了,不知道到時後會有些甚麼令人期待的功能(6.0 是 mpsafevfs,5.3 開始是 mpsafe{vm,net})。

jail(8) 裡面 make world

前陣子因為某些因素,不想升級 host 的 world,所以就直接在 jail 裡面 buildworld/installworld,大致上沒有甚麼問題,要注意的地方是在 host 端,要把底下這個 sysctl 打開

security.jail.chflags_allowed

否則在 installworld 的時候,會沒有辦法把一些有 schg flags 的檔案蓋過去。弄好後,就記得關起來。

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 的也是這個原因,不過要等下次重開機才能拿掉這選項了。