顯示具有 FreeBSD 標籤的文章。 顯示所有文章
顯示具有 FreeBSD 標籤的文章。 顯示所有文章

星期四, 十月 02, 2008

FreeBSD 6.X升級到7.0的錯誤訊息

有一台電腦從FreeBSD 6.X升級到7.0,結果每次登入登出都會出現:
login: in openpam_dispatch(): pam_nologin.so: no pam_sm_authenticate()
查了以後發現是/etc/pam.d裏的檔案不會因為mergemaster或make installworld更新。
解決方法:
#cd /usr/src/etc/pam.d
#make install

星期三, 七月 02, 2008

增加廉價磁碟陣列

公司的Mail Server空間不足,愈來愈多user喜歡用webmail,都選擇leave mail on server,而且開始丟大檔上去當web hd。

因為長官不想花大錢,但是鳥毅希望至少有Raid 1,所以去找SR3620-2S-SB2這台廉價磁碟陣列。原來的Mail Server用外接SCSI HD很穩定,但最近聲音變大,可能快到大限,再加上空間不太夠,用得更加心驚膽顫。用外接式硬碟不但可以在當機時移機容易,而且可以有效降低電腦機體內的廢熱,很想在家裏也買一台。

用SATA硬碟(750G)硬體成本大概只有SCSI(73G)的一半,容量卻大了10倍,想想google和yahoo用PC當server實在有道理。(Kimo用的是貨真價實的Server,不是PC喲~)買SR3620實在很後悔,早知道就買SR3610-2S-SB2;因為SR3620只有燈號,害我重灌一次。

原來買的HD有一顆出問題,所以SR3620開機後開始閃紅燈,而且發出非常大的聲響,幸好有多買一顆HD,換了後卻還要電腦開機後才會開始rebuild,而不是SR3620開機就開始rebuild,電腦重開機SR3620還會重新rebuild...

所以第一次安裝FreeBSD時速度非常慢,以為是FreeBSD不支援,重灌時就飛快,至於多工能力就等上線測試了。

星期五, 六月 20, 2008

FreeBSD的PAE與某些driver不合

FreeBSD Handbook8.5 The Configuration File中8.5.1 Large Memory Configurations (PAE)的說明:

Note: The PAE support in FreeBSD is only available for Intel IA-32 processors. It should also be noted, that the PAE support in FreeBSD has not received wide testing, and should be considered beta quality compared to other stable features of FreeBSD.

PAE support in FreeBSD has a few limitations:

  • A process is not able to access more than 4 gigabytes of VM space.

  • KLD modules cannot be loaded into a PAE enabled kernel, due to the differences in the build framework of a module and the kernel.

  • Device drivers that do not use the bus_dma(9) interface will cause data corruption in a PAE enabled kernel and are not recommended for use. For this reason, a PAE kernel configuration file is provided in FreeBSD which excludes all drivers not known to work in a PAE enabled kernel.

  • Some system tunables determine memory resource usage by the amount of available physical memory. Such tunables can unnecessarily over-allocate due to the large memory nature of a PAE system. One such example is the kern.maxvnodes sysctl, which controls the maximum number of vnodes allowed in the kernel. It is advised to adjust this and other such tunables to a reasonable value.

  • It might be necessary to increase the kernel virtual address (KVA) space or to reduce the amount of specific kernel resource that is heavily used (see above) in order to avoid KVA exhaustion. The KVA_PAGES kernel option can be used for increasing the KVA space.


看完真是沒力,果然在編譯核心時跑到/usr/src/sys/dev/advansys就出問題;於是改用預設的PAE Configuration file,就可以編譯過。重開機原本以為會抓不到我的網卡之類,結果還是全都抓得到呀!FreeBSD真是太神奇了...

星期五, 六月 06, 2008

resolv.conf裏的順序

由於在公司內部有關係企業的網域,因此在Ubuntu的/etc/resolv.conf裏必須設定search網域,但今天用ie6(真的IE6,以wine執行)查詢某些資料時找不到站台,才發現順序居然有關係。

原本我用Ubuntu的介面就有設定,但/etc/resolv.conf裏順序為search,nameserver,domain;手動把順序改成domain,nameserver,search後就找得到,特此誌之。

星期一, 四月 21, 2008

pfSense綁多個IP

鳥毅在WIPFW測試提過,在Windows沒有花錢買像樣的防火牆根本達不到公司的需求,所以評估後決定使用功能強大的pfSense

在ADSL上網已經完全沒問題,效能遠高於Win2K跑ICS+Comodo Firewall。但用在對外網站時,遇到問題了:根據這裏的說法,pfSense無法在一張網路卡上Bind多個IP。敝公司對外有好幾個IP,總不能叫mail和www那些共用一個IP吧?當然要放在DMZ靠firewall轉埠呀!

所以只好在設定完成後,進入Console,按8進入Shell。
#vi /etc/rc.local
alias de0 10.0.1.104/32 alias
alias de0 10.0.1.105/32 alias

由於已經不是正常的FreeBSD,不會執行rc.local全在意料中。接著修改 /etc/rc ,在 echo "Bootup complete" 前加上一行 /etc/rc.local ,搞定!

這不是什麼好方法,希望pfSense能夠盡快加上多IP的支援呀....

星期一, 三月 31, 2008

VPC 執行FreeBSD的錯誤

用VPC或VMWare執行FreeBSD,有可能會出現"calcru:..."的錯誤訊息,此時看沒用,因為太舊了:P 要看這裏

解決方法:在 /etc/sysctl.conf 加上 kern.timecounter.hardware=TSC 就解決了。雖然在開機時還是會跳出一陣子的calcru的訊息,不過開機完也就沒事了。

星期一, 三月 17, 2008

FreeBSD 7.0 果然比較猛

忘記把FreeBSD 6.3的畫面抓下來 Orz 不過,在升級前我有確認過,Loading沒有跑到0.00過,不知道是不是FreeBSD 7.0 top的Bug呀XD

總之,就是拼了!在下把Mail Server從FreeBSD 6.3升級到7.0,再跑一次portupgrade -af,把所有的套件都升級,對,不是portupgrade -afP。以下是top畫面:



星期二, 三月 11, 2008

升級到FreeBSD 7

前陣子才把Mail server升到FreeBSD 6.3,今天就先把Firewall升到FreeBSD 7.0。

這次升級因為在mergemaster就掛了,所以仍然得用光碟升級安裝。裝好後檢查一下原來的設定檔有沒有被更動,再製作個內含ALTQ的kernel就上線,目前沒什麼問題。

聽說FreeBSD 7.0有比較快,等我把Mail Server也換掉應該會有感覺XD

參考:
What's New in FreeBSD 7.0
Review of FreeBSD 7

Update:剛才看一下,loading還真是輕呀(印象中以前是0.01~0.03左右)
freebsd7firewall

再Update:FreeBSD 7.0-RELEASE Announcement有寫,FreeBSD 6.3以後內建freebsd-update,沒有的也沒關係,升級步驟:
  1. # fetch http://people.freebsd.org/~cperciva/freebsd-update-upgrade.tgz
  2. # fetch http://people.freebsd.org/~cperciva/freebsd-update-upgrade.tgz.asc
  3. # gpg --verify freebsd-update-upgrade.tgz.asc freebsd-update-upgrade.tgz
  4. # tar -xf freebsd-update-upgrade.tgz
  5. # sh freebsd-update.sh -f freebsd-update.conf -r 7.0-RELEASE upgrade
  6. # sh freebsd-update.sh -f freebsd-update.conf install
  7. # shutdown -r now
  8. # sh freebsd-update.sh -f freebsd-update.conf install
  9. # portupgrade -faP
  10. # sh freebsd-update.sh -f freebsd-update.conf install
  11. # shutdown -r now
根據 Rebuilding world 原來我升級時把順序弄錯了,正確步驟是:
  1. # make buildworld
  2. # make buildkernel
  3. # make installkernel
  4. # reboot
  5. # mergemaster -p
  6. # make installworld
  7. # mergemaster
  8. # reboot
個人經驗,一定要再跑一次 portupgrade -faP

星期二, 二月 05, 2008

測試RoundCube Webmail

繼匿名的大大提供訊息後,讓鳥毅想再次測試RoundCube Webmail
上次測試應該是將近一年前,當時的中文似乎要自己安裝,而且記得AJAX切換有些問題。

這次從FreeBSD ports安裝沒遇到問題,在httpd.conf設定好alias後,再設定/usr/local/www/roundcube/config/db.inc.php及 /usr/local/www/roundcube/config/main.inc.php
最後將資料庫設好就可以使用。第一次登入是英文介面,可以自己更改成中文,這部份以前要自己下載語系檔。郵件資料夾的中文自成系統,和原有的編碼不合?很怪異。

感想:界面比較炫,AJAX效果不錯。但是有點慢,而且功能仍然比不上OpenWebMail。因此目前暫時無法取代OpenWebMail


裝好後居然不能寄信,CPU飆到100%,懶得管了...

星期一, 二月 04, 2008

升級到FreeBSD 6.3

FreeBSD在一月份就推出6.3版,原本以為只是bug fix,無意中看到才知道有新功能lagg和freebsd-update。rafan兄在有介紹6.3更新的部份。
前兩天敝公司的機房洗冷氣,不知怎樣firewall的網路線就鬆了,此時lagg就可以派上用場呀....所以決定趁著過年,把所有FreeBSD都升到6.3。至於7.0,我要等到7.1以後才敢升。

升級Perl踩到陷阱

今天才發現Openwebmail有新版的ports,結果在升級Perl時就掛了。
找了半天才發現是因為這台從4.11升上來的FreeBSD某些package連結到舊版libc,用portupgrade -a升完後,編譯Perl還是有問題。最後看compile時的message,才知道libgdbm會找libc.so.4。
所以就手動把/usr/ports/databases/gdbm重新build安裝一次,就可以升級perl-5.8.8_1。

星期四, 十一月 29, 2007

KDE升級編譯問題

在FreeBSD升級KDE時遇到/usr/ports/x11/kdelibs3編譯時發生錯誤,爬文後才知道是/usr/ports/x11/kdelibs3並沒有先升級;所以要在/usr/ports/x11/kdelibs3先make deinstall install clean。(類似問題)

看來這問題已經出現蠻久了,主要是因為維護者設定kdelib在某幾個版本內算相容,事實則不然。希望維護者把Makefile裏LIB_DEPENDS的kdelibs版本寫成和kdebase3一樣,否則仍然會常出現呀 Orz (在下寄了封mail,希望有人處理。但是照以往的經驗,應該沒人回信

Update:有位老兄回了,但我的英文太爛,他似乎沒搞懂我的意思,因此再寫一封給他。

Update:這位老兄說,應該不會發生這種事,因此可能是因為我先灌PCBSD再portupgrade。看來我不適合用PCBSD呀~

星期四, 十一月 22, 2007

Ubuntu 7.10和ASUS L4不合

在下有一台Asus L4000,原本裝Ubuntu 7.04過著幸福快樂的日子,這幾天就把它升級到7.10。升級完就開始常當機;原本以為是系統裝爛,於是重新安裝更慘,安裝到一半就掛點。

鳥毅也算是重灌狂人等級,一輩子都在追求新版軟體;不想再灌回Ubuntu 7.04,於是就抓PCBSD試試。

忠實讀者會問說:耶...不是才說不用PCBSD嗎? 因為現在FreeBSD的jdk6已經成熟,而PCBSD骨子裏還是FreeBSD,只是裝個有UI的FreeBSD,省掉一些make的時間,如此而已。

目前的進度是:在PCBSD的KDE介面下,只用了200~300M的RAM,但是套件實在少得可憐,還是得自己從ports安裝套件 Orz。雖然啟動Compiz,仍然沒特效,應該是不支援sis 650吧?

好消息是:CPU的loading非常輕,可能是跑的daemon也少啦...至少不像在Ubuntu 7.10般保持在100%的loading。現在就只能慢慢地等待從ports build Gnome囉...

Update:最近是帶賽嗎?又遇到網路有問題,開機十次有九次都抓不到,ifconfig sis0顯示
media: auto(none)
幸好是我熟悉的FreeBSD,猜想是用auto找錯,於是就在rc.conf把
ifconfig_sis0="inet 192.168.1.10 netmask 255.255.255.0"
改成
ifconfig_sis0="inet 192.168.1.10 netmask 255.255.255.0 media UTP"

星期三, 十一月 07, 2007

FreeBSD的Java 6

我在七月時寫找不到FreeBSD可用的JDK 6,結果好像八月(還是九月)時ports就有jdk 1.6.0。但當時寫還是未成熟版本,勿用在production環境,所以也不想裝。
FreeBSD Java™ Project現在也還看不到1.6,要看Java 2 on FreeBSD

看了jserv老大的Java SE/ME GPL 釋出才知道OpenJDK的source並不是完整的jdk,因此只能用Sun JRL版權的java source。
把該抓的patch和Java source檔等等放到 /usr/ports/distfiles,就可以到/usr/ports/java/jdk16輸入make install囉~

經過一夜...
#java -version
java version "1.6.0_02-p2"
Java(TM) SE Runtime Environment (build 1.6.0_02-p2-root_07_nov_2007_10_57-b00)
Java HotSpot(TM) Server VM (build 1.6.0_02-p2-root_07_nov_2007_10_57-b00, mixed mode)

結果:So far so good,跑Tomcat 6很正常,看來是足以勝任production了。

Java在FreeBSD的移植速度還是比OSX快,Leopard居然還沒有正式的Java 6呀...

P.S. 會想裝Java是希望能找到取代很遜的COM+SQL的workflow方案。許多opensource workflow engine都是based on Java,可以參考這裏。ports裏的Kaffe還是 1.1.7.r1,所以我暫時不考慮囉...

星期五, 八月 31, 2007

FreeBSD複製到另一顆硬碟

平常FreeBSD複製我都直接用dd, dd if=/dev/ad0 of=/dev/ad2 ,但這樣partition的大小必須相同。

為了將現有的FreeBSD複製到另一顆partition不同大小的硬碟,所以特地參考
FreeBSD使用手冊 Disks 18.3.2.1 Using Slices
# dd if=/dev/zero of=/dev/ad2 bs=1k count=1
# fdisk -BI ad2 #Initialize your new disk
# bsdlabel -B -w ad2s1 auto #Label it.
# bsdlabel -e ad2s1 # 可以參考現有的partition編輯
# newfs /dev/ad2s1a # Repeat this for every partition you created.
# mount /dev/ad2s1a /mnt
# cd /mnt
# dump -f- / | restore -f- -r
多分區時挺麻煩的,平常還是用sysinstall分割比較方便。
參考資料:
FreeBSD使用手冊 Disks
如何將Linux或FreeBSD複製到另一顆硬碟
Partimage SystemRescueCd
Gnome Partition Editor
g4u

星期三, 八月 01, 2007

FreeBSD桌面輸給Linux

前幾天看到Leeym說Yahoo總部已經換成Linux桌面,剛又看到舊聞甲骨文取代紅帽 搶得雅虎Linux商機,原來連愛用FreeBSD的Yahoo都不用FreeBSD當桌面,實在是整個Orz。

不過我為了能夠好好跑Java,也是在NB裝Ubuntu而不是FreeBSD,看來只有像朋友Dustin這種高手,才有辦法用FreeBSD當桌面呀!

Update:原來Yahoo在2006年已經決定全面轉移到Linux,只是時間早晚問題。

星期三, 七月 18, 2007

找不到FreeBSD可用的JDK 6

實在很誇張,連OSX都有beta的Java 6 SDK可用(JDK 6),在FreeBSD上居然仍然停留在jdk 1.5,連Linux版的port都沒有。這裏的Diablo也是1.5,JDK 7都快出來了耶!

本來以為有OpenJDK就會比較快有新版,後來找到Greg Lewis 老大在這裏說:
There are new pieces of code and altered pieces of code that need additional porting and many of the changes need to be sanity checked to make sure they still make sense.
看來還有得等了。jserv老大參與的kaffe也很久沒更新,難道真的要改用mono

星期二, 七月 17, 2007

mount_smbfs錯誤

在掛Windows網芳時出現
mount_smbfs: can't set locale ''
mount_smbfs: smb_lib_init: can't initialise locale
時,只要把 LC_ALL 和 LANG 設成C就可以。

sh:
export LC_ALL=C
export LANG=C

tcsh:
setenv LC_ALL C
setenv LANG C

HAVP DNS Error

HAVP最近似乎水土不服,一天到晚出現DNS Error,害我被財務長叫去夾卵蛋。不知道為什麼換成0.86版後常常會需要reload才會正常load網頁,尤其是奇摩股市。所以只好惡搞囉...

印象中用domain name找ip應該叫gethostbyname,果然在sockethandler.cpp第520列找到,加上
// For avoid dns error
struct hostent * MyGetHostByName(const char *name)
{
struct hostent *result = NULL;
result = gethostbyname(name);
if(result == NULL)
{
// Wait for 0.5 sec, 1 second = 1 million microseconds
usleep(500000);
//try again
result = gethostbyname(name);
}
return result;
}
再把
else if ( (server = gethostbyname( domainT.c_str() )) )
換成
else if ( (server = MyGetHostByName( domainT.c_str() )) )
如果再出現,我就得再加幾個dirty檢查,總有一天會成功的吧?!

剛看到gslin這篇,再仔細看gethostbyname man page的bug:
BUGS
These functions use a thread-specific data storage; if the data is needed
for future use, it should be copied before any subsequent calls overwrite
it.

Though these functions are thread-safe, still it is recommended to use
the getaddrinfo(3) family of functions, instead.

Only the Internet address format is currently understood.
這種鳥事誰會知道呀!所以出現錯誤是因為被另一個process呼叫時蓋掉了?

星期一, 七月 16, 2007

Bye bye! FreeBSD 4

自從FreeBSD 4.11無法從母站下載新的Ports Index DB,就陷入痛苦的package版本錯亂時代。眼尖的同事早就發現最近的安全性更新都不再提供FreeBSD 4的更新。

為了要安裝新套件,只好勇敢的把沒有備援機的Server用CD升級成6.2 Release。這次升級雖然有用VM模擬過,但畢竟是用了六年的系統,一堆legacy so檔,升級時Server上的筆電用cdrom又會挑片,痛苦指數100%呀!這次升級遇到許多的問題:
  1. 升級完由於某些自動機制沒搞好,帳號必須自己再手動把master.passwd從/var/tmp/etc裏和新的帳號合併,這點我還可以接受。
  2. 再來則是升級完pop3馬上不能用,升級也發生錯誤,後來發現舊套件似乎相依性有問題,移除qpopper再重新編譯安裝後解決。
  3. 接著是發現mysql和postgresql都跑不起來,也只好重新安裝。在perl升級的過程中,才是真正的地獄,連compile都有錯誤,是真的Dll Hell呀!想到用別台FreeBSD 6.2,做出一個tbz丟過來安裝,似乎還能用,沒想到馬上openwebmail就掛了,維護者leeym最近到米國似乎很忙,要問也找不到人呀!雖然用了很多怪招,但一時之間太多舊的package需要升級,只好先把speedy-cgi關掉,才暫時化解危機,隔一天才看到這裏的解法。
    portupgrade -f "perl-5.8.*" -m "ENABLE_SUIDPERL=yes" -r "perl-5.8.*"
    再編輯
    /usr/local/www/cgi-bin-dist/openwebmail/etc/defaults/suid.conf

    has_savedsuid_support   yes → no

  4. 套件更新的過程中又遇到openssl升級的問題,openssl升級後apache之類與SSL相關的程式全掛,但因為升級順序必須自己手動重新編譯。
所以到現在過了兩天,那台機器仍在辛苦的更新套件中。敬告線上有服務的朋友,有機器時還是安裝在新硬碟搬過來比較實際,鳥毅是因為沒機器用才這樣惡搞。

如果真的照說的下 portupgrade -urRfa,大概三天三夜也跑不完,沒事千萬不要加-Rrfa,用 -Rrua,再手動更新一些套件就應該夠了。

參考:
[續] FreeBSD port tree 的保養: portupgrade 的用法
upgrade Perl with portupgrade
[FreeBSD] portupgrade 可能出現的問題和解決方法