剛剛在幫一台 X60 裝 FreeBSD,外接的光碟機似乎怪怪的,會挑片還是怎樣,開起來會說找不到 kernel。一直之間又找不到其他的光碟機,於是就來試試看 PXE 安裝法。
概念上就是 PXE 開起來的時候,去要 pxeboot,然後找 dhcpd 給他的 root-path,用 NFS mount 起來,因此,你會需要 dhcpd 跟 NFS server。
剛剛在幫一台 X60 裝 FreeBSD,外接的光碟機似乎怪怪的,會挑片還是怎樣,開起來會說找不到 kernel。一直之間又找不到其他的光碟機,於是就來試試看 PXE 安裝法。
概念上就是 PXE 開起來的時候,去要 pxeboot,然後找 dhcpd 給他的 root-path,用 NFS mount 起來,因此,你會需要 dhcpd 跟 NFS server。
數小時前,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 上(我只能說這個傢伙真嗨..)。
大約十天前,mergemster 的 -U 這個功能,進了 6-STABLE 了。這功能很讚,就是他會看哪些 /etc 的檔案,你沒有改過的,就會自動 merge,這樣子可以省下很多時間跟力氣。
這個功能實際上是用 mtree(8) 的 checksum 來做的,相當有趣,我記得 mergemaster 的 code 只有大概九十行左右,有興趣的可以看一看 ;p
UPDATE: 我是指 -U 的 code 只有九十行 XD
有在玩 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,所以可以這麼搞 另外還有個問題要特別注意的是,如果你的 /usr/ports 是 link 的話,要去 make.conf 改成真正的路徑,否則會沒有用。
Update: 感謝 b6s 指正錯誤。
剛剛看到 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})。
前陣子因為某些因素,不想升級 host 的 world,所以就直接在 jail 裡面 buildworld/installworld,大致上沒有甚麼問題,要注意的地方是在 host 端,要把底下這個 sysctl 打開
security.jail.chflags_allowed
否則在 installworld 的時候,會沒有辦法把一些有 schg flags 的檔案蓋過去。弄好後,就記得關起來。
自從換了 UTF-8 環境後,有一個很討厭的問題是 ANSI 的表格線,在 screen 裡面是直接對應到 U+25XX 的 box drawing 字元,而我又改過 screen 跟 locale,把這些字當作雙字寬(ASCII ART 之類的),因此像是 dialog(1) 造出來的對話框(sysinstall 或者 Ports 的 make config),就會亂七八糟。
剛才想了一陣子,好像沒有甚麼兩全其美的辦法,於是只好叫 screen 把表格線用最原始的 +, -, | 來畫,patch 在 http://www.rafan.org/patch/big5/screen/files/patch-poorman-drawing。
前陣子在整理工作站裝的 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 上面有過一些討論。
前陣子在研究為什麼單純的 dd 寫到 nfs 上面 ^C 會 panic,在半天之內 post 三次到 stable@,不過都沒人理我 XD 後來翻 open PRs,看到 PR/79700,裡面說到 intr (-i) 這個選項會讓很多行為變得很怪,不太建議使用。後來仔細一看,我真的用了這個,拿掉之後,一切快樂無比…。
另外,我懷疑 217 很多卡在 nfsaio 的也是這個原因,不過要等下次重開機才能拿掉這選項了。
之前裝了兩台某長輩的機器後,就被抱怨說 tcsh 如果用 zh_TW.Big5 locale 的話,消 Big5 的字會消不乾淨,後來解決方式是把 LC_CTYPE 設成英文 locale。
今天早上,我在看 src 的 commit log 的時候,看到 ume@ 加了 SWIDTH 的定義到 ko 的 locale 去,才想起來他幾星期前也加了類似的東西去 jp locale(他應該是日本人)。我就突然想到,zh_TW.Big5 locale 應該沒有 SWIDTH 的定義,結果一看,果然是這樣子,就嘗試生了一個 patch 出來,找某長輩測了測,發下都可以。於是我就跑去看 NetBSD 的 locale,發現他們一開始就有 SWIDTH 的定義…(FreeBSD 是故意拿掉嗎?)
本來想說先在 blog 跟我板上找人測測看的,結果發現我的 patch 跟 NetBSD 的一樣,因此信心大增,直接 send-pr: conf/93844,本來這個 pr 就有 CC 給 ume@,想說他應該有興趣,沒想到 delphij@ 幾分鐘後就 commit 進 -HEAD 了!
我現在是希望這幾個 SWIDTH 的東西,能進 5.5/6.1 RELEASE 啦,來去推看看