Friday, February 29, 2008

Fedora Legacy 遺產計畫要終止了

今天瀏覽到 Fedora legacy 網站 http://www.fedoralegacy.org/
原因是這個計畫已經漸漸失去大家的關心 維護的人漸漸變少了
看到這個計畫終止 心中有點感觸 -- 畢竟他也曾經伴隨我一段時間

原本這個計畫曾經讓許多停留在 Redhat 7,8,9 的人可以繼續升級
但時代實在變化太快了 使用 Fedora Legacy 延續生命 現在看來反而是一種障礙

舉例 假設有一台主機使用 Fedora Core 3 + Legacy 而且常常進行更新
某一天 你想要把他升級成 Fedora Core 4 或是 Fedora Core 5 或是 RHEL
結果卻發現 你的 Fedora Core 3 + Legacy 裡面有些軟體是比你要轉換的系統還要新
按照 rpm / yum 升級處理的原則, rpm / yum 遇到比較舊的版本是不會更新的
結果你的系統就會被搞的一團亂,升級經驗比較淺的, 甚至可能會升級失敗(升到救援模式)

版本規劃我覺得對一個系統升級(upgrade)的規劃(plan)是非常重要
絕不能舊的作業系統版本的軟體的版次還比新的作業系統的軟體還要新
否則當作業系統升級時 版本衝突會非常嚴重 而失去原本使用 rpm 去維護版次的用意了

Thursday, February 28, 2008

squid - 使用 tempfs (RAM) 加速法

在大陸網站看到有人用 Memory 當 squid 的 cache_dir 效果不錯。自己試用之後真的非常快,只要開過的網頁再開,簡直可以說是"秒"殺,真的非常快。

只不過當 Ramdisk 使用快要滿了,在下載比較大的檔案會變的很慢,目前還在研究問題的原因。

0. cache_dir 的決定
通常是以主機記憶體大小的三分之一,例如記憶體 1G 則 cache_dir 大約 300M,如果記憶體剩餘的比較多,可能可以到二分之一。這個大小,可以依造執行的狀況,再調整。

1. 設定 tmpfs
有兩種方式
a. 在 /etc/fstab 加入
none /var/spool/squid tmpfs defaults,size=320M 0 0

b. 以指令方式建立
mount -t tmpfs -o size=320m none /var/spool/squid

有些人是用和 /tmp 綁定,目前我尚未使用所以無法評論,有空我實做後再把結論寫出來。


2. squid.conf.mem 設定
通常我會保留把原始設定保留起來,所以另外寫一個 squid.conf.mem 方便切換
cp /etc/squid/squid.conf.stand
舊的 squid.conf 複製一份為 squid.conf.stand
vi /etc/squid/squid.conf.mem

cache_mem 8
cache_dir ufs /var/spool/squid 320 8 256
cache_swap_low 85
cache_swap_high 95

說明:
cache momery 建議不要太大,預設是 8M ,這個大小已經足夠 1G 的 cache object使用,加上我們的 cache_dir 只有 320M。cache_dir 之前上面說明設定為 320 M。


有很多網站不管記憶體多少都將第一層目錄設成 16 這是錯的。應該是有人看到範例就直接抄過來,只改記憶體大小,後面兩個數字就直接照抄,完全不知道這個數字是怎麼來的。
cache_dir ufs /tmp 256 16 256


3. 啟動 script

為了啟動及關閉方便,寫了兩個 Script ,如果有機會,我再合併成一支執行。
vi startSquidMem.sh

#!/bin/sh

mount -t tmpfs -o size=320m none /var/spool/squid
chown squid:squid /var/spool/squid
mount /var/spool/squid
cp /etc/squid/squid.conf.mem /etc/squid/squid.conf
#squid -z
#建立 cache_dir, 不過現在的 /etc/init.d/squid 會檢查,如果沒有做會自己做)
/etc/init.d/squid start

vi stopSquidMem.sh
#!/bin/sh

/etc/init.d/squid stop
# 復原設定
cp /etc/squid/squid.conf.stand /etc/squid/squid.conf

Wednesday, February 20, 2008

一個穩定及高效的 Cacti Server

Cacti 大概許多網管都有使用過,她的優點是架構簡單(PHP,MySQL, SNMP)容易建置,而且提供功能正是網管的基本需求,所以幾乎已經成為網管必備的工具。

Cacti 就如一般網管系統,每五分鐘監控一次所有的系統,但隨著企業的網路不斷成長,需要監控的系統也不斷增加。Cacti 將會面臨 Process 過多, 記憶體不足, IO 過重等問題。如果在 cacti.log 看到 cacti 執行一次超過 300 秒,就表示你的系統已經超過負荷了。

以下將我一路慢慢摸索出來的心得分享給大家。

0. 選擇適當的作業系統
請用 CentOS 或 Red Hat Enterprise,不要使用 Fedora 或是 Redhat 9 之前的版本。Red Hat Enterprise 的 kernel 已經是最佳化了 ,非常適合當 Server 使用。我幫過一些人將 Fedora 或是 Redhat 轉換成 CentOS,他們都有明顯感受到校能的差異,尤其是在記憶體的使用上。

1. 使用 Spine (Cactid)
Spine 使用 C 來取代呼叫 cmd.php ,在效能上提升很多。官方網頁也寫說 ,如果執行 php poller.php 時間超過 300 秒,就需要使用 Spine 。使用方法很簡單,照著官方網頁作就可以了,不在此贅述。個人是覺得 cmd.php 的方法該廢掉了,目前存在的意義只是因為 php 讓 cacti 達成跨平台的特性。

2. filesystem 選擇
如果可以的話,切割一塊獨立的分割區掛載 cacti 。檔案格式 reiserfs 是比較好的選擇 比 ext3 還要快許多。另外,我們還可以使用 noatime 的選項掛載 。加了 noatime 後,系統不更新上次檔案的存取時間,這個資訊對 cacti 這個系統不是很重要 ,也不會有其他不良影響,對於繁忙的檔案系統,將可以大大減少檔案系統的 IO。

ex.
/dev/sda3 /var/www/html/cacti ext3 defaults,noatime 0 0

3. 加大 php 的記憶體使用的上限
vi /etc/php.ini
memory_limit = 32M (預設是 8mb, 可以改大一點)

4. 定期 optimize cacti 資料庫
不知道從甚麼時候開始 ,我家的 cacti 的 poller_output 會不明原因的長大,差不多兩個禮拜後,就會大到資料越寫越慢,直到無法更新。一開始我是每隔一段時間手動 "Truncate poller_output table" 後,就會繼續正常運作。但實在是太麻煩了,現在改成用 crontab 去 optimize 整個 cacti 資料庫。如果不會寫 SQL 的人,用 phpMyAdmin 執行 optimize 時,同時也會顯示執行 SQL 的語法,直接拿來用就好了。在設定 cron 請注意,請不要跟 cacti 同時執行,假設你的 cacti 執行一次要 4 分鐘,請在第四分鐘後再執行。

其實正常來說 poller_output 的資料只是暫存的,系統會自行清空。但很奇怪的是,MySQL 有時候並沒有馬上實體刪掉,而是註記成冗餘資料,依舊占據資料表的空間。可能是這種原因導致資料表越長越大,所以後來我改用 optimize 的原因。

國外有人也有遇到相關問題 不知他解了沒?
http://forums.cacti.net/about25515.html

除錯建議:
1. rebild poller cache 或是 truncate poller_output table, 不可以在 cacti 的 poller.php 運作時執行
2. 善用 cacti web 的 debug 功能,以方便一個一個排除問題。
3. 建立新的 device ,最好先用 snmpwalk 測試一遍,可以抓到資料再來設定也不遲。

ps. reiserfs 的作者面臨官司,後續版本前途不明啊。真可惜。

Tuesday, February 19, 2008

CentOS 線上升級疑難概論

不管是從 Fedora 升到 CentOS, 或是 CentOS 低版升到高版過程中,遇到的問題其實是差不多。

1. centos-release 第一個重要的主角
升級完可以考慮作一次 rpm --rebuild

重建完 rpm db 有助於在做 yum upgrade 時正確檢查相依性

2. glibc 三劍客 glibc , glibc-common, glibc-devel
glibc 是系統最重要的 Library, 如果 glibc 有問題系統將運作不正常,這三個套件最好要同時裝 保證萬無一失。但不管任何時刻,千萬不要移除 glibc ,移除了系統就馬上不能動了。
rpm -Uvh glibc* --nodeps --force

3. 可能的不訴之客 yum 及 rpm
這個兩有時候要先升級有時候又不用,一旦遇到免不了相依一番。

通常是下 yum 時,才發現指令無法執行,只好用 rpm 指令升級 yum 程式。有時候不幸的是 rpm -ivh yum* 也發生問題,可能是因為 rpmdb 毀損或是 rpm 的 lib 版本不對。
rpmdb 毀損用 rpm --rebuild 重建,rpm lib 版本不對 就只好從別台同等級作業系統 copy 過來了

如果要升級 rpm 及 yum 套件 先用 rpm -ivh 檢查相依性,確定所有套件都找齊了,放在同一個目錄才能用 rpm -Uvh * --nodeps 安裝,如果裝不進去,加個 --force 強迫安裝。

記得:若升級 rpm 表示 rpmdb 格式可能會變動喔,一定要做 rpm --rebuild 喔

4. 完整升級
先 vi 一個 /etc/yum-upgrade.conf 用這個設定檔來升級
原來系統的 /etc/yum.repo.d/CentOS-Base.repo 就不要動他
這樣升級完後就不用改回來

下面是 yum-upgrade.conf 請依照本身的狀態去改
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
installonlypkgs=kernel kernel-smp
tolerant=1
exactarch=1

[upgrade]
name=Centos upgrade
baseurl=http://mirror.centos.org/centos/4/os/$basearch/
exclude=mysql*

[update]
name=CentOS-$releasever - Updates
baseurl=http://mirror.centos.org/centos/4/updates/$basearch/

執行 yum -c /etc/yum-upgrade.conf upgrade 升級
如果過程遇到無法解決的相依性程式 就先 rpm -e xxx -nodeps

5. 開機前的檢查
請檢查 /etc/grub/grub.conf 指定 kernel 是否存在於 /boot 下
否則開不了機 那就功虧一簣了

6. 清理圾垃
先看看系統有哪些沒升級完成的套件
rpm -qa | grep FC
rpm -qa | grep fc
rpm -qa | grep legacy

然後用 rpm -e xxx 或是 rpm -e --justdb 刪掉
然後再用 rpm -ivh xxx 安裝

另外一個非常非常重要的事

升級只能前進不能後退,一旦決定升級只能去完成他。升級到一半的系統,裡面新舊程式混雜,是非常不穩定隨時都可能有問題的。就算是倒退,倒退程序絕對比繼續完成還要複雜,如果沒有保握,請先虛擬一個環境測試。

Fedora Core 3 to CentOS4.X

基本上 Fedora Core3 與 CentOS4 是同一代的,就如同 Fedora Core6 與 CentOS5 ,他們 kernel 的版本,以及 package 幾乎都是使用同樣的版本。

有一點要注意的是,如果你有使用 Fedora Legacy 可能會導致某些套件比 CentOS 4 還要新,如果嫌清理舊套件麻煩的話,我是蠻建議考慮再做一次升級,升級到 CentOS5。

以下是我的步驟,過程比別人複雜點,但是比較安全。

1. rpm --import RPM-GPG-KEY-centos4

2. rpm -Uvh --force centos-release-4-0.1.i386.rpm
版本大於4 即可, 如果要升到最新版 就從 CentOS4 目錄抓最新版來用

3. rpm -Uvh --force centos-yumconf-4-2.noarch.rpm
這可不裝 比較後面的 CentOS 4 沒有 centos-yumconf 套件

4. 安裝新的 kernel
rpm -ivh --force --nodeps kernel-2.6.9-5.0.3.EL.i686.rpm

5. 安裝 glibc
rpm -ivh --force --nodeps glibc*

6. rpm --rebuilddb
在升級前, 這已經是標準動作, 先重建 rpm db

7. 設定好 yum-upgrade.conf, 然後執行
yum -c /etc/yum-upgrade.conf upgrade

[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
installonlypkgs=kernel kernel-smp kernel-hugemem kernel-enterprise kernel-debug kernel-unsupported kernel-smp-unsupported kernel-hugemem-unsupported
tolerant=1
exactarch=1

[upgrade]
name=Centos upgrade
baseurl=http://mirror.centos.org/centos/4/os/$basearch/

[update]
name=CentOS-$releasever - Updates
baseurl=http://mirror.centos.org/centos/4/updates/$basearch/

8. 如果沒問題, 再安裝一次 kernel
rpm -ivh --force --nodeps kernel-2.6.9-5.0.3.EL.i686.rpm
先前安裝 kernel 並非完整安裝, 此次讓他再重新安裝一次

9. rpm --rebuilddb
升級完重新開機前 再作一次

10. yum update 看看有沒有其他的要更新.
建議開完再做啦 以免發生變數

11. 更改 /boot/grub/menu.lst 指定用新的 kernel 開機
有時候 kernel 安裝後可能會因為一些問題沒有更新到 grub.conf 如果沒有就要手動加入
順便要檢查一下 kernel , initrd 檔名正不正確

12. 重開機看看. (可能會移除一些舊的 driver, 加上一些新的 driver)

參考文章
http://www.harald-hoyer.de/linux/Switching-from-FC3-to-CentOS4.3
# rpm -Uvh
centos-release-4-3.2.i386.rpm
yum-2.4.2-2.centos4.noarch.rpm
python-elementtree-1.2.6-4.i386.rpm
python-sqlite-1.1.6-1.i386.rpm
sqlite-3.2.2-1.i386.rpm
centos-yumconf-4-4.5.noarch.rpm
lynx-2.8.5-18.2.i386.rpm
indexhtml-4-2.centos4.noarch.rpm
python-urlgrabber-2.9.6-2.noarch.rpm

Friday, February 15, 2008

SELinux VS Service 筆記

SELinux 已經列入 RHCE 考試 如果想要考試的就不能逃避
只是 SELinux 大部分的人沒碰過還是不很了解 要理解也是要花一段時間
所謂「知難行易」 既然了解並不容易 那就從邊作邊學開始吧

以下是我按照英文字母順序 整理出目前我已經知道的 SELinux

Vsftpd
#setsebool ftpd_disable_trans
#service vsftpd restart

Squid
#chcon -u system_u -t squid_cache_t /path/to/cached_ir
#service squid restart

WWW
#chcon -R -h -t httpd_sys_content_t /path/to/html_dir
#service httpd restart

載入 Library (通常是手動安裝的軟體才需要)
chcon -t texrel_shlib_t libxxx.so

Thursday, February 14, 2008

[收錄] Rzaor 說明

原本的文章是發佈於 Debian@TW
http://www.debian.org.tw/index.php/Razor

但這個站目前是沒有運作 所以趕緊把文章從 Google cache 搶救回來


--------------------------------------------------------------------------------

Razor

From DebianWiki
目錄

* 1 所需套件
* 2 簡介
* 3 設定 Razor
* 4 測試 Razor
* 5 將已知垃圾郵件之指紋碼上傳至 Razor 之線上資料庫

[編輯]
所需套件

razor
[編輯]
簡介

Vipul's Razor 是一種線上的垃圾郵件比對資料庫。
它會計算已知垃圾郵件之指紋碼 (使用 SHA 雜湊演算法),然後存至 Razor 之線上資料庫中。而 SpamAssassin 可以經由查詢 Razor 之線上資料庫來判斷該封郵件是否為垃圾郵件。
[編輯]
設定 Razor

安裝完 Razor 套件後,以 amavis 身份(執行 SpamAssassin 之帳號)執行以下指令:

razor-client
razor-admin -create

它會建立 /var/lib/amavis/.razor 目錄,並在此寫入一些設定檔。而 Razor 將依這些設定來進行比對垃圾郵件。

然後,修改 SpamAssassin 的設定檔 /etc/mail/spamassassin/local.cf 如下:

# 是否使用 Razor version 2
use_razor2 1

這樣 SpamAssassin 就會查詢 Razor 之線上資料庫來過濾垃圾郵件了。

另外,Razor 將會對外連線至 Razor 線上資料庫的 TCP 2703 和 7 這兩個 Port。在設定防火牆時要記得打開。
[編輯]
測試 Razor

一樣,寄封測試用的垃圾郵件吧:

# telnet 127.0.0.1 25
Connected to 127.0.0.1.
Escape character is '^]'.
220 qemu ESMTP Postfix (Debian/GNU)
MAIL FROM:
250 Ok
RCPT TO:
250 Ok
DATA
354 End data with .
Subject: Test spam mail (GTUBE)

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 Ok: queued as 0C3E9C906B
QUIT
221 Bye
Connection closed by foreign host.

看看這封郵件是否真的被判定為垃圾郵件了:

From tetralet@example.net Sat Oct 30 15:26:30 2004
Return-Path:
X-Original-To: tetralet@virtual.com
Delivered-To: tetralet@virtual.com
Received: from localhost (localhost.localdomain [127.0.0.1])
by qemu.virtual.com (Postfix) with ESMTP id F0828A06E
for ; Sat, 30 Oct 2004 15:26:29 +0800 (CST)
Received: from qemu.virtual.com ([127.0.0.1])
by localhost (qemu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP
id 00565-02 for ;
Sat, 30 Oct 2004 15:26:28 +0800 (CST)
Received: by qemu.virtual.com (Postfix, from userid 103)
id 6D819A06F; Sat, 30 Oct 2004 15:26:27 +0800 (CST)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by qemu.virtual.com (Postfix) with SMTP id AF694A06E
for ; Sat, 30 Oct 2004 15:26:04 +0800 (CST)
Subject: *****SPAM***** Test spam mail (GTUBE)
Message-Id: <20041030072604.AF694A06E@qemu.virtual.com>
Date: Sat, 30 Oct 2004 15:26:04 +0800 (CST)
From: tetralet@example.net
To: undisclosed-recipients: ;
X-Spam-DCC: dcc.uncw.edu: qemu 1201; Body=101 Fuz1=611
X-Spam-Flag: YES
X-Spam-Checker-Version: SpamAssassin 2.64 (2004-01-11) on qemu.virtual.com
X-Spam-Level: **************************************************
X-Spam-Status: Yes, hits=1007.0 required=5.0 tests=AWL,DNS_FROM_RFCI_DSN,
GTUBE,MSGID_FROM_MTA_SHORT,NO_REAL_NAME,RAZOR2_CF_RANGE_51_100,
RAZOR2_CHECK autolearn=no version=2.64
X-Spam-Report:
* 0.3 NO_REAL_NAME From: does not include a real name
* 1000 GTUBE BODY: Generic Test for Unsolicited Bulk Email
* 1.6 RAZOR2_CF_RANGE_51_100 BODY: Razor2 gives confidence between 51 and 100
* [cf: 100]
* 2.5 RAZOR2_CHECK Listed in Razor2 (http://razor.sf.net/)
* 3.3 MSGID_FROM_MTA_SHORT Message-Id was added by a relay
* 1.4 DNS_FROM_RFCI_DSN RBL: From: sender listed in dsn.rfc-ignorant.org
* -2.0 AWL AWL: Auto-whitelist adjustment
X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at virtual.com

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

如果一切沒問題,那就大功告成囉∼∼
[編輯]
將已知垃圾郵件之指紋碼上傳至 Razor 之線上資料庫

我們也可以將我們手上的垃圾郵件提交給 Razor 線上資料庫。首先,我們得要先從 Razor 線上資料庫得到一組帳號密碼:

razor-admin -register -user postmaster@domain.com

然後... 嗯... 未完待續...加油加油

取自"http://wiki.debian.org.tw/index.php/Razor"

本頁面已經被瀏覽3,943次。 最後更改16:51 2006年十二月12日. 本站所有內容允許以下方式利用: GNU Free Documentation License 1.2

Wednesday, February 13, 2008

MailScanner 除錯

MailScanner

訊息
None of the files matched by the "Monitors For Sophos Updates" patterns
若 /usr/local/sav 沒有 ***_ides.zip 檔案 Sophos 會認為沒有新的 patten

Monday, February 11, 2008

MailScanner - Filter 安裝

spamassassin 有一些常用的 filter 可以搭配
以下是比較有名的,如 Vipul'Razor, Pyzor, DCC

Vipul's Razor
http://razor.sourceforge.net/

#wget http://nchc.dl.sourceforge.net/sourceforge/razor/razor-agents-sdk-2.07.tar.bz2
#tar xjvf razor-agents-sdk-2.07.tar.bz2
#cd razor-agents-sdk-2.07
#perl Makefile.PL
#make
#make test
#make install

#wget http://nchc.dl.sourceforge.net/sourceforge/razor/razor-agents-2.84.tar.bz2
#tar -xjvf razor-agents-2.84.tar.bz2
#cd razor-agents-2.84
#perl Makefile.PL
#make
#make test
#make install
#razor-admin -create
#razor-admin -register -user postmaster@your.domain

Pyzor
http://pyzor.sourceforge.net/
#wget http://nchc.dl.sourceforge.net/sourceforge/pyzor/pyzor-0.4.0.tar.bz2
#tar xjvf pyzor-0.4.0.tar.bz2
#cd pyzor-0.4.0
#python setup.py build
#python setup.py install

DCC Filter 安裝
DCC - Distributed Checksum Clearinghouse
http://www.rhyolite.com/anti-spam/dcc/
注意:dcc 需要安裝 sendmail-devel 才能 make 成功

#wget http://www.rhyolite.com/anti-spam/dcc/source/dcc.tar.Z
#tar zxvf dcc.tar.Z
#cd dcc-1.3.86
#./configure
#make
#sudo make install

cp /var/dcc/libexec/rcDCC /etc/init.d/DCC

Sunday, February 10, 2008

破窗計畫 - 一些文章參考

如果要把 Windows 換成 Linux 道路其實非常艱辛
我的目標是要做到"無痛" 且全面性的方式,以目前來看非常困難。
公司還有許多特定的 AP ,需要執行在純 Windows 的環境,
偏偏我只是作 infrastructure 不能管 AP
唉再說吧

下面是一些正在看的文章 有興趣的可以看一看

Linux on the Desktop at work and worth it
http://techrepublic.com.com/5208-6230-0.html?forumID=5&threadID=165827&start=0
這篇文章提出自己本身建置的經驗,如果有興趣的話可以看一看
作者是用非常溫和的方式,一開始先讓 Windows 和 Linux 用存,來漸漸導入 Linux
不過,企業太大可能不太適合,大企業 IT 考量"穩定" 再來才能考慮到其他的。


Linux 等同 Window 軟體的清單
http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software

IBM Linux Client Migration Cookbook
http://www.redbooks.ibm.com/redbooks/pdfs/sg246380.pdf
這本書還在閱讀中,等看完了再整理心得給大家

Thursday, February 07, 2008

解決 CentOS 改用 XFCE4 畫面進不去的問題

話說 XFCE 是輕量級的桌面 已經仰慕很久
最近幾天終於動手安裝 XFCE

先把 /etc/yum.conf.d/CentOS-Base.repo
的 extra 設成 enabled=1
#yum grouplist 'XFCE-4.4'

裝好後 想節省空間於是就把 GNOME 殺掉
#yum groupremove 'GNOME Desktop Environment'

結果重新開機後卻發現畫面停在 console 進 X window
init: Id "x" respawning too fast: disabled for 5 minitues
於是從 /etc/inittab 開始追查 找到 runlevel 5 時 執行 /etc/X11/prefdm
然後我又找到啟動 XFCE 的指令 startxfce4
下面是 prefdm 部分內容 紅色是我增加的

# Run preferred X display manager
preferred=
if [ -f /etc/sysconfig/desktop ]; then
. /etc/sysconfig/desktop
if [ "$DISPLAYMANAGER" = GNOME ]; then
preferred=/usr/sbin/gdm
elif [ "$DISPLAYMANAGER" = KDE ]; then
preferred=/usr/bin/kdm
elif [ "$DISPLAYMANAGER" = XDM ]; then
preferred=/usr/bin/xdm
elif [ "$DISPLAYMANAGER" = XFCE ]; then
preferred=/usr/bin/startxfce4
elif [ -n "$DISPLAYMANAGER" ]; then
preferred=$DISPLAYMANAGER
fi
fi

又把 desktop 改了
#more /etc/sysconfig/desktop
DESKTOP="XFCE"
DISPLAYMANAGER="XFCE"

結果進去是進去了 但發生兩件奇怪的事
1. 不需要登入 就進到桌面 2. 語系 Locale 失效了, 由中文便英文

後面才知到 XFCE 本身沒有 Desktop Manager
所以要給他一個如 gdm (for GNOME), kdm (for KDE)

#yum install gdm
然後把 DISPLAYMANAGER 設成 gnome
#more /etc/sysconfig/desktop
DESKTOP="XFCE"
DISPLAYMANAGER="GNOME"

/etc/X11/perfdm 就改回原來的樣子 即可
重開後 就找回登入畫面 及恢復正常的語系了

Tuesday, February 05, 2008

[CentOS] Mailscanner system 安裝篇

此篇以安裝 MailScanner 在 CentOS5

1.1 [安裝 Sophos]
Sophos AntiVirus For Linux 目前版本為 v4.26.0
http://downloads.sophos.com/dp/full/linux.intel.libc6.glibc.2.2.tar.Z


ps. Sophos依glibc分成數個版本,像libc5使用libc5.tar.Z,
redhat 7.0之前的glibc2.2之前使用標準的libc6.glibc.tar.Z
Redhat9.0 和 RedHat Enterprise 4.0則使用libc6.glibc2.2.tar.Z
http://downloads.sophos.com/dp/full/linux.intel.libc6.tar.Z

Redhat Enterprise 5 請再安裝 compat-glibc, compat-glibc-headers 以支援 glibc2.2

#tar xvf linux.intel.libc6.glibc.2.2.tar.Z
#cd sav-install
#./install.sh -so -v
(ps. –so 參數會建立 libsavi.so 的 link)
程式及病毒碼會安裝在 /usr/local/sav, Library 安裝在 /usr/local/lib

軟體本身會附病毒碼,目前版本為 426, 病毒碼網址如下
http://www.sophos.com/downloads/ide/426_ides.zip

1.2 [Sophos ide update]
我們可以透過 Mark Martinec 提供的 Perl Script - Sophos ide update 自動更新
網址: http://www.ijs.si/software/sophos-ide-update
最新版本為 1.4
http://www.ijs.si/software/sophos-ide-update/sophos-ide-update_1.4.tar.gz


1.3 [SAVI-Perl]
Perl SAVI Module--是一個Sophos本身的perl模組
http://www.csupomona.edu/~henson/www/projects/SAVI-Perl/dist/SAVI-Perl-0.30.tar.gz
請先設好環境變數, 等會在做 make test 時候結果才會正確、成功
#export LD_LIBRARY_PATH=/usr/local/lib (最好是加入 /etc/profile)
#echo /usr/local/lib >> /etc/ld.so.conf (如果已經有了就不用加)

#tar zxvf SAVI-Perl-0.30.tar.gz
#cd SAVI-Perl-0.30
#perl Makefile.PL
#make
#make test
#make install

如果無法 make ,請 copy 一份 libsavi.so.3.2.XX.XXX 成 libsavi.so
cp /usr/local/lib/libsavi.so.3.2.07.191 /usr/local/lib/libsavi.so
注意 make test 一定要成功才可以下 make install 安裝

如果 make test 出現
t/use....Can't load '/usr/local/src/SAVI-Perl-0.30/blib/arch/auto/SAVI/SAVI.so' for module SAVI: /usr/local/lib/libsavi.so.3: cannot restore segment prot after reloc: Permission denied at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/DynaLoader.pm line 230.
那是 SELinux 打開的關係 導致無法載入 libsavi.so
請用 chcon 設定權限如下

chcon -t textrel_shlib_t /usr/local/lib/libsavi.so

如果去看 /var/log/audit/audit.log 會有下面的訊息
type=AVC msg=audit(1202221002.753:53): avc: denied { execmod } for pid=17869 comm="perl" path="/usr/local/lib/libsavi.so.3.2.07.191" dev=dm-0 ino=303289 scontext=root:system_r:unconfined_t:s0-s0:c0.c1023 tcontext=root:object_r:lib_t:s0 tclass=file
type=SYSCALL msg=audit(1202221002.753:53): arch=40000003 syscall=125 success=no exit=-13 a0=40278000 a1=1d9000 a2=5 a3=bfca64a0 items=0 ppid=17865 pid=17869 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 comm="perl" exe="/usr/bin/perl" subj=root:system_r:unconfined_t:s0-s0:c0.c1023 key=(null)


2. [MailScanner 安裝]
MailScanner 網址為 http://www.mailscanner.info 目前最新為 4.66.5-3
請選 RedHat Linux (and other RPM-based Linux distributions) 下載
http://www.mailscanner.info/files/4/rpm/MailScanner-4.66.5-3.rpm.tar.gz

#tar xvf MailScanner-4.66.5-3.rpm.tar.gz
#cd MailScanner-4.66.5-3
#./install.sh

過程有點久 因為他會 compile 裡面所有的 perl 的模組
可以趁著這個時間 好好再把裡面的文件 QuickInstall.txt 看看


參考
Mail system for RHEL4.0 Total solution安裝筆記
http://phorum.study-area.org/index.php/topic,30462.msg151723.html#msg151723

Monday, February 04, 2008

CentOS 4 upgrade CentOS 5

CentOS4 升級到 CentOS5 有點麻煩
試了好幾次 總算整理出一個比較順利的步驟

以下是 CentOS4.6 升級到 CentOS5.1 過程
安裝之前請開兩個以上 telnet session, 因為升級過程中(Step2後) 就無法再開新的連線
另外該停服務先停 以免發生一些慘事 尤其是資料庫如 mysql

1.首先先安裝 centos-release 套件
centos-release-5-1.0.el5.centos.1.i386.rpm
centos-release-notes-5.1.0-2.i386.rpm

rpm -Uvh centos-release-5-1.0.el5.centos.1.i386.rpm centos-release-notes-5.1.0-2.i386.rpm

2. 安裝升級前套件
下載以下 rpm 放在 /tmp/Upgrades, 以下為 5.1
beecrypt-4.1.2-10.1.1.i386.rpm
beecrypt-python-4.1.2-10.1.1.i386.rpm
binutils-2.17.50.0.6-5.el5.i386.rpm
db4-4.3.29-9.fc6.i386.rpm
elfutils-0.125-3.el5.i386.rpm
elfutils-libelf-0.125-3.el5.i386.rpm
elfutils-libs-0.125-3.el5.i386.rpm
glibc-2.5-18.i686.rpm
glibc-common-2.5-18.i386.rpm
glibc-devel-2.5-18.i386.rpm
glibc-headers-2.5-18.i386.rpm
krb5-libs-1.6.1-17.el5.i386.rpm
libselinux-1.33.4-4.el5.i386.rpm
libsepol-1.15.2-1.el5.i386.rpm
libxml2-2.6.26-2.1.2.i386.rpm
libxml2-python-2.6.26-2.1.2.i386.rpm
m2crypto-0.16-6.el5.1.i386.rpm
mcstrans-0.2.6-1.el5.i386.rpm
neon-0.25.5-5.1.i386.rpm
openssl-0.9.8b-8.3.el5_0.2.i686.rpm
popt-1.10.2-47.el5.i386.rpm
python-2.4.3-19.el5.i386.rpm
python-devel-2.4.3-19.el5.i386.rpm
python-elementtree-1.2.6-5.i386.rpm
python-sqlite-1.1.7-1.2.1.i386.rpm
python-urlgrabber-3.1.0-2.noarch.rpm
readline-5.1-1.1.i386.rpm
rpm-4.4.2-47.el5.i386.rpm
rpm-libs-4.4.2-47.el5.i386.rpm
rpm-python-4.4.2-47.el5.i386.rpm
yum-3.0.5-1.el5.centos.5.noarch.rpm

執行安裝
cd /tmp/Upgrades
rpm -Uvh *.rpm --nodeps --force

3. 測試一下 yum upgrade 發生的問題
[root@test Upgrades]# yum -c /etc/yum-upgrade.conf upgrade
Traceback (most recent call last):
File "/usr/bin/yum", line 4, in ?
import yum
File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 36, in ?
import config
File "/usr/lib/python2.4/site-packages/yum/config.py", line 23, in ?
from parser import ConfigPreProcessor
File "/usr/lib/python2.4/site-packages/yum/parser.py", line 3, in ?
import urlgrabber
File "/usr/lib/python2.4/site-packages/urlgrabber/__init__.py", line 53, in ?
from grabber import urlgrab, urlopen, urlread
File "/usr/lib/python2.4/site-packages/urlgrabber/grabber.py", line 406, in ?
import keepalive
File "/usr/lib/python2.4/site-packages/urlgrabber/keepalive.py", line 339, in ?
class HTTPSHandler(KeepAliveHandler, urllib2.HTTPSHandler):
AttributeError: 'module' object has no attribute 'HTTPSHandler'

出現上面的錯誤 其實是缺少新版的 wget 及 keyutils-libs 跟 python 一點都無關
這個錯誤實在很難解 還曾試著把別台正確的 /usr/lib/python2.4 拷貝一份也沒用
想了很久 後來忽然想到 CentOS Wiki 提到升級 CentOS 4.4ServerCD to 5
有提到 wget 於是把把 CentOS5 的 wget 及相依 keyutils-libs 套件裝上去
yum 又活過來了

安裝之前也是要重建 rpmdb 否則是無法安裝的
rm -f /var/lib/rpm/__*
rpm --rebuilddb
rpm -Uvh wget-1.10.2-7.el5.i386.rpm keyutils-libs-1.2-1.el5.i386.rpm --nodeps --force

4. 安裝新版 kernel 以及移除舊版 kernel
a. 安裝新版 kernel
rpm -ivh kernel-2.6.18-53.el5.i686.rpm --nodeps

b. 移除舊版 kernel
用 --justdb 選項移除 rpmdb 刪除舊版的 kernel 資訊, 不做真正移除
等下 yum upgrade 才不會出現舊版的 kernel 與新的 rpm 產生相依性或衝突的問題
rpm -e --nodeps --justdb kernel-2.6.9-67.EL kernel-2.6.9-67.0.1.EL

5. 升級整個系統
正是要做 整個 upgrade 之前, 要先做 rpm db 的重整 rebuild
rm -f /var/lib/rpm/__*
rpm --rebuilddb
好了 可以開始 upgrade 了
yum -c /etc/yum-upgrade.conf upgrade

做完後還是得重建 rpm db 一次
rm -f /var/lib/rpm/__*
rpm --rebuilddb

然後請檢察 /etc/grub.conf 及 /boot 是否正確再開機

6. 清理垃圾
由於升級過程中 有些軟體可以接受比較舊的版本
導致還是會有些軟體停留在 el4 而不是 el5
我們可以檢查還有哪些是 el4
rpm -qa | grep el4, rpm -qa | grep EL4

建議先用 yum list xxx 查看有哪幾個版本
然後用 rpm -e xxx -nodeps 移除
再用 yum install xxx 裝上新版

參考文章
CentOS Wiki - Upgrade Server 4.4 to 5
http://wiki.centos.org/HowTos/MigrationGuide/ServerCD_4.4_to_5
在線centos4.4升級到centos5.0
http://www.haw-haw.org/node/242

Sunday, February 03, 2008

常用Shell Script 技巧 - for loop

for loop

範例
#!/bin/bash
for X in red green blue
do
echo $X
done

例如 gzip 某個目錄 /xxx下檔案 xyz 開頭的檔案
cd /xxx

for i in `ls -1 xyz*`
do
gzip $i
done

[錯誤通知]samba 3.0.25b 與 AD 整合會有問題 勿用此板

若使用 samba 整合 AD

請勿使用 3.0.25b 版本 會有 AD 認證上的問題

如果你是用 CentOS 4 or RHEL 4 請勿更新 先使用前一版本

剛用力查一下 有不少人遇到這個問題

Winbind fails to refresh Kerberos tickets
http://fixunix.com/samba/141677-samba-winbind-fails-refresh-kerberos-tickets-3-0-25b-fedora-core-5-2nd-try.html

Friday, February 01, 2008

[收錄]加快 Vista 開關機

http://www.fun-jetso.net/space/html/91/t-42091.html

1.關閉部份服務

按左下方的 Vista Logo,然後在輸入欄輸入 "services.msc",然後便會看到一個視窗,把以下的服務停用便可

Computer Browser
Distributed Link Tracking Client
IKE and Auth IP Keying Modules
Offline Files
Remote Registry
Tablet pc Input Service
Windows Error Reporting


2.關閉自動運行程式

按左下方的 Vista Logo,然後在輸入欄輸入 "msconfig" 在啟動欄行把不需要自動啟動的程式剔除

3.關閉華麗效果

在桌面按滑鼠右鍵,然後選擇個人化,並按下"視窗色彩及外觀",關閉 Vista 的 Aero 效果

4. 縮短關閉服務的時間

按左下方的 Vista Logo,然後在輸入欄輸入 "regedit"

進入

HKEY_LOCAL_MACHINE\Syatem\CurrentControlSet\Control ,在右方看到一個名為 WaitToKillServiceTimeout,修改成為 3000 或1000 即可 (3000 即3秒,1000即1秒)


5. 縮短關閉程式與進程前的等侯時間,進入

HKEY_CURRENT_USER\Control Panel\Desktop,將 WaitToKillAppTimeout 和 HungAppTimeout 的數值修改
** 並不是所以 vista 用家都會在註冊表內找到該數值