2008-01-07

使用網路安裝Fedora

工作上的原因,必須使用到Fedora,原本想裝新一點的版本,但是機器太舊所以機器上沒有DVD-ROM可用,因為Fedora7和8都只看到DVD的ISO沒看到CD的ISO檔,因此就把腦筋動到網路了。
  1. 首先到7或8版的Fedora/os/images下載boot.iso並燒成Boot CD,並拿來開機。
  2. 進入GRUB後選擇第2,安裝或升級(使用文字模式),因為試著用圖形介面裝,好像都不會動,不曉得是機器太慢造成還是怎樣就不了改了。
  3. 選擇使用安裝方式,我是選擇使用FTP。
  4. 輸入ftp site和欲安裝的Fedora Core的原始檔位置,找到某某版本的os目錄就對了
  5. 接下來就是一般正常的文字安裝了
最一開始是使用Fedora Core5的第一片安裝CD來線上安裝,但是拿來安裝7或是8版的,雖然設定過程順利,但是到了真正要安裝時是無法安裝的,會有錯誤產生。所以還是要使用同一個版本的安裝光碟或boot.iso來透過網路安裝才會正常,但是建議使用boot.iso來開機安裝並使用"文字模式",發現安裝的速度比圖形介面要快喲!

2008-01-02

FreeRadius + pam_pop3 多部mail server pop3認證

工作上需要用到radius來進行無線網路的帳號,可是又不想另外維護獨立的radius的帳號,第一是我太懶了,第二是太麻煩了,但是又還沒建置LDAP把帳號統一,所以把念頭打到了現行的mail server上,可以利用現成的帳號密碼來進行無線認證。
經過測試後發現使用FreeRadius+pam_pop3模組,依預設值的話只能針對一部mail server進行pop3的認證,問題來了,因為認證時可能會同時使用到兩部mail server,所以必須進行程式修改。
在網路上找到了資料,發現交通大學的"北台灣社區網路建置及分析"計劃已有相同的做法,但是沒有source code可供參考 >"<,只好自己挖糞塗牆了。 需要修改的部份有兩個,就是FreeRadius和pam_pop3,雖然交大的文件上說只要修改FreeRadius就可以符合需求,但測了半天覺得兩個都要改到,反正沒source code所以還是用自己的方法吧!
  • FreeRadius
    1. 作業系統FreeBSD-6.2-RELEASE
      > cd /usr/ports/net/freeradius
      >make install
    2. 解開原始檔進行修改
      > tar xvfj /usr/ports/distfiles/freeradius-xx.tar.bz2
    3. 修改rlm_pam.c
      > cd freeradius-xx/src/modules/rlm_pam
      > vi rlm_pam.c
      找到以下字樣的下面那段code把mark掉
      /*
      * FreeBSD 3.x doesn't have account and session management
      * functions in PAM, while 4.0 does.
      */
      if !defined(__FreeBSD_version) || (__FreeBSD_version >= 400000)
    4. 把修改過的FreeRadius重新包裝起來放回/usr/ports/distfiles把原檔覆蓋掉,再用port直接安裝省得麻煩
      > tar cvfj freeradius-xxx.tar.bz2 freeradius-xxx
      > cp freeradius-xxx.tar.bz2 /usr/ports/distfiles/freeradius-xxx.tar.bz2
      > cd /usr/ports/net/freeradius
      > make deinstall
      > make NO_CHECKSUM=yes install clean
    5. 修改radius的相關設定
  • pam_pop3
    1. 一樣使用port安裝並使用已經過patch的code來修改
      > cd /usr/ports/security/pam_pop3/
      > make install
      > cd ~
      > cp -r /usr/ports/security/pam_pop3/work/pam_pop3 .
    2. 修正 pam_pop3.c
      > cd pam_pop3
      > vi pam_pop3.c
      找到 char *pwprompt="Password: "; 在下面插入一行char delim[]="@";
      找到以下的code
      if (username==NULL)
      {
      if (pam_get_user(pamh,(const char **)&username,NULL)!=PAM_SUCCESS)
      {
      syslog(LOG_ERR,"Could not get username from libpam !");
      return result;
      }
      在下面接著以下這兩行
      username=strtok(username,delim);
      hostname=strtok(NULL,delim);
      這樣就可以把xxx@mail.abc.com.tw的格式正確的導到正確的伺服器囉!
    3. 手動compiler後再把原先安裝的pam_pop3.so檔覆蓋
      > make clean
      > cc -O2 -fno-strict-aliasing -pipe -march=pentiumpro -fpic -DPIC -Wall -c pam_pop3.c -o pam_pop3.o
      > ld -x --shared -o pam_pop3.so pam_pop3.o -lpam -lcrypt
      > cp pam_pop3.so /usr/local/lib/pam_pop3.so
    4. 在/etc/pam.d/ 新增一個檔名字叫radius,內容如下
      auth required /usr/local/lib/pam_pop3.so info pwprompt=Passwort: timeout=20

2007-11-28

Apache裝在UNIX like上檔案大小寫的問題

今天單位對外上了一門教育訓練課程,在將成果上傳時..讓人三條線的狀況出現..
在本機可以正常的瀏覽,但是在上傳到FreeBSD的web server後就掛了,查了之後才發現是檔案名稱大小寫的問題,在Windows上是不分大小寫的聽說在MAC OS X也是,所以沒辦法只好去找資料把Apache重新compiler後才解決。

1.在 configure 加上 --enable-speling 的參數。
2.編輯 httpd.conf,加上 CheckSpelling on
3.重新啟動 Apache。

2007-11-09

screen

之前用了一陣子的screen,只用到了它的皮毛,後來看到一些更好用的,原始資料來是來自台大電機吳慶鴻分享的大作,不過資料確是來自香港的網站...

"^A"代表"Ctrl + A"鍵
$ ^A c = Create,開一個新的 window
$ ^A n = Next,切換到下一個 window
$ ^A p = Previous,回到前一個 window
$ ^A ^A = 在兩個 window 間切換
$ ^A w = Windows,列出已開啟的 windows 有那些
$ ^A 0...9 = 切換到第 0..9 個 window
$ ^A t = Time,顯示目前的時間,與系統的 loading
$ ^A K = kill window,強制關掉目前的 window
$ ^A ? = Help,顯示說明
$ ^A d = detach,將目前的 screen session丟到背景執行
$ screen -ls = 顯示所有的 screen sessions
$ screen -r [keyword] =把背景執行的 screen session 弄回來

另外在yungyuc的筆記與雜記裡看到他所分享出來的screenrc的設定,畫面變得更容易辨識了,不會搞不清楚到底自己開了多少個window,值得推薦。

$ vi .screenrc

caption always "%{= wk} %{= KY} [%n]%t @ %H %{-} %= %{= KR} %l %{-} | %{= KG} %Y-%m-%d %{-} "
hardstatus alwayslastline " %-Lw%{= Bw}%n%f %t%{-}%+Lw %=| %0c:%s "

2007-09-11

FreeBSD大量修改使用者密碼

今天把舊的mail server從4.4升到4.8,但是發生一個怪現象,結果的我的密碼變成錯誤,
以為其他帳號也是這樣,但是有些人的又可以進去,真是怪怪..
不過為了以防萬一,去找了怎麼大量變更使用者密碼的方法,真不錯用,不過有點慢就是了,看樣子mail server真的該換了。
echo 'password' | /usr/sbin/pw usermod username -m -h 0

2007-08-31

Remotely Enable Remote Desktop

在網上要找控制"遠端桌面"的register,結果看到這篇。

Windows Server Hacks: Remotely Enable Remote Desktop

Windows XP/2003 registree 裡的Firewall rules 位置

Norton Antivirus可以使用中央控管的方式更新使用者的病毒碼或設定值,也可以要求client端進行病毒掃瞄,但是在XP更新到SP2後新增加了防火牆的功能,開起來後造成防毒主機主控台無法對client下命令,原因是防毒主機是透過port 2967和client進行通訊。
為了要解決這個問題,就需要要求使用者手動開起2967這個port,但是問題來了,並不是每個員工都知道防火牆是啥米碗糕,執行上是有困難度的,所以最佳的解決方案就是自行開發工具請每個員工執行即可。
我是使用Delphi為開發工具,以下是WinXP/2003在registree裡firewall rule的位置:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\
FirewallPolicy\StandardProfile\GloballyOpenPorts\List

2007-06-08

你的 sendmail 回應有點慢嗎?

最近把服務了6年的郵件伺服器換下來,不過還是有個問題沒解決,就是使用telnet 去測smtp時,回應有點慢,在其他上線問題較少之後,來網路上找找,在sendmail.cf下找到一個參數Timeout.ident = 5s,這個是預設值,只要把它改小了回應速度就變快了哦。

2007-05-03

FreeBSD on IXP425 part 2

看了一些網路上相關的文章,後來終於compiler好了一個kernel,雖然不曉得在IXDPG425(Monte Jade)是不是也可以用,但是這個方法比前一篇的方法省事多了。AVILA的config檔是for另一塊開發板的,所以應該還要花點時間修改吧!我想,以下是步驟:
  1. 使用cvsup或csup,將source tree更新到7.0-CURRENT
    > cd /usr/src
    > make update
  2. 編譯for ARM的FreeBSD系統核心
    > cd /usr/src
    > make TARGET=arm TARGET_ARCH=arm buildkernel KERNCONF=AVILA
    > kernel的位置在/usr/obj/arm/usr/src/sys/AVILA/kernel.bin,這個kernel已經可以開機
  3. 製作rootfs的image檔
    > cd /usr/src
    > make TARGET_ARCH=arm TARGET_CPUTYPE=xscale TARGET_BIG_ENDIAN=true buildworld
    > make TARGET_ARCH=arm TARGET_CPUTYPE=xscale TARGET_BIG_ENDIAN=true DESTDIR=$ROOT installworld
    > for ARM版本的程式會被安裝到 $ROOT,再把需要的檔案做到rootfs即可
  4. 將rootfs的image檔和kernel整併在一起
    > strings -at d kernel.bin | grep "MFS Filesystem"
    3129956 MFS Filesystem goes here
    6275684 MFS Filesystem had better STOP here
    > head -c 3129956 kernel.bin > kernel.new
    > cat rootfs.bin >> kernel.new
    > tail -c +6275685 kernel.bin >> kernel.new
  5. 完成

Spyware Terminator

從網路雜誌上看到的推薦的spyware偵測軟體,它是一套FREE的軟體,而且內建可以支援病毒掃瞄,而病毒掃瞄的部份則是自網路上下載著名的免費掃毒軟體ClamAV並安裝,以下是官方網站。

http://www.spywareterminator.com/dnl/landing.aspx

2007-04-17

postfix File too large的問題

原本前兩天要把新機上線,真是慶幸第一次測試發現問題後馬上又把舊機換回來。在後來又發現到兩個沒注意到的問題,一個就是樓下那篇,一個就是這個了。
原本以為把資料移過來後就大功告成,但因為postfix預設的設定,才會造成上線的延遲,嚴格上來說也不算是出問題,只是重改設定而已。
這次造成的狀況是當mail box大到某一定的程度時,會造成postfix無法寫入新mail,因為postfix有個系統預設參數mailbox_size_limit,預設值大約是50M,所以只要mail box大於這個值就會無法寫入新信,因為我是使用作業系統的Quota,所以我就把這個參數值設為0,那使用者就可以充分使用到所有的mail空間。
另一個需要注意的問題,當postfix配合procmail使用時,會造成procmail無法把postfix所產生的錯誤訊息正確的回覆給使用者,目前還不知道解決辦法,所以如果要看正確錯誤回應,就先把procmail關掉就看得到囉。

2007-04-16

postfix too many hops的問題

昨天要把服役許久的mail server換掉,當然是先架好一台再把資料移過來,在一切都搞定後終於換過去了,結果一測...哇咧收不到mail.. >"<,postfix回應的問題是"too many hops",看樣子是產生了loop,奮鬥到了凌晨三點半,還是先換肥去吧 =.=。
今天早上來花了一點時間測了一下,終於找到了問題,問題出在postfix的transport的設定方法。一般在使用並不需要使用到transport,但是因為我在mail server前面擋了一部mailspam,也拿來當gateway,是使用postfix+SpamAssassin+RBL所構成,後面躲了兩部mail server,後面的mail server是使用sendmail,但是新機也換成了postfix,原來的sendmail也設定了mailertable讓所有mail出去都會經過我的gateway,設定如下:

abc.123.com.tw smtp:[%0]
. smtp:[spam.123.com.tw]

但是咧在換成postfix之後,要使用transport,一開始的設定是仿照sendmail的,因為postfix標榜的就是和sendmail相容,所以懶的要死的豬頭我就依樣畫葫蘆的寫成以下的transport的設定:

abc.123.com.tw smtp:[abc.123.com.tw]
* smtp:spam.123.com.tw

但是實際上必須寫成這樣才不會造成loop:

abc.123.com.tw :
* smtp:spam.123.com.tw

看了transport的說明,是當destination是本機時就不需要去變更nexthop的遞送資訊,所以問題解決了,在以上得到一個定理,那就是,設定前請先瞄一下說明檔吧

2007-04-14

FreeBSD on IXP425

今天下午比較沒事,就去做了FreeBSD source code的更新,更新時無意間發現了FreeBSD已經port到IXP425的平台上了,所以就迫不及待的在網路上找找看有沒有相關的資料,果然,已經有對岸的網友已經有把資料放到網路上來了。以下把自己做的過程紀錄下來:


OS:FreeBSD-6.2-Release
  • 建立跨平台編譯環境
    1. 首先建立CrossTool要安裝的目錄,我放置在/usr/cross_arm,並且建立以下3個目錄
      > mkdir -p /usr/cross_arm/usr/bin
      > mkdir -p /usr/cross_arm/usr/include
      > mkdir -p /usr/cross_arm/usr/share
      在安裝的過程中你會發現有不少錯誤,大部份都是沒有這些目錄,把它們補上再重跑一次安裝即可。
    2. compiler GCC
      > cd /usr/src/gnu/usr.bin/cc
      > make TARGET_ARCH=arm TOOLS_PREFIX=/usr/cross_arm depend all
      > make DESTDIR=/usr/cross_arm instal
    3. compile LIBC
      > cd /usr/src/lib/libc
      > make TARGET_BIG_ENDIAN=Y
      > make DESTDIR=/usr/cross_arm install
    4. compiler BINUTILS
      > cd /usr/src/gnu/usr.bin/binutils
      > make TARGET_ARCH=arm TOOLS_PREFIX=/usr/cross_arm depend all
      > make DESTDIR=/usr/cross_arm instal
    5. 設定環境變數
      請依照你使用shell,去設以下的環境變數,bash、sh請用export,csh請用setenv
      > export AS=/usr/cross_arm/usr/bin/as
      > export NM=/usr/cross_arm/usr/bin/nm
      > export RANLIB=/usr/cross_arm/usr/bin/ranlib
      > export LD=/usr/cross_arm/usr/bin/ld
      > export OBJCOPY=/usr/cross_arm/usr/bin/opjcopy
      > export SIZE=/usr/cross_arm/usr/bin/size
      > export MACHINE=arm
      > export MACHINE_ARCH=arm
    6. 待續......
    7. 2007-05-03補
      這個方法有點麻煩,而且依網路上的文章去做..還是出現一些問題。

2007-04-10

Foxit Reader

Foxit Reader是一套free的PDF 讀取和列印工具,它不但小巧而且速度夠快,不像Adobe Reader那般肥大,而且Adobe Reader常用的功能Foxit Reader一樣也不缺,把Adobe Reader砍了吧~

官方網站
http://www.foxitsoftware.com/

Microsoft Research

在找MSR的過程中發現的一個好站台,應該是微軟研究發展新技術的官方網站。有不少好玩的東東。

http://research.microsoft.com/
新版軟體釋出下載的連結
http://research.microsoft.com/research/downloads/default.aspx

自己有興趣的東西
http://research.microsoft.com/conferencexp/
https://research.microsoft.com/nec/
https://research.microsoft.com/nec/msrsense/

http://atom.research.microsoft.com/sensormap/

MSR Networked Embedded Sensing Toolkit (MSR Sense)

微軟出了一個可蒐集WSN(Wireless Sensor Network)資料的架構。透過Getway直接把Tmote傳回的資料以XML packet的方式直接傳回SQL Server,方便後續的資料統計分析。

微軟官方網站
https://research.microsoft.com/nec/msrsense/
https://research.microsoft.com/nec/msrsense/tutorial-v0.2a.pdf

其他網站資料
http://www.tinyos.net/scoop/section/news/2
http://research.microsoft.com/~stansley/

2007-03-23

FreeBSD port upgrade HowTo

用了快6年的mail server要除役了,主機當然會換成好一點的,系統也將由原本的FreeBSD-4.4-STABLE換成FreeBSD-6.2-RELEASE。此次的更新中也將使用portupgrade的機制來更新系統上的軟體,之前因為系統上的軟體經過特定的修改,為了避免某一天的豬頭症發作,造成系統無法正常運作,所以一直沒使用portupgrade。使用方法很簡單:

  1. 先更新你的port tree到最新
  2. > portsdb -Uu
  3. > pkgdb -F
  4. > portupgrade -aWy
‧96.06.06 Add
  1. 通常portupgrade是要自動更新目前系統上所安裝的程式,但是在使用時須要建立更新INDEX,所以需要去掃瞄ports tree,但是有時候某些相關聯的軟體會被刪除或改名之類的問題,就會造成執行portsdb -Uu時錯誤,這時只要用link的的方式就可以騙過去囉。
  2. 當要再執行pkgdb -F時,狀況會延續下來,這時只要換個參數就可以解決囉,pkgdb -f。

FreeBSD port install 設定錯誤怎麼辦??

FreeBSD是我在架設伺服器時的第一選擇,使用它也好幾年了,但是本人習慣不太好,通常過一段時間會把解決的方法給忘了,這次又如預期的發生,所以...

如果使用FreeBSD的port機制安裝軟體時,安裝參數下錯了造成無法順利安裝,只要下make config 重新設定即可,以下為其他的make參數:

make install : 安裝Port
make deinstall : 移除已安裝的 Port
make reinstall : 移除之後再安裝一次
make clean : 安裝完畢後移除 make 資料夾下的檔案
make distclean : 移除安裝後的原始檔案,以節省磁碟空間

make all-depends-list
make install
make install clean
make install clean distclean

2007-03-19

jelie - free software for XScale developement

老板要我們弄出一個embedded system debug的環境,而且要用opensource的方案,OCDremote已經卡住了,OpenOCD目前也還不行用,jelie目前的期待所在。

官網:http://lapwww.epfl.ch/dev/arm/index.php?tools
jelie 1.4:http://ftp.k-team.com/korebot/jelie/ 一個叫korebot開發板的相關資料

DJVU--一種壓縮比粉高的影像格式

無意間看到一位網友介紹的。

官方網站:http://www.djvuzone.org/
台灣的示範站:http://books.tais.com.tw/