freebsd的優缺點
BSD和SYSV是世上最正統的UNIX操作系統,在LINUX出現之前,他們統治了整個UNIX世界。也正因為此,這兩個最正統的UNIX核心流派都在實踐中積累豐富的經驗。SYSV偏向于商業,BSD更偏向于自由和實用。
現在,本文只討論BSD流派最活躍的發行版FreeBSD。FreeBSD作為最重要的一個BSD發行版,它保持了BSD自由和實用的原則。但亦因為此而忽略很多商業的考慮的相應的功能。憑藉我自己多年UNIX的使用經驗,列出一些BSD的優勢與不足,希望以此作為讀者的參考。
優點:
網絡:
FreeBSD 的網絡性能非常好,可以同時處理海量的網絡請求,這使 BSD 非常適合作為防火墻的環境。另外,在網絡聊天服務器,如 IM 這種應用上,FreeBSD 也是很合適的選擇。網易的 POPO 聊天軟件服務器端就是在 FreeBSD 下開發并投入到實際環境中使用的,通過對內核的修改,可以輕松支持數以萬計的用戶連接,要注意,是永久性的連接,除非用戶點擊注銷按鈕。
內存:
你 會發現你服務器上的內存會被 FreeBSD 很好地利用,以使你的服務達至最佳的狀態。FreeBSD 不會因為將過多的內存用于磁盤 CACHE 而使更重要的程序獲取不到物理內存而讓系統使用 SWAP。在實際的環境中,我就遇到過 LINUX 為保持磁盤的 CACHE,而讓新任務使用 SWAP,導致新任務執行時間大大拉長。在執行 swapoff -a 操作后,運行同樣的新任務只需要原來時間的一半。而系統并沒有因為關閉 SWAP 而停機,表示物理內存并沒有因為新任務而被耗盡。
一個例子:
Memcached 是一個非常出眾的基于內存的緩存服務器。它可以為被其支持的程序語言提供串行化數據保存的功能,這樣可以讓同一份數據被多臺服務器共享,而更重要的是,它的速度非???。
我 可以利用 PHP 或 JAVA 從數據庫中獲取數據結果集,然后將結果集的內容保存進 Memcached,其他服務器上的程序同樣可以相應的 key 從 Memcached 中獲得相同的拷貝。在分布式的環境,這種需求非常明顯。我自己也嘗試當 SESSION 數據保存至 Memcached 而無需為共享 SESSION 數據而專門架設一臺 MYSQL 數據庫。
在利用 Memcached 作為數據的中心點,網絡的流量會非常大,內存的使用會非常頻繁,基本上不與磁盤打交道,而且整個系統的穩健性要求非常高。在這種應用需求下,FreeBSD 自然地成為首選。因為它為高效的網絡性能,更合理的內存利用率,和穩健的系統基礎。
缺點:
文件系統:
FreeBSD的文件系統屬于中上水平,但未達至企業級的應用需求。主要體現于文件系統本身存在的脆弱性。在高負載的情況下,文件系統存在有崩潰的可能性。需要注意的是,導致這樣的結果,也有可能由于磁盤控制器(SCSI,RAID等等)驅動程序本身導致的。沒有原廠設備驅動程序是個比較大的問題。
網絡:
FreeBSD的網絡性能是無用置疑的!但是網卡驅動(是的,設備驅動是個很重要的因素)不完善會導致性能和穩定性大打節扣。雖然這與FreeBSD的核心沒有關系,但對于一個可提供服務的整體來說,驅動程序卻是一個很重要的組成部份。
另外,由于一個網卡接口上的線的松動,有可能導致網絡中斷。而一些商業化的UNIX操作系統可以在當主網卡不可用時將該網卡上的IP轉移至可提供正確連接的網卡上。
多處理器(超線程)支持:
在6.0出版之前,FreeBSD對多處理器支持是不盡人意的。INTELCPU提供有HT(超線程)功能。FreeBSD在HT開啟的狀態下會比在關閉的狀態下差。我忘記了超線程的原理,只記得擁有超線程功能的CPU在過多的切換情況下性能就會降低,不過在什么時候切換和切換些什么我忘記了。FreeBSD在開啟HT后性能會變差,可能與這個有關。
FreeBSD圖形界面配置
系統是剛裝的FreeBSD8.0Release,athlon3000+處理器,Nvidia6100集成顯卡,明基FP71G顯示器,USB鼠標,PS2鍵盤
首先當然是Xorg的安裝,可以用下面的命令安裝
pkg_add -r xorg
我輸入上面命令后提示xorg已經安裝,應該是在裝系統時已經安裝了
然后輸入
startx
發現可以成功的啟動X,不過不能響應鍵盤鼠標的輸入,使用Xorg -configure產生的xorg.conf文件反倒不能啟動X(啟動X后可以用ctrl+alt+backspace退出圖形界面)
安裝kde4
pkg_add_r kde4
同樣的,系統提示已經安裝kde4
然后告訴X server 啟動這個應用程序來代替默認的窗口管理器,這可以通過編輯.xinitrc來完成:
echo “exec /usr/local/kde4/bin/startkde” 》 ~/.xinitrc
現在,輸入startx就可以啟動kde桌面環境了,不過分辨率還不夠,另外,我的USB鼠標還是不能用
為了使每個用戶都能正常進入kde4桌面環境,需要對每個用戶都進行上面的配置(.xinitrc文件)
為了提供圖形化的登錄界面,還需要編輯/etc/ttys文件,修改其中的ttyv8項,將其改為下面的樣子:
ttyv8 “/usr/local/kde4/bin/kdm -nodaemon” xterm on secure
然后輸入reboot重啟,就能自動出現圖形登錄界面了,不過郁悶的是似乎不接受我的鼠標鍵盤輸入,
這個問題手冊上沒寫,GOOGLE了一下,改了一堆亂七八糟的配置,其中被改動的文件有:
1)/etc/rc.conf,改到最后是這個樣子:
# -- sysinstall generated deltas -- # Sat Dec 12 06:09:48 2009
# Created: Sat Dec 12 06:09:48 2009
# Enable network daemons for user convenience.
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from /etc/defaults/rc.conf.
hostname=“FreeBSD.domain”
ifconfig_rl0=“DHCP”
inetd_enable=“YES”
keymap=“us.iso” # 《=鍵鼠配置可能是從這里開始的
moused_enable=“NO”
#moused_port=“/dev/psm0”
moused_port=“dev/ums0”
usbd_enable=“YES”
usb_flags=“”
moused_type=“NO”
dbus_enable=“YES”
hald_enable=“YES” # 《=到這里結束
nfs_client_enable=“YES”
nfs_server_enable=“YES”
2)/etc/devd.conf,搜索moused找到下面的部分:
attach 100 {
device-name “ums[0-9]+”;
action “/etc/rc.d/moused quietstart $device-name”;
};
detach 100 {
device-name “ums[0-9]+”;
action “/etc/rc.d/moused stop $device-name”;
};
將其修改為:
attach 100 {
device-name “ums[0-9]+”;
#action “/etc/rc.d/moused quietstart $device-name”;
action “/usr/sbin/moused -p /dev/ums0 -t auto -I /var/run/moused.pid”;
};
detach 100 {
device-name “ums[0-9]+”;
#action “/etc/rc.d/moused stop $device-name”;
action “echo ‘(unplug)’ 》 /var/run/moused.pid”;
};
到這里,已經可以響應鍵鼠的輸入了,但是分辨率太低的問題還是沒解決,關鍵是按照我前面的步驟,我的/etc/X11/下還沒有xorg.conf呢
只好回到前面,開始修改/root/xorg.conf.new,修改其中的Section “Screen”部分為如下的樣子
Section “Screen”
Identifier “Screen0”
Device “Card0”
DefaultDepth 24
Monitor “Monitor0”
SubSection “Display”
Viewport 0 0
Depth 24
Modes “1280x1024” “800x600” “640x480”
EndSubSection
EndSection
其中1280x1024是我的顯示器的分辨率
然后startx,很不幸,系統提示只能啟動一個X server,怒了,修改/etc/ttys中的ttyv8項:
ttyv8 “/usr/libexec/getty Pc” cons25 on secure
#ttyv8 “/usr/local/kde4/bin/kdm -nodaemon” xterm on secure
重啟。
開始重新搗騰X配置
運行Xorg -config xorg.conf.new,不行,于是
cp xorg.conf.new xorg.conf.test
vi xorg.conf.test
將其余部分全部刪除,只保留Section “Screen”部分
還是不能啟動X,報以下錯誤:
(EE) Failed to load module “fbdev” (module does not exist, 0)
上網求助,在
http://www.linuxquestions.org/questions/bsd-17/x-not-starting-on-freebsd-6.1-release-504004/
找到建議
#cd /usr/ports/x11/nvidia-driver/ && make install clean
但是郁悶的是ports中的驅動只支持32位系統,而我裝的是amd64版,上官方網站下驅動吧
官方下載的驅動還不支持8.0系統,哎……
尋找直接安裝32位軟件的辦法無果后,直接裝了個xf86-video-nv
cd /usr/ports/x11-drivers/xf86-video-nv
make install clean
完成后繼續運行
Xorg -config xorg.conf.new
還是不行
重新運行Xorg -configure之后嘗試,繼續失敗
不管了,直接將xorg.conf.new復制到/etc/X11
cp ~/xorg.conf.new /etc/X11/xorg.conf
然后對其中相應的配置做了改動,比如刷新率,分辨率等
輸入startx,終于把分辨率調好了,但是新問題又來了,我的鼠標呢?鼠標移動的時候倒是可以看到偶爾有地方變量,并且可以點擊,說明鼠標輸入還是有的,但是指針不見了
這個問題我以前遇見過,修改xorg.conf中的 Section “Device”部分,在下面增加一句:Option “HWCursor” “false”,重啟x window 就可以看見了
最后將/etc/ttys中ttyv8項修改回來,reboot一下,一切都是那么美好,唯一有點瑕疵的是任務欄右側沒有頂到屏幕邊沿,這個直接拖一下就好了
明天繼續整中文顯示
附:最后我的xorg.conf
Section “ServerLayout”
Identifier “X.org Configured”
Screen 0 “Screen0” 0 0
InputDevice “Mouse0” “CorePointer”
InputDevice “Keyboard0” “CoreKeyboard”
EndSection
Section “Files”
ModulePath “/usr/local/lib/xorg/modules”
FontPath “/usr/local/lib/X11/fonts/misc/”
FontPath “/usr/local/lib/X11/fonts/TTF/”
FontPath “/usr/local/lib/X11/fonts/OTF”
FontPath “/usr/local/lib/X11/fonts/Type1/”
FontPath “/usr/local/lib/X11/fonts/100dpi/”
FontPath “/usr/local/lib/X11/fonts/75dpi/”
EndSection
Section “Module”
Load “dbe”
Load “dri”
Load “dri2”
Load “extmod”
Load “glx”
Load “record”
EndSection
Section “InputDevice”
Identifier “Keyboard0”
Driver “kbd”
EndSection
Section “InputDevice”
Identifier “Mouse0”
Driver “mouse”
Option “Protocol” “auto”
Option “Device” “/dev/sysmouse”
Option “ZAxisMapping” “4 5 6 7”
EndSection
Section “Monitor”
Identifier “Monitor0”
VendorName “Monitor Vendor”
ModelName “Monitor Model”
HorizSync 31.5-64.0
VertRefresh 56.0-65.0
Option “dpms”
EndSection
Section “Device”
### Available Driver options are:-
### Values: : integer, : float, : “True”/“False”,
### : “String”, : “ Hz/kHz/MHz”
### [arg]: arg optional
#Option “SWcursor” # []
#Option “HWcursor” # []
#Option “NoAccel” # []
#Option “ShadowFB” # []
#Option “UseFBDev” # []
#Option “Rotate” # []
#Option “VideoKey” #
#Option “FlatPanel” # []
#Option “FPDither” # []
#Option “CrtcNumber” #
#Option “FPScale” # []
#Option “FPTweak” #
#Option “DualHead” # []
Identifier “Card0”
Driver “nv”
VendorName “nVidia Corporation”
BoardName “C51G [GeForce 6100]”
BusID “PCI:0:5:0”
Option “HWCursor” “false”
EndSection
Section “Screen”
Identifier “Screen0”
Device “Card0”
Monitor “Monitor0”
DefaultDepth 24
SubSection “Display”
Viewport 0 0
Depth 1
Modes “1280x1024”
EndSubSection
EndSection
Section “ServerLayout”
Identifier “X.org Configured”
Screen 0 “Screen0” 0 0
InputDevice “Mouse0” “CorePointer”
InputDevice “Keyboard0” “CoreKeyboard”
EndSection
Section “Files”
ModulePath “/usr/local/lib/xorg/modules”
FontPath “/usr/local/lib/X11/fonts/misc/”
FontPath “/usr/local/lib/X11/fonts/TTF/”
FontPath “/usr/local/lib/X11/fonts/OTF”
FontPath “/usr/local/lib/X11/fonts/Type1/”
FontPath “/usr/local/lib/X11/fonts/100dpi/”
FontPath “/usr/local/lib/X11/fonts/75dpi/”
EndSection
Section “Module”
Load “dbe”
Load “dri”
Load “dri2”
Load “extmod”
Load “glx”
Load “record”
EndSection
Section “InputDevice”
Identifier “Keyboard0”
Driver “kbd”
EndSection
Section “InputDevice”
Identifier “Mouse0”
Driver “mouse”
Option “Protocol” “auto”
Option “Device” “/dev/sysmouse”
Option “ZAxisMapping” “4 5 6 7”
EndSection
Section “Monitor”
Identifier “Monitor0”
VendorName “Monitor Vendor”
ModelName “Monitor Model”
HorizSync 31.5-64.0
VertRefresh 56.0-65.0
Option “dpms”
EndSection
Section “Device”
### Available Driver options are:-
### Values: : integer, : float, : “True”/“False”,
### : “String”, : “ Hz/kHz/MHz”
### [arg]: arg optional
#Option “SWcursor” # []
#Option “HWcursor” # []
#Option “NoAccel” # []
#Option “ShadowFB” # []
#Option “UseFBDev” # []
#Option “Rotate” # []
#Option “VideoKey” #
#Option “FlatPanel” # []
#Option “FPDither” # []
#Option “CrtcNumber” #
#Option “FPScale” # []
#Option “FPTweak” #
#Option “DualHead” # []
Identifier “Card0”
Driver “nv”
VendorName “nVidia Corporation”
BoardName “C51G [GeForce 6100]”
BusID “PCI:0:5:0”
Option “HWCursor” “false”
EndSection
Section “Screen”
Identifier “Screen0”
Device “Card0”
Monitor “Monitor0”
DefaultDepth 24
SubSection “Display”
Viewport 0 0
Depth 1
Modes “1280x1024”
EndSubSection
EndSection
Section “ServerLayout”
Identifier “X.org Configured”
Screen 0 “Screen0” 0 0
InputDevice “Mouse0” “CorePointer”
InputDevice “Keyboard0” “CoreKeyboard”
EndSection
Section “Files”
ModulePath “/usr/local/lib/xorg/modules”
FontPath “/usr/local/lib/X11/fonts/misc/”
FontPath “/usr/local/lib/X11/fonts/TTF/”
FontPath “/usr/local/lib/X11/fonts/OTF”
FontPath “/usr/local/lib/X11/fonts/Type1/”
FontPath “/usr/local/lib/X11/fonts/100dpi/”
FontPath “/usr/local/lib/X11/fonts/75dpi/”
EndSection
Section “Module”
Load “dbe”
Load “dri”
Load “dri2”
Load “extmod”
Load “glx”
Load “record”
EndSection
Section “InputDevice”
Identifier “Keyboard0”
Driver “kbd”
EndSection
Section “InputDevice”
Identifier “Mouse0”
Driver “mouse”
Option “Protocol” “auto”
Option “Device” “/dev/sysmouse”
Option “ZAxisMapping” “4 5 6 7”
EndSection
Section “Monitor”
Identifier “Monitor0”
VendorName “Monitor Vendor”
ModelName “Monitor Model”
HorizSync 31.5-64.0
VertRefresh 56.0-65.0
Option “dpms”
EndSection
Section “Device”
### Available Driver options are:-
### Values: : integer, : float, : “True”/“False”,
### : “String”, : “ Hz/kHz/MHz”
### [arg]: arg optional
#Option “SWcursor” # []
#Option “HWcursor” # []
#Option “NoAccel” # []
#Option “ShadowFB” # []
#Option “UseFBDev” # []
#Option “Rotate” # []
#Option “VideoKey” #
#Option “FlatPanel” # []
#Option “FPDither” # []
#Option “CrtcNumber” #
#Option “FPScale” # []
#Option “FPTweak” #
#Option “DualHead” # []
Identifier “Card0”
Driver “nv”
VendorName “nVidia Corporation”
BoardName “C51G [GeForce 6100]”
BusID “PCI:0:5:0”
Option “HWCursor” “false”
EndSection
Section “Screen”
Identifier “Screen0”
Device “Card0”
Monitor “Monitor0”
DefaultDepth 24
SubSection “Display”
Viewport 0 0
Depth 1
Modes “1280x1024”
EndSubSection
EndSection
評論
查看更多