聚會時間公告: 因應COSCUP 2011, Kalug 8月份休會一次

五月 15, 2009
» Install Two HP FC1142SR 4Gb PCI-e HBA Card Using QLogic Fibre Channel HBA Driver (qla2xxx-8.02.21) in Ubuntu 8.04.1

Make Provision Driver Building Environment

  1. apt-get install build-essential
  2. apt-get install kernel-package
  3. make sure that can find linux-source tarball (ex: linux-source-2.6.24.tar.bz2) in path: /usr/src
  4. extract and decompress linux-source tarball (ex: tar -xvjf linux-source-2.6.24.tar.bz2)
  5. change directory to /lib/modules/{kernel version} (ex: cd /lib/modules/`uname -r`)
  6. create a link to linux-headers path with the name build. (ex: ln -s /usr/src/`uname -r` build)
  7. create a link to linux-source path with the name build. (ex: ln -s /usr/src/linux-source-2.6.24 source)
Download QLogic Fibre Channel HBA Driver Source Code
  1. change to your home directory
  2. wget ftp://ftp.qlogic.com/outgoing/linux/beta/8.x/qla2xxx-src-v8.02.21.tar.gz
  3. extract and decompress source code tarball file (ex: tar -xvzf qla2xxx-src-v8.02.21.tar.gz)
Modify The Driver Source Code
  1. edit file extras/build.sh at first line "#!/bin/sh" to "#!/bin/bash"
    in Ubuntu Linux the default "sh" had been symbolic linking to "dash", there are some functions can't be executable in build.sh scrip.
  2. edit file qla_def.h, remark line 33 ~ 35.
  3. edit file qla_isr.c,. replace "SA_INTERRUPT|SA_SHIRQ" with "IRQF_DISABLED|IRQF_SHARED" at line 2100.
  4. edit file qla_os.c, add "struct" in front of "kmem_cache *srb_cachep;" at line 40.
  5. remove ones of NULL at line 5723 in file qla_os.c
  6. replace "pci_module_init" with "pci_register_driver" at line 5759 in file qla_os.c
Get ready to build Driver
  1. change user to root.
  2. execute "extras/build.sh" in qla2xxx-8.02.21 directory.
Now You Can Install this Driver, If Everything is O Kay.
  1. execute "extras/build.sh install" to install Driver.
  2. execute "update-initramfs -v -u -k `uname -r`" to update initramfs image.
Reboot System to Test New Initial Ramdisk and Pray It Can Work..... just kindling ^_^

If this Document can help you,
Please
me. Thanks a lot.

十二月 8, 2008
» DHCP OPTION 43 for Lightweight Cisco Aironet Access Points Configuration Example

authoritative;
ddns-update-style none;

option time-offset 28800;
option domain-name-servers 140.127.198.1;

#Define Space
option space Cisco_LWAPP_AP;
option Cisco_LWAPP_AP.server-address code 43 = string;

class "Vendor-Identifier" {
match option vendor-class-identifier;
}

subnet 172.17.0.0 netmask 255.255.255.0 {

option routers 172.17.0.254;
option subnet-mask 255.255.255.0;
option domain-name "AP.Example.com";
option broadcast-address 172.17.0.255;

#Wireless Controler IP Address Configure Option
subclass "Vendor-Identifier" "Airespace.AP1200" {
option vendor-class-identifier "Airespace 1200";
vendor-option-space Cisco_LWAPP_AP;
option Cisco_LWAPP_AP.server-address "172.17.10.1";
}

subclass "Vendor-Identifier" "Cisco AP c1500" {
option vendor-class-identifier "Cisco AP c1500";
vendor-option-space Cisco_LWAPP_AP;
option Cisco_LWAPP_AP.server-address "172.17.10.2";
}

subclass "Vendor-Identifier" "Cisco AP c1200" {
option vendor-class-identifier "Cisco AP c1200";
vendor-option-space Cisco_LWAPP_AP;
option Cisco_LWAPP_AP.server-address "172.17.10.3";
}

range dynamic-bootp 172.17.0.1 172.17.0.200;

default-lease-time 43200;
max-lease-time 86400;
}

一月 13, 2008
» 在Ubuntu上安裝兩張HP FC1142SR 4Gb PCI-e HBA Card實現Failover的功能

原本在Ubuntu 7.10上所提供的HBA (Fibre Channel Host Bus Adapter) module並不支援Failover的功能,所以只好Download HP官方的Package下來試試看,沒想到HP的RPM Package只支援RedHat及SuSe。與RPM Package裡的Install Scripts奮鬥了許多天及經歷了無數次的失敗,自尊心備受打擊的我只好放棄HP的RPM Package,轉而去尋找新的解決辦法,正巧看到QLogic的官方網站所提供的原始碼可以在別的平台上編譯,下載下來後試著編譯看看,發現感覺還不賴,裡面提供的Install Scripts不會讓我已經很脆弱的自尊心再次受到打擊,Readme檔案裡寫的安裝步驟也是屬於Monkey等級 (只要是Monkey看的懂,照著做就一定會成功的等級)很適合禁不起任何打擊的我,但是愉快的過程總是短暫的,在編譯的時候居然跳出了錯誤的訊息,說找不到Linux的Source Code,仔細看了一下錯誤的訊息,發現Install Scripts去找Linux Source Code的路徑不對,但是我也懶的改了,所以就只單純建了一個symbolic link想騙過Install Scripts,沒想到還真的騙過去了 (真不愧是Monkey Level),最後編譯完成後也同時更新了initrd的image就懷著滿心的期待把系統Reboot了,沒想到開機完成後SAN的設備居然告訴我Link Failure,還好這時我的自尊心已經恢復的差不多了,看一下開機時的訊息(使用dmesg的指令)發現HBA的Module 在initalize時發生了錯誤,無法被載入到Kernel裡,發生錯誤的Function為"pci_module_init()",請示過Google大神後,Google大神回覆說可以把pci_module_init()pci_register_driver()置換就可以了,所以我又回到放有原始碼的QLogic目錄裡尋找Source Code裡有使用到pci_module_init()的檔案(用grep -r pci_module_init *.c的指令)發現有5的檔案,分別是ql2100.cql2200.cql2300.cql2322.c以及ql2400.c。將這些檔案修改後從新再編譯一次,之後再從新更新一次initrd image。更新完initrd image後重新開機後就發現可以將SAN給掛在上了,真是可喜可賀啊,差點就要開香檳慶祝了。以下是我的步驟:

  1. 先變身成Super User (sudo su -)
  2. 安裝build-essential (apt-get install build-essential)
  3. 安裝linux-headers-2.6.22-14-generic (apt-get install linux-headers-2.6.22-14-generic)
  4. 安裝linux-source-2.6.22 (apt-get install linux-source-2.6.22)
  5. 解開在/usr/src/linux-source的Package (tar -xvjf linux-source-2.6.22.tar.bz2)
  6. /lib/modules/2.6.22-14-generic目錄裡建立一個symbolic link名稱為source,連結指到/usr/src/linux-source-2.6.22 (ln -s /usr/src/linux-source-2.6.22 /lib/modules/2.6.22-14-generic/source)
  7. 在QLogic的官方網站下載qla2xxx-v8.01.07.15-2-dist.tgz (wget http://download.qlogic.com/drivers/60471/qla2xxx-v8.01.07.15-2-dist.tgz)
  8. 解開qla2xxx-v8.01.07.15-2-dist.tgz (tar -xvzf qla2xxx-v8.01.07.15-2-dist.tgz)
  9. 解開後進入到目錄裡 (cd qlogic)
  10. 執行./drvrsetup
  11. 執行完畢後會產生名稱為qla2xxx-8.01.07.15的目錄
  12. 切換到qla2xxx-8.01.07.15目錄裡 (cd qla2xxx-8.01.07.15)
  13. 因原先寫的原始碼在載入module時所使用的function並不適用於目前的kernel,所以要修正一下,先執行grep -r pci_module_init *將不符合的檔案列出,並修改列出的檔案,把pci_module_init置換成pci_register_driver
  14. 執行extras/build.sh new進行編譯module的動作
  15. 若編譯的過程中沒有錯誤的話,就可以執行extras/build.sh install來安裝module
  16. 安裝完後要執行update-initramfs -c建立新的initrd影像檔
  17. reboot來啟用新的initrd
以上是我安裝的過程,可能並不適合所有環境。

七月 23, 2007
» 如何掛載initrd的影像檔

initrd的檔案格式在kernel 2.4及kernel 2.6是不一樣的
kernel 2.4的掛載方式:

  1. mkdir initrd
  2. cp /boot/inirtd.img ./initrd.img.gz
  3. gunzip initrd.img.gz
  4. mount -t ext -o loop initrd.img ./initrd
kernel 2.6的目前還沒研究出掛載的方式,但可以用cpio把整個影像檔解開來:
  1. mkdir initrd
  2. cp /boot/inirtd.img ./initrd.img.gz
  3. gunzip initrd.img.gz
  4. cp initrd.img initrd/
  5. cd initrd/
  6. cpio -i --make-directories < initrd.ing

support:

biggo.com.tw

biggo.sg

A Django site.