postfix 純收不寄

[華語, cmn-Hant-TW]

之前因為某個需求,要暫時擋掉一台 postfix mail server 寄外部信的功能。找了一下發現其實並不會很困難。在這一篇有提到直接修改 master.cf 即可,把他改成這樣:

smtp      unix  -       -       -       -       -       local
relay     unix  -       -       -       -       -       local
local     unix  -       n       n       -       -       local

重點在改最後一行,smtp, relay 本來都是 smtp,通通改成 local 後就會寄不出去了,這樣的設定不會影響收信 (因為收信就是 local),local 寄 local 當然也沒問題,不過對外發信會用到的 smtp 或是要 relay 的話那就完全出不去了,完全符合只擋寄外部信的要求。

不過要注意的是雖然暫時是寄不出去沒錯,不過其實信也只是暫時擋到,等你重新開放後 postfix 就會一次一起寄出去,如果剛好有大量信件卡住的話要特別注意就是了。

Posted in FreeBSD. Tags: , . No Comments »

sockstat, lsof

[客家話, hak-Hant-TW]

FreeBSD 下是講要看麼介 process 用了麼介 port,最簡單的方式就是 sockstat,毋過這隻是 FreeBSD 限定,Linux 下就做不得用了。好在還有其他替代方案: lsof

講實在的 lsof 主要不是拿來看開麼介 port 的,是拿來看 process 開了麼介檔案,是講也有看用了麼介 port 的功能就是。 lsof -i 就可以看到那隻 process 開了那隻 port,同 sockstat,也當方便啦。

Posted in FreeBSD. Tags: , , , , . No Comments »

postfix 收不到 gmail 的信

[客家話, hak-Hant-TW]

有兩條連外的線行沒共條路出去,有一條是給 NAT 底肚的電腦連出去,有一條就是伺服器專用的,毋過有 NAT 那條較快,有一些服務咩是走那條,有一隻網址的信箱咩是用這條來收信。

毋過堵到一隻太問題,就是 gmail 寄來的信收毋到(很像 facebook 的咩收毋到),其他的又沒問題,是講寄行別條線那隻信箱咩是沒問題,看一下 /var/log/maillog 底肚看到按仔的東西:

Jul 28 02:12:25 mail postfix/smtpd[40005]: connect from mail-iw0-f173.google.com[209.85.214.173]
Jul 28 02:17:25 mail postfix/smtpd[40005]: timeout after EHLO from mail-iw0-f173.google.com[209.85.214.173]
Jul 28 02:17:25 mail postfix/smtpd[40005]: disconnect from mail-iw0-f173.google.com[209.85.214.173]

看起來是 gmail 連上來,postfix 等 5 分鐘等毋到 gmail 餵東西給他,他就切斷連線了,尋了一下看到這篇 postfix mailing-list 有寫到共樣的問題,他講問題是防火牆 (firewall) 擋掉,按仔聽起來當有道理,毋過這條線主要是 NAT 用的,改 firewall 規則較麻煩,解決方法就變作換一條線來用較快了,改一下 DNS 的 MX 就換好了,毋會影響太大。

改過以後 gmail 就收的到了,facebook 就不知了看有閒再來試看看。

DHCP, resolv.conf

[客家話, hak-Hant-TW]

FreeBSD 用 dhclient 去抓 IP 那下,DHCP Server 是講有給 domain name 相關資料,resolve.conf 就會被他重寫蓋掉自家寫的設定。 是想自訂又想要用 DHCP 抓 IP,就要用其他的方法來設定,毋會太麻煩就是。

在 /etc/dhclient.conf 加這兩行

supersede domain-name "$domain_name";
supersede domain-name-servers $ip1, $ip2;

$domain_name, $ip1, $ip2 自家代換,重開 dhclient 後就會寫好了,例:頭前三隻變數各別是 pighead.cc, 10.0.0.1, 10.0.0.2,/etc/resolve.conf 會被 dhclient 寫作

search pighead.cc
nameserver 10.0.0.1
nameserver 10.0.0.2

詳細的設定請 man dhclient.conf

Posted in FreeBSD. Tags: . No Comments »

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 的選項也確實可以用,問題解決。

btw, xorg 升級到 7.5 之後似乎順非常多,就算用 xrender 跑那堆特效也不會有很強烈的遲滯感,整個 KDE SC 的介面反應速度快得讓人驚訝。當然了,資源還是一樣吃很兇就是,但是至少用起來爽度大增。

Posted in FreeBSD. Tags: , , , , . No Comments »

xvkbd

[客家話, hak-Hant-TW]

手上有一隻二手的 Apple Keyboard 有問題,9-O-L-. 這排打毋出來 (其他的沒問題)。毋過按仔就毋用咩當打爽、就看看有軟體的方法可以用老鼠輸入文字沒。作業的環境是 KDE (FreeBSD 8.0), 找到這隻 xvkbd 可以用,ports 底肚咩有 (x11/xvkbd) 所以裝起來沒什麼問題。

用起來咩沒什麼問題,可以自在變大變小,也可以同時用 gcin/oxim 輸入,就是用老鼠輸入會較慢。 (本成就是會按仔的)

Posted in FreeBSD. Tags: , , . No Comments »

raidz 換硬碟

[華語, cmn-Hant-TW]

以三顆拼成的 raidz 來講,假設塞進去的硬碟都是整顆拿來用(dangerously dedicated?!)的情況,那要換硬碟的時候只要這樣下指令就可以了: (假設要把 data 的 ad6 換成 ad8)

zpool replace data ad6 ad8

不過如果抽取盒插滿滿又懶得打開機殼拔來拔去的話,那也是可以冒點風險同位置直接抽換。抽換 ad6 成新硬碟後再下指令強制更新:

zpool replace -f data ad6 ad6
zpool clear data

在剛換新硬碟的時候 raidz 會進 DEGRADED 模式一段時間,等跑完後才會恢復成正常。這部份就是風險所在,當然以一般個人用的情況來看應該是可接受的。

註:在硬體更換或新增完畢 (通常需要重開機進入系統) 後才下這些指令,請確認無誤後再執行,不然換
錯硬碟就搞笑了。

Posted in FreeBSD. Tags: , . No Comments »

換 zfsroot pool 的名仔

[客家話, hak-Hant-TW]

一般要換 zfs 的 pool 名就直接 export 過來 import 換新名就好了,毋過是講 pool 底肚有 root 就作不得 export,按仔就要用別隻方法來改。

要用 zfs 開機的時節,系統會參考 /boot/zfs/zpool.cache 來 import 看得到的 zfs pool,是講沒找到 /boot/loader.conf 底肚的 vfs.root.mountform 指定的地方,就會跳出錯誤訊息叫你輸入對的位仔,所以常理來講是沒要挺動較好,正經想要要改可以按仔做:

  1. 用別台電腦 (沒就是換一個硬碟開機) 強制 import 這隻 zfs pool 同時改名仔。
  2. 拷這下這個系統的 zpool.cache 進去這隻 pool 相對的位仔。 (可以直接用這下的系統 mount 這隻 pool 的 root)
  3. 配合修改 /boot/loader.conf 的 vfs.root.mountform 變作新的名仔。
  4. 配合修改 /etc/fstab ,共樣有看到舊仔名仔就換作新名。
  5. 換轉去用這隻硬碟開機,是講沒問題就看得到 pool 的名換了。
Posted in FreeBSD. Tags: , . No Comments »

FreeBSD zfsboot

[華語, cmn-Hant-TW]

安裝

想要把一台 FreeBSD 8.0 機器硬碟升級,想說乾脆換成 GPT 弄個純 zfs 的環境來用看看。在官網的 wiki 有提到在這裡可以下載安裝光碟,裡面有一個 zfsinstall 的 script 可以幫忙把 FreeBSD 安裝到一顆乾淨的硬碟裡面,直接下載附有包好一份 FreeBSD/amd64 dist 的 special edition 比較方便,不然就得自己包一份餵給 zfsinstall 吃。

安裝過程很快,不過重開機後怪事就發生了,開機居然會卡在開機硬碟掃瞄的畫面?!一開始推測是 GPT 的問題,把硬碟清掉之後果然就不卡了,這實在沒啥道理,後來把硬碟拿去用 Mac 的磁碟工具程式分割成 GUID 分割表 (即 GPT),一試居然也不會卡,那問題是在哪? 再深入交叉測試發現原來只要用 gpart create -s GPT 指令做出來的分割表開機的時候就會卡住,就算裡面是空的也一樣,Mac 的則不會。所以結論就是用 FreeBSD 的 gpart 在 WD 6400AAKS 上產生的 GPT 會讓 MSI K8N Neo4-FI 主機板卡在硬碟掃瞄畫面,至於問題是誰造成的我就不知道了。

既然 Mac OS X 產生出來的 GPT 沒問題,那就用 Mac OS X 做一個空殼。因為 Mac 在分割的時候會很貼心的順便塞 EFI 之類的東西進去,所以在安裝前要先用 gpart delete 指令把所有分割區砍掉只留 GPT。然後 zfsinstall 也需要修改,因為他一開始會檢查確認硬碟是否為全空,要把那段註解掉或是讓他檢查沒過時不會跳出,然後 gpart create 的部份也要註解掉,因為事先已用 Mac 之工具做好 GPT 了,一切順利的話,安裝完重新開機就可以進去整顆都是 zfs 的系統了。

移動

要把舊的系統移到新的系統問題不大,用舊硬碟開機下手動將新硬碟的 zfs dataset ( /root /var /tmp /usr ) 掛載上去後直接用 rsync 把既有資料蓋到新硬碟上的相對位置即可,蓋完之後要再修改兩處

/boot/loader.conf
zfs_load="YES"
vfs.root.mountfrom="zfs:data/root"
/etc/fstab
/dev/gptid/78e0d9bd-1fac-11df-bc9c-0210dc9db087 none swap sw 0 0
data/usr /usr zfs rw 0 0
data/var /var zfs rw 0 0
data/tmp /tmp zfs rw 0 0

data 是 zfs pool 的名字,zfsinstall 時可以下參數指定,/etc/fstab 中 swap 的 gptid 可以用 zfs status 查到,事實上這兩個檔案在 zfsinstall 安裝時都會設定好,不過把舊硬碟資料複製到新硬碟時很有可能會被蓋掉,所以要再確認修改。

一切順利的話用新硬碟重開機應該可以看到原來的系統又跑起來了,差別只是硬碟變大、根目錄變 zfs 而已 (輕描淡寫貌)。

Posted in FreeBSD. Tags: , , , , . No Comments »

nvidia driver for freebsd/amd64

[華語, cmn-Hant-TW]

隨著 FreeBSD 8.0 的推出,nVidia 也如預期的釋出了給 FreeBSD/amd64 跑的驅動程式,在這篇裡面有提到最新的 195.22 有支援64bit,而支援的版本則是 FreeBSD 8.0/7.3 。當然其實是不需要等 7.3 推出,只要跟著 RELENG_7 跑現在的版本應該就能用了,不過到目前為止(2009/12/07)  ports 裡面是沒有的,所以得手動下載後編譯及安裝,最後再跑 nvidig-config 弄一個新的 xorg.conf 即可。

手上沒有啥特別需要跑 OpenGL 的程式,倒是 KDE  SC 4 的介面可以開 OpenGL 加速之後用起來比 xrender 順很多,用一張舊的 7600GT 跑起來沒遇到什麼太大問題,大致來說讓人非常滿意。

UPDATE:  沒多久之後就進 ports 了

Posted in FreeBSD. Tags: , , , , . 1 Comment »