2005/12/22

OpenWRT進階設定 - DNS Server

OpenWRT本身預設使用dnsmasq作為dns proxy, 其實dnsmasq除了可以將query request轉送給真正的dns server之外, 它也可以讀取/etc/hosts或指定的檔案中的設定, 並將結果回覆給client, 所以dnsmasq非常適合最為一個小型區域網路中的dns server, 而且不管是正向或反向查詢都可正常運作, 做法如下, 請編輯/etc/init.d/S50dnsmasq, 輸入以下內容,

    #!/bin/sh
    dnsmasq --domain=$(nvram get dhcp_domain)

上面的敘述中, 我們從nvram變數dhcp_domain讀取domain的名稱, 這麼做的目的是為了可以查詢如server1.alphalab.org之類的名稱(假設我們的domain叫做alphalab.org), 所以我們必須把domain的名稱寫到nvram中,

    root@wrt54gs:~# nvram set dhcp_domain=alphalab.org root@wrt54gs:~# nvram commit

接著我們可以開始加入電腦名稱到/etc/hosts中,

    127.0.0.1 localhost wrt54gs.alphalab.org wrt54gs
    192.168.200.248 x255.alphalab.org x255
    192.168.200.150 x230.alphalab.org x230

2005/12/21

OpenWRT進階設定 - DHCP Server

Openwrt預設安裝的dhcp server是dnsmasq, dnsmasq基本上是一個小型的domain name server但也同時提供dhcp server的功能, 又小又好用, 功能也不少, 實在沒什麼好挑剔的, 不過剛好我的環境中需架設PXE Server, 需要dhcp server, 偏偏dnsmasq不提供指向tftp server的功能, 可是同一lan中同時有兩個dhcp server會很麻煩, 分開兩個lan也是麻煩, 所以一直很想使用功能較完整的dhcp server來取代dnsmasq的dhcp功能, 首先下載我們需要的dhcp server, 可以在這裡http://openwrt.alphacore.net/ 找到,

    root@wrt54gs:~# wget \
    http://openwrt.alphacore.net/dhcpd_3.0.1_mipsel.ipk

接下來進行安裝,

    root@wrt54gs:~# ipkg install dhcpd_3.0.1_mipsel.ipk

安裝好後, 還需要撰寫/etc/dhcpd.conf, 內容大致如下,

    #/etc/dhcpd.conf
    default-lease-time 7776000;
    max-lease-time 7776000;
    ddns-update-style none;
    server-name drbl;
    option routers 192.168.200.254;
    option domain-name "alphalab.org";
    option domain-name-servers 192.168.200.254;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.200.255;

    filename = "pxelinux.0";

    subnet 192.168.200.0 netmask 255.255.255.0 {
      range 192.168.200.240 192.168.200.249;
      host p5020 {
        hardware ethernet 00:0B:5D:24:20:63;
        fixed-address 192.168.200.100;
      }
    }

因為dhcpd執行的時候需要dhcpd.leases檔案存在, 所以我們先產生一個空的給他,

    root@wrt54gs:~# echo "" > /etc/dhcpd.leases

接下來撰寫啟動腳本, 我們將dhcpd的啟動放在dnsmasq之後, 請建立一個檔案/etc/init.d/S51dhcpd, 內容如下,

    #!/bin/sh
    /usr/sbin/dhcpd -lf /etc/dhcpd.leases br0

為了不與dnsmasq的dhcp server衝突, 我們必須關閉dnsmasq的dhcp功能, 請修改/etc/init.d/S50dnsmasq如下,

    #!/bin/sh
    /usr/sbin/dnsmasq

2005/12/18

夭壽喔 - Creating an XP Pro VM for the free VMware Player

VMware最近推出了一個免費的VMware Player, 讓你可以免費執行VMware Workstation, GSX, ESX等軟體建立出來的虛擬機器, 但是如果你沒有這些需付費的軟體該怎麼辦? 別擔心, 這篇文章交你怎麼使用免費的QEMU來製作可讓VMware Player執行的VM喔, 真是夭壽好用咧!

URL: http://johnbokma.com/.../vmware-player-windows-xp.html

How to build MapFS from source

Build the MapFS from source

以下是我編譯mapfs.ko的步驟:

  • cd /tmp
  • tar zxvf mapfs-1.0-0.1035.tar.gz
  • cd /lib/modules/`uname -r`/build
  • make SUBDIRS=/tmp/mapfs-1.0-0.1035 modules
  • cd kernel/fs
  • mkdir mapfs
  • cp /tmp/mapfs-1.0-0.1035 modules/mapfs.ko mapfs
  • chmod 744 mapfs/mapfs.ko
  • depmod
  • Okay!

至於如何載入就比較傷腦筋了, 因為有幾個相關了kernel symbols需要設定, 找了半天卻找不到相關文件解釋如何設定, 網路上又好像沒什麼人在用這東西, 不過還好, 最後還是在它的mailing list中看到一篇文章有提到載入的方式, 我只有改了一下路徑

  • 建立一個script檔案loadmapfs內容如下
    #!/bin/sh
    mapfsargs=$(for ksym in $(strings /lib/modules/$(uname -r)/kernel/fs/mapfs/mapfs.ko | awk '/from System.map/ {match($0,"^parm=([^:]+):",a); print a[1];}'); do sym=${ksym#ksym_}; addr=$(awk '/ '$sym'$/ {print $1}' /boot/System.map-$(uname -r)); echo " $ksym=0x$addr "; done)
    modprobe mapfs $mapfsargs
  • 執行./loadmapfs即可

2005/12/16

記起來 - MapFS

MapFS implements a Linux filesystem which utilizes copy-on-write functionality and existing Linux filesystems to allow component filesystems (or portions thereof) to be combined into a single virtual filesystem that appears to be fully writable. It is written in C, uses the standard Linux kernel VFS and loadable module interfaces for defining new filesystem types to the kernel, and supports (at least) kernel versions 2.4.7 to 2.6.13.

URL: http://sourceforge.net/projects/mapfs

記起來 - UnionFS - A Stackable Unification File System

This project builds a stackable unification file system, which can appear to merge the contents of several directories (branches), while keeping their physical content separate. Unionfs is useful for unified source tree management, merged contents of split CD-ROM, merged separate software package directories, data grids, and more. Unionfs allows any mix of read-only and read-write branches, as well as insertion and deletion of branches anywhere in the fan-out. To maintain unix semantics, Unionfs handles elimination of duplicates, partial-error conditions, and more. Unionfs is part of the larger FiST project.

URL: http://www.fsl.cs.sunysb.edu/project-unionfs.html

2005/12/15

你今天roomba了嗎?

什麼是roomba? 簡單講他是個會到處跑的吸塵器, 可是如果以為就這麼簡單, 那就太委屈他了, 其實它應該算是個不折不扣的機器人! 別小看它, 人家可是系出名門呢 - 麻省理工(MIT), 其實注意roomba也好一段時間了, 上禮拜突然在網路上看到在賣, 猶豫幾天之後還是給他刷了一台回來, 不出幾天, roomba就在我家出現了!

2005/12/14

人生就像大便...

掛網掛到精神不濟時, 突然幾句話閃過眼角...

    人生就像大便 一旦沖走了就不會再回來
    人生就像大便 怎麼拉就是那模樣,但每次又不太一樣
    人生就像大便 有時候拉的很爽,有時候卻拉的很難過
    人生就像大便 你永遠不知道會拉出個什麼東東
    人生就像大便 想要怎麼結果,就要先怎麼栽
    人生就像大便 隨時都可能突然地想..嗯嗯
    人生就像大便 往往努力了半天卻只迸出幾個屁
    人生就像大便 就算點綴得再漂亮,其本質還是一樣
    人生就像大便 只有自己默默的勇敢面對
    人生就像大便 有青才敢大聲
    所以,就像大家常說的------->「你去吃大便啦!!」
    其實,他的本義是『你要認真融入自己的生活。』
真是好樣的...

2005/11/29


Tiffany&Co.

OpenWRT之外的選擇 - openwrt.alphacore.net

無意中發現除了OpenWRT.org之外, 另一個擁有許多OpenWRT軟體的網站: openwrt.alphacore.net, 這裡有一些OpenWRT.org所沒有的軟體, 像dhcpd以及bind!

URL: http://openwrt.alphacore.net/

2005/11/25

在Linksys WRT54GS裡安裝OpenVPN

我這台Linksys WRT54GS買來已經超過一年了, 雖然當初就是因為它可以安裝Linux, 所以才託朋友從國外帶回來, 結果到手之後卻沒時間好好研究一下, 只有偷懶去下載了Sveasoft的firmware回來過過乾癮, 其實Sveasoft的firmware寫的不錯, 把很多功能全做在firmware裡面, 可是跟OpenWRT比起來, OpenWRT還是比較自由一點, 而且Sveasoft雖然有免費的firmware, 但功能少了點, 比較強的firmware其實是要收費的, 所以整體來說, "啟毛"就是差了一點。最近閒來無事再逛網站的時候, 逛到了OpenWRT, 發現OpenWRT好像比以前改進了很多, 軟體多了, 文件也比以前完整, 各方面都有令人驚喜的進步, 所以花了點時間把以前一直沒時間裝的VPN裝起來看看, 如果可以在這麼小的AP裡放下這麼完整的功能, 那就可以把我現在用老PC裝組成的VPN網路慢慢用這些AP取代, 因為PC再穩還是會掛點, 尤其是硬碟, 超會出包, 每次gateway的硬碟一嗝屁, 家裡的Notes Server就連不上, 關心電話就會馬上響起, 真是傷腦筋, 如果換成無線AP, 硬碟的問題就沒了, 家裡的電費也可以省不少, 實在是個一舉多得的solution!

OpenWRT目前最新的版本是whiterussian rc4, 裝起來的感覺還不錯用, 基本核心約1.5M, 足以提供市售防火牆與無線AP的大部分功能, 另外還有許多packages可以安裝, 以提供其他強大的功能。值得讚賞的是在rc4這個版本裡新加入了web的管理介面, 雖然功能還很基本, 但是個不錯的開始。

其實OpenWRT裝進去之後, 這台WRT54GS活生生就是一台超小的Linux Box, 沒看到實體還真的分不出來跟裝在PC裡的Linux有什麼不同, 真是太神奇了, 安裝過程還算順利, 類似一般Linux的操作方式, 必要的packages裝一裝, openvpn的設定檔完全不用改就可以用, 再來就是在/etc/firewall.user裡面加入forward敘述, 讓封包可以在vpn通道與local lan互相傳遞就算大功告成。

2005/11/23

Cygwin NFS Server HOWTO

This document shows how to install a minimal Cygwin enviroment to host an NFS server. I wrote this up to help windows users who are not familiar with Linux conventions so the fussy details are all presented.

If you're using Windows XP, be sure to check out the last sections on firewall and network device problems before you try testing your configuration.

URL: http://www.csparks.com/CygwinNFS/index.xml

2005/11/18

ITE 8211F ATA-133安裝技巧

買了三片ITE 8211F的IDE卡, 結果發現驅動程式光碟只有Redhat9之前的driver, 真是香蕉牛奶咧, 誰還在用RH9阿, 2.6.x的driver還要自己編譯, 可是如果編譯可以的話, 勉強原諒彼好了, 結果不出所料, 真的不能編譯! 又來一個香蕉牛奶! 搞了半天, 原來彼driver還需要scsi driver裡面的幾個header files, 真是忍不住想罵髒話...彼不講, 誰知道啊, 好吧, 那就把需要header files準備好後, 想說應該沒問題了...make...兩秒鐘後...還是香蕉牛奶...他媽的爛聯陽, 出的什麼爛卡, 寫這是什麼爛driver啊, 居然有巨集沒定義! 看了半天之後發現這兩個巨集應該沒有影響, 就把它拿掉在make看看...喔! 天啊真是謝天謝地終於產生ko檔了! 有時真搞不懂這些寫driver的人, 也不知道是想留一手還是怎樣, 幹麻不把東西做好一點, 檔案一次就給完整不就好了, 缺東缺西, 程式還有問題, 還要使用者幫彼君擦屁股, 彼公司不但花錢請你來寫driver, 我們這些可憐的消費者可也是付出我們的血汗錢買你們東西, 怎知發現是爛貨, 真的是很衰...

我的OS是CentOS 4, 核心為2.6.9-5.0.3.EL, 首先kernel source要橋好, 我使用的是dvd iso檔中的kernel-sourcecode-2.6.9-5.0.3.EL.rpm

  • rpm -ivh kernel-sourcecode-2.6.9-5.0.3.EL.rpm
  • cd /usr/src/linux-2.6.9-5.0.3.EL
  • cp configs/kernel-2.6.9-i686.config ./.config
  • make oldconfig
  • make --> 這個make如果有錯也沒關係, 只要我們需要的header files有自動產生就可以了

然後是編譯kernel module, 以下是簡易步驟:

  • cd ~
  • mkdir ITERaid
  • cd ITERaid
  • unzip <PATH TO YOUR DOWNLOAD DIRECTORY>/LinuxDriver_it8211_093001-03.zip
  • perl -p -i -e 's/2.6.1/2.6.9-5.0.3.EL/' Makefile
  • perl -p -i -e 's/MOD_INC_USE_COUNT\;/\/\* MOD_INC_USE_COUNT\; \*\//' iteraid.c
  • perl -p -i -e 's/MOD_DEC_USE_COUNT\;/\/\* MOD_DEC_USE_COUNT\; \*\//' iteraid.c
  • cp -a /usr/src/linux-2.6.9-5.0.3.EL/drivers/scsi/{scsi, hosts, scsi_obsolete, scsi_typedefs}.h /usr/src/linux-2.6.9-5.0.3.EL/drivers/scsi/scsi_module.c .
  • make
  • install -m 644 iteraid.ko /lib/modules/2.6.9-5.0.3.EL/kernel/drivers/scsi/
  • depmod -a

2005/11/07

JavaSVN

JavaSVN is a pure Java Subversion client library. You would like to use JavaSVN when you need to access or modify Subversion repository from your Java application, be it a standalone program, plugin or web application. Being a pure Java program, JavaSVN doesn't need any additional configuration or native binaries to work on any OS that runs Java. On this site you will also find instructions on how to make existing programs use JavaSVN instead of native javahl bindings. * No external binaries or libraries are needed to work with Subversion repository. * JavaSVN supports http, https, svn and svn+ssh connection protocols. * Low level API allows effective direct Subversion repository access. * JavaSVN is compatible with applications that already use native javahl bindings. http://tmate.org/svn/