2008年12月8日

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;
}

2008年12月2日

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.

2008年9月26日

Resetting MySQL Root Password on Unix Systems

Use the following procedure for resetting the password for any MySQL root accounts on Unix. The instructions assume that you will start the server so that it runs using the Unix login account that you normally use for running the server. For example, if you run the server using the mysql login account, you should log in as mysql before using the instructions. (Alternatively, you can log in as root, but in this case you must start start mysqld with the --user=mysql option. If you start the server as root without using --user=mysql, the server may create root-owned files in the data directory, such as log files, and these may cause permission-related problems for future server startups. If that happens, you will need to either change the ownership of the files to mysql or remove them.)

  1. Log on to your system as the Unix mysql user that the mysqld server runs as.

  2. Locate the .pid file that contains the server's process ID. The exact location and name of this file depend on your distribution, hostname, and configuration. Common locations are /var/lib/mysql/, /var/run/mysqld/, and /usr/local/mysql/data/. Generally, the filename has an extension of .pid and begins with either mysqld or your system's hostname.

    You can stop the MySQL server by sending a normal kill (not kill -9) to the mysqld process, using the pathname of the .pid file in the following command:

    shell> kill `cat /mysql-data-directory/host_name.pid`

    Note the use of backticks rather than forward quotes with the cat command; these cause the output of cat to be substituted into the kill command.

  3. Create a text file and place the following statements in it. Replace the password with the password that you want to use.

    UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
    FLUSH PRIVILEGES;

    The UPDATE and FLUSH statements each must be written on a single line. The UPDATE statement resets the password for all existing root accounts, and the FLUSH statement tells the server to reload the grant tables into memory.

  4. Save the file. For this example, the file will be named /home/me/mysql-init. The file contains the password, so it should not be saved where it can be read by other users.

  5. Start the MySQL server with the special --init-file option:

    shell> mysqld_safe --init-file=/home/me/mysql-init &

    The server executes the contents of the file named by the --init-file option at startup, changing each root account password.

  6. After the server has started successfully, delete /home/me/mysql-init.

You should now be able to connect to MySQL as root using the new password.

Alternatively, on any platform, you can set the new password using the mysql client (but this approach is less secure):

  1. Stop mysqld and restart it with the --skip-grant-tables option.

  2. Connect to the mysqld server with this command:

    shell> mysql
  3. Issue the following statements in the mysql client. Replace the password with the password that you want to use.

    mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass')
    -> WHERE User='root';
    mysql> FLUSH PRIVILEGES;

You should now be able to connect to MySQL as root using the new password.

2008年1月10日

在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
以上是我安裝的過程,可能並不適合所有環境。

精選文章

Ubuntu 20.04 LTS VM syslog 出現 multipathd 錯誤時的處置措施

在 VM 上安裝完 Ubuntu 20.04 LTS 版本後在一次例行性檢查中發現 syslog 中發現一直跳出 multipathd 的錯誤,如下圖 這問題產生的原因是 ESXi 不會產生 udev 必要的資訊,所以 udev 就無法產生出相對應的 /dev/disk/by-i...