FreeBSD

Grand Central Dispatch 試玩

[華語, cmn-Hant-TW] 因為開有多執行緒的需求,就研究了一下 mac 的 framework 有提供哪些東西可以用。初步看來就是傳統 pthread 跟 NSThread 可以用,不過 Thread 程式寫起來一向就很煩,所以就想找找有啥替代品可以用,後來就注意到 Mac OS X 10.6 (iOS 4)之後新加的 Grand Central Dispatch。 基本概念很簡單,就是把你要做的東西加進 queue 就好了。把要做的事情放在同一個 queue 的話他就會照順序一個一個執行,當然你可以開很多個 queue 同時跑,那就可以一次做很多事情,直到把系統榨乾為止。 首先要開一個 queue dispatch_queue_t queue = dispatch_queue_create("cc.pighead.queue", NULL);dispatch_queue_t queue = dispatch_queue_create("cc.pighead.queue", NULL); 第一個參數可以隨便打,第二個參數在…

samba + bonjour

[華語, cmn-Hant-TW] 之前這篇有提到開 AFP 分享以及用 Model Name 偽裝成某種型號的 Mac 的方法,其實用同樣的機制也可以把 SMB 的伺服器包的漂漂亮亮的,而且多這層之後用戶端的 Finder 找分享的速度也會比較快,不管從美觀或實用的角度來看都是值得打開。和那篇一樣有 avahi 或 howl 兩種選擇,設定上也和那篇類似,只是把 AFP 的設定換 SMB 而已。 (SMB 伺服器當然要另外安裝,這邊假設 SMB 本來就通的,沒有的話去 ports 找 net/samba3x 挑一個來裝,samba 設定就不詳述了) /usr/local/etc/avahi/services/smb.services (avahi) <?xml version="1.0" standalone=’no’?><!–*-nxml-*–> <!DOCTYPE service-group SYSTEM "avahi-service.dtd">…

zfsv28 dedup

[華語, cmn-Hant-TW] 在六月中左右 FreeBSD 8.2-STABLE 的 zfs 升級到了 v28 這版最主要的特色是 dedup,也就是 block level 的 deduplication,傳說中的 virtual machine disk image 備份救星 (誤)。 因為是 block level,所以檔案位置怎麼放,檔案是不是只修改一點點這些通通不用管了,反正 zfs 覺得這兩個 block 是長得一樣的話,就自動會處理,如果硬碟裡面有一堆彼此間差異不大的大檔案,那效果就會非常好,遠比 lzma 或是 gzip 壓縮更有快感 (事實上 dedup 跟壓縮是可以併存的,歡迎挑戰硬體極限) 。 要開 dedup 很簡單,在有 zfsv28 的系統下…

製作可開機的第一代 iPod Shuffle

[華語, cmn-Hant-TW] 初代 iPod Shuffle 在 2005 年登場時,除了體積小容量大沒螢幕外,還有一個很重要的特色 – USB 接頭 (所有其他的 iPod 都是 30pin 連接線),整隻就像一個稍大的隨身碟。後幾代 iPod Shuffle 的 USB 接頭就被移掉改成用轉接線接電腦,變得更輕更小沒錯,但是也比較不適合直接當隨身碟,要當隨身碟的話還是初代好用。 手上那隻很久沒拿來聽歌 Shuffle,任務就是當救急隨身碟,也算蠻稱職的。後來想說有沒有機會讓他可以 USB 開機,但是又能保留既有的播放功能,包括和 iTunes 同步等等,研究了一下在 FreeBSD Forum 看到了 Making DOS bootable USB hard disks 這篇,照這做確實可以做出 FAT 然後用 DOS 6.22…

加上/移去 zpool cache

[客家話, hak-Hant-TW] 假使你有一隻分割區 da0s1,要加到 volume1 這隻 pool 袛肚,可以按仔下指令: zpool add volume1 cache da0s1zpool add volume1 cache da0s1 用 zpool status 可以看有加成功沒,是講要移去: zpool remove backup-mmt da0s1zpool remove backup-mmt da0s1 指令當簡單。

Dovecot LMTP

[華語, cmn-Hant-TW] 花了不少時間測試,終於讓 Dovecot LMTP 能正常運作了。會用 lmtp 的原因是 sieve 會用到,對於 sieve 來講 dovecot 有支援 lda 跟 lmtp 這兩種方式,評估了一下 lmtp 在非 virtual user 的環境比較簡單,所以就採用 lmtp 方案,用到的 ports 主要有: mail/postfix mail/dovecot2 mail/dovecot2-pigeonhole 在之前的嘗試中,不斷的遇到像是這樣的錯誤: auth: passwd(whsyu@pighead.cc): unknown user 550 5.1.1 User doesn’t exist:…

AFP Server

[華語, cmn-Hant-TW] 據說 Mac 連 AFP 還是比 SMB 順,所以就想架看看用起來的感覺如何,伺服器是 FreeBSD 8.2,要安裝的 ports 有 /usr/ports/net/netatalk /usr/ports/net/avahi-app (選用) /usr/ports/net/howl (選用) avahi 跟 howl 挑一個來裝即可。又為了要用 LDAP 做為登入認證,在編 netatalk 時記得要打開 PAM 的選項,這樣在安裝的時候會自動在 /etc/pam.d/ 裡面產生一個叫 netatalk 的檔案,這個檔案的內容預設是引用 /etc/pam.d/system 的設定,以 LDAP 來講,只要之前在 system 檔裡面有設定好 pam_ldap 的話,什麼都不用改就直接可以用了,接著就是要設一堆的設定檔…

sockstat, lsof

[客家話, hak-Hant-TW] FreeBSD 下是講要看麼介 process 用了麼介 port,最簡單的方式就是 sockstat,毋過這隻是 FreeBSD 限定,Linux 下就做不得用了。好在還有其他替代方案: lsof 講實在的 lsof 主要不是拿來看開麼介 port 的,是拿來看 process 開了麼介檔案,是講也有看用了麼介 port 的功能就是。 lsof -i 就可以看到那隻 process 開了那隻 port,同 sockstat,也當方便啦。

kdemultimedia + alsa = build-error

[客家話, hak-Hant-TW] 有一台的 multimedia/kdemultimedia4 毋知哪下開始就編不過,毋過那台咩沒用到這邊的功能,就沒特別去看是什麼問題,就放著。後來有閒那下去看才知說是要編 kscd  時節,很像是尋不到 alsa 這種的問題,毋重新編過 audio/alsa-* 咩沒用,共樣編不過。 看一下別台有 kde 的有堵到共樣的問題沒,結局那台是根本就沒裝 alsa,按仔就是說 alsa 是沒一定要用到的, 正經反安裝 alsa 後這台就編過了,問題解決。

nvidia-driver 和 libglx

[華語, cmn-Hant-TW] ports 裡面的 xorg 前一陣子終於更新到 7.5 了 ,啊找一天就給他整個升下去。 結果升完之後發現 KDE SC 特效只剩 xrender 可用,opengl 的選項失效了。查了一下 xorg 的 log 發現 nvidia 的 driver 是有跑起來沒錯,可是他在抱怨 glx 不能動,所以就從這邊出發去找解法。後來在這篇裡面瞄到了 x11/nvidia-driver 這個 port 會裝自己的 libglx 到 extension 裡面,也許是升級的時候又把 nvidia-driver 的那份蓋掉了。重新安裝一次 nvidia-driver 再試開一次 opengl 的選項也確實可以用,問題解決。…