2010-06-05

[筆記] 在 eeebox (B202) 上裝 FreeBSD 8 然後用上面的 Ralink 無線網卡

  1. grab the driver from http://repo.or.cz/w/ralink_drivers/rt2860_fbsd8.git
  2. copy the driver to the target machine, extract, make install, and `kldload rt2860`
  3. assume you know the wireless channel (ex: 6,11.. etc). if you don't know, run WirelessNetView on a windows box.
  4. write ur own /etc/wpa_supplicant.conf:
    network={
    ssid="CCC"
    psk="1111111111"
    }
  5. cmd instructions
    # ifconfig wlan0 create wlandev rt28600 wlanmode sta
    # ifconfig wlan0 channel 11 ssid CCC up
    # wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
    (now switch to another VT)
    # dhclient wlan0

其它自己看:
http://wiki.freebsd.org/AsusEee
http://www.freebsd.org/doc/en/books/handbook/network-wireless.html
http://forums.freebsd.org/showthread.php?t=7010
http://www.nirsoft.net/utils/wireless_network_view.html

2009-06-06

[心得] 在 freebsd 上使用 binary packages

轉錄自:[心得] 在 freebsd 上使用 binary packages

作者:chwong

最近拿到一台機器,裝了 FreeBSD 7.2,由於機器記憶體很少編譯會非常慢,所以嘗試了用官方現成編好的 binary packages來安裝軟體。以下是一些心得,可能有些不妥之處,還請大家提醒。

  • Step1: 設定環境變數 PACKAGESITE
    這裡是要設定到哪抓 PACKAGE,大致的設定方法是
    (csh) setenv PACKAGESITE ftp://ftp.tw.freebsd.org/pub/FreeBSD/ports/`uname -p`/packages-7-stable/All/
    (sh) export PACKAGESIT=ftp://ftp.tw.freebsd.org/pub/FreeBSD/ports/`uname -p`/packages-7-stable/All/
    Ps. 這裡使用 packages-7-stable 的理由是希望儘量使用新版軟體。7 表示 version 7,stable 則會有比較新的軟體
  • Step2: 利用 pkg_replace 安裝軟體
    在這我用 pkg_replace (ports-mgmt/pkg_replace) 作為套件輔助的工具,安裝軟體的方法很簡單:
    pkg_replace -NP category/name
    N 表示 new port/package,P 表示採用 binary package
    Ps. 由於 portupgrade 太慢,portmaster 看似不支援binary package,所以我用 pkg_replace
  • Step 3: 此時會有下列幾種情況:
    Case 1: 安裝順利成功
    當這個 package 不 depend on 其他的 packages 或是所有 depend 的 packages 都已經安裝了,並且在 ports 中對應版本的 package 在 ftp server 上找得到。恭喜! 結果像 log1

    Case 2: 下載不到 package 而失敗
    當這個 binary package 在伺服器上找不到的時候,會出現這個情況,此時直接連上 ftp server,找尋目前最新版本,利用 pkg_add -r 安裝 (此時直接寫軟體名+版本號,不要加 catelog) ,範例在 log2

    Case 3: 下載到 package 卻安裝失敗
    當這個 packages 有 depend 到的 package 未安裝的時候,pkg_replace 會安裝失敗,此時將同樣版本號的軟體利用 pkg_add -r 安裝即可 (直接寫軟體名+版本號,不要加 catelog),pkg_add 會幫你下載需要的 packages 一併安裝。範例見 log3

    利用上面的方法,我已經可以處理大多數的軟體安裝了。(有些軟體不加 option 自己編會不好用的例外)
    之後需要做軟體更新的時候,只要 pkg_replace -P package-name (或者 pkg_replace -aP 升級所有軟體) 就好。但值得注意的是發生 dependency 改變的時候,升級軟體會失敗,這時候就得觀察缺的package是哪些,另外用 pkg_replace -NP 或者 pkg_add -r 加進來,才能夠正確升級。

    最後補充說明:
    pkg_replace 若是升級到 0.9.0 (RC2) (20080129) 貌似可以避免掉 case 3 的問題,但 ports 裡頭的資料還沒更新,等更新之後應該就只剩下 ftp server 沒有最新 package 的時候才需要用 pkg_add 先裝舊版頂著用了。

  • 2009-04-01

    [硬體] QLOGIC QLE2460

    原文在:[硬體] QLOGIC QLE2460 @ PIXNET Lab

    前陣子公司進了台 RAIDBOX,uplink是接光纖的,所以廠商拿 QLOGIC QLE2460 來給我們測試合不合用,上面的控制晶片型號是 ISP2432。



    QLE2460 有兩種版本,右邊晶片上面標 SINGAPORE(亮的)是比較早期的版本,左邊比較近期標的就是 CHINA(黑的),目前用起來還沒發現有什麼差異,晶片的發熱也不會太強而有力,機殼內的空氣對流有弄好應該就不會過熱。

    在 FreeBSD 上,device isp 在 6.3-RELEASE 以後開始有支援,而且還有 device ispfw 這個 firmware module 可以硬上韌體比較舊的卡。

    我們家的機器是 7.1-RELEASE,用 /boot/loader.conf 的方式載入 isp 和 ispfw:
    isp_load="YES"
    ispfw_load="YES"

    開機有顯示 ispfw 有提供以下 isp 的 firmware:
    kernel: registered firmware set <isp_1040>
    kernel: registered firmware set <isp_1040_it>
    kernel: registered firmware set <isp_1080>
    kernel: registered firmware set <isp_1080_it>
    kernel: registered firmware set <isp_12160>
    kernel: registered firmware set <isp_12160_it>
    kernel: registered firmware set <isp_2100>
    kernel: registered firmware set <isp_2200>
    kernel: registered firmware set <isp_2300>
    kernel: registered firmware set <isp_2322>
    kernel: registered firmware set <isp_2400>

    然後抓到卡片:
    kernel: isp0: <Qlogic ISP 2432 PCI FC-AL Adapter> port 0xc800-0xc8ff mem 0xfdcfc000-0xfdcfffff irq 16 at device 0.0 on pci5
    kernel: isp0: [ITHREAD]
    kernel: isp0: Board Type 2422, Chip Revision 0x2, loaded F/W Revision 4.0.20

    因為我們拿到的卡上面的韌體是 4.00.30,不需要 ispfw 來蓋掉,所以在 /boot/device.hints 加上:
    hint.isp.0.fwload_disable="1"
    (直接拿掉 ispfw_load="YES" 會看到 isp 叫找不到 ispfw 的訊息)

    所以重開機抓到的訊息就變成:
    kernel: isp0: Board Type 2422, Chip Revision 0x2, resident F/W Revision 4.0.30

    之後也順利抓到 RAIDBOX:
    kernel: pass0 at isp0 bus 0 target 0 lun 0
    kernel: pass0: <STORAGE RAID 1.0> Fixed Direct Access SCSI-5 device
    kernel: pass0: 400.000MB/s transfers
    kernel: pass0: Command Queueing Enabled
    kernel: GEOM: new disk da0
    kernel: da0 at isp0 bus 0 target 0 lun 0
    kernel: da0: <STORAGE RAID 1.0> Fixed Direct Access SCSI-5 device
    kernel: da0: 400.000MB/s transfers
    kernel: da0: Command Queueing Enabled
    kernel: da0: 8566784MB (17544774528 512 byte sectors: 255H 63S/T 1092111C)

    不過,開始把 da0 卯上來用之後,就會一直噴訊息出來:
    kernel: (da0:isp0:0:0:0): SYNCHRONIZE CACHE. CDB: 35 0 0 0 0 0 0 0 0 0
    kernel: (da0:isp0:0:0:0): CAM Status: SCSI Status Error
    kernel: (da0:isp0:0:0:0): SCSI Status: Check Condition
    kernel: (da0:isp0:0:0:0): ILLEGAL REQUEST asc:20,0
    kernel: (da0:isp0:0:0:0): Invalid command operation code: Command byte 0 bit 0 is invalid
    kernel: (da0:isp0:0:0:0): (da0:isp0:0:0:0): SYNCHRONIZE CACHE. CDB: 35 0 0 0 0 0 0 0 0 0
    kernel: (da0:isp0:0:0:0): ILLEGAL REQUEST asc:20,0
    kernel: (da0:isp0:0:0:0): Invalid command operation code: Command byte 0 bit 0 is invalid
    kernel: Unretryable error

    翻了幾下 mailing list,看來是這個 RAIDBOX 不支援 SYNCHRONIZE CACHE 的指令,不是卡片的問題,只好等廠商升級 RAIDBOX 的韌體,看看能不能改善這個狀況。

    --
    其實我們總共拿到三張卡在做測試,除了一張韌體是 4.03.01 以外,其他都是 4.00.0x 的版本。

    初步測試的時候,有一張 4.00.0x 是開機就偵測不到 RAIDBOX,先放棄,然後發現 4.03.01 不會噴上面那一堆 ILLEGAL REQUEST 的訊息!當時還不確定 RAIDBOX 不支援 SYNCHRONIZE CACHE 的指令,以為這一張是完美的解藥,就進行詳細測試。

    可是在詳細測試 4.03.01 後,發現這張卡不正常:(開機用 verbose mode 才看到下面這些訊息)
    kernel: isp0: Port Database Changed
    kernel: isp0: Firmware State <Config Wait->Ready>
    kernel: isp0: 2Gb link speed/s
    kernel: isp0: HBA PortID 0x0000ef N-Port Handle 0, Connection Topology 'Private Loop'

    明明是 4Gb 的卡,怎麼會抓成 2Gb,而且 HBA PortID 也是錯的,其他卡的正常訊息像這樣:
    kernel: isp0: Port Database Changed
    kernel: isp0: Firmware State <Config Wait->Ready>
    kernel: isp0: 4Gb link speed/s
    kernel: isp0: HBA PortID 0x000001 N-Port Handle 125, Connection Topology 'Private Loop'

    而且其他卡都能正確抓到 RAIDBOX,只有 4.03.01 的不會回報 pass0/da0 出來用,初步認為是 4.03.01 的韌體有問題,所以就請廠商把這三張卡都更新韌體到 4.00.30 版本。

    再次測試,原本有一張 4.00.0x 偵測不到 RAIDBOX 的卡恢復正常運作,連 pass0/da0 都有回報出來,而 4.03.01 降成 4.00.30 的卡還是一樣的錯誤訊息,後來判定這張卡應該是哪邊有故障,完全不能使用。

    所以現在上線跑的卡是 4.00.30 版本的韌體,依然努力地噴著訊息運作著。

    2009-03-26

    MFC 是這樣嗎(誤)

    13:33 < kenyao> freebsd 7 stable linux module 编译出错13:34 < kenyao> /usr/src/sys/modules/linux/../../i386/linux/linux_sysvec.c:In function 'exec_linux_setregs':
    13:35 < kenyao>
    /usr/src/sys/modules/linux/../../i386/linux/linux_sysvec.c:808: error:
    / '__LINUX__NPXCW__' undeclared (first use in this function)
    13:35 < kenyao> anyone meets that error ?
    13:43 < Guest33942> kenyao: me2
    13:45 < kenyao> Oh
    13:46 < kenyao> prerelease 不是更新很快的吗?我等了几天了还是这样!
    14:00 <@yhchan> kenyao: 再更新看看吧,試試看 jhb@ 的 r190418
    14:41 < kenyao> I direct merge the codes of linux module with 7.1release's,
    it works!
    14:41 <@vvlng> 7.1prerelease 比 7.1release 還早吧
    14:43 < kenyao> But i merge it with 8-current, more errors. linux.ko is not
    important for me.
    14:43 < kenyao> 我指7.2 prerelease
    14:44 <@vvlng> 你就專心用 7.1-RELEASE 吧
    14:59 < kenyao> 但现在可以用了,应该没什么问题。
    15:00 <@yhchan> MFC 是這樣嗎(歪頭)
    15:15 <@chinsan> XD
    15:30 <@knight> MFC 和 KFC 是什麼關係 *誤*
    15:31 <@S3pPoor> 麥當勞炸機, 肯德基炸機...
    15:37 < ceciltsai> 這解釋真是經典...*lol
    15:42 <@knight> 炸機還是炸 w|ng?
    15:42 * knight 逃

    2009-03-24

    make love (羞)

    今天有道友提到 make love 的訊息變了,特地測試了幾下。

    FreeBSD 6.1-RELEASE-p13 [~] [22:54/W6] make love
    make: don't know how to make love. Stop
    (這是一般會看到的訊息...)

    FreeBSD 7.1-RELEASE [~] [22:54/W1] make love
    Not war.
    (這個反應變了!)

    FreeBSD 4.11-RELEASE-p26 [~] [22:54/W11] make love
    "/etc/make.conf", line 0: Cannot open /etc/make.conf
    make: fatal errors encountered -- cannot continue
    (找不到套套的意思? XD)

    FreeBSD 4.11-RELEASE-p26 [~] [22:54/W11] gmake love
    gmake: *** No rule to make target `love'. Stop.
    (找不到教材的意思? XD)

    2009-01-18

    FreeBSD 版號後面的 p 與 # 意思

    ptt 的 osuer 問到了
    7.0-RELEASE-p3 FreeBSD 7.0-RELEASE-p3 #3

    7.0-RELEASE FreeBSD 7.0-RELEASE #0
    #後面的 數字是代表 使用新kernel 嗎

    關於這個 #p 可以看看 /usr/src/sys/conf/newvers.sh

    # 後面數字的初始值是 0,隨著每次重新 build 會累加次數
    也就是 echo `expr ${v} + 1` > version
    比方說打 expr 0 + 1 會得到 1

    p 後面的數字,簡單講代表共歷經幾發 SA patch 數
    舉個例子:
    2008-12-23 發佈了 FreeBSD-SA-08:13.protosw
    2009-01-07 發佈了 FreeBSD-SA-09:01.lukemftpd 以及 FreeBSD-SA-09:02.openssl
    2009-01-13 發佈了 FreeBSD-SA-09:03.ntpd 以及 FreeBSD-SA-09:04.bind

    先就 2008-12-23 的講,請看一下 FreeBSD-SA-08:13.protosw.asc
    裡面會有列出哪些已經是有修正過的版本 (Corrected)
    Corrected: 2008-12-23 01:23:09 UTC (RELENG_7, 7.1-PRERELEASE)
    2008-12-23 01:23:09 UTC (RELENG_7_1, 7.1-RC2)
    2008-12-23 01:23:09 UTC (RELENG_7_0, 7.0-RELEASE-p7)
    2008-12-23 01:23:09 UTC (RELENG_6, 6.4-STABLE)
    2008-12-23 01:23:09 UTC (RELENG_6_4, 6.4-RELEASE-p1)
    2008-12-23 01:23:09 UTC (RELENG_6_3, 6.3-RELEASE-p7)

    所以若原先你的是 RELENG_7_0 歷經這次 SA 的 patch 更新、compile、install 之後,會是 7.0-RELEASE-p7 才對,因為這是 7.0-RELEASE 出來之後所歷經的第七次 patch。

    而 2009-01-07 同日一起發佈的 SA-09:01.lukemftpdFreeBSD-SA-09:02.openssl 若你在這之後也再次循 RELENG_7_0 更新會是 7.0-RELEASE-p8 才對。

    同理 2009-01-13 同日所發佈的 FreeBSD-SA-09:03.ntpdFreeBSD-SA-09:04.bind 若你在這之後也再次循 RELENG_7_0 更新會是 7.0-RELEASE-p9 才對。



    而 FreeBSD SA 的命名規則是 SA-西元年度後兩位-該年度第幾發


    以上如有說錯之處,還請各方先進指正。

    2008-04-19

    CJKwidth on screen

    20080406:18:34 <@sunpoet> 請問一下,screen with big5-2003 patch,也設了 WITH_CJK,現在全形符號顯示的時候會變成半形符號加空格,就是寬度不變,但是顯示在左半邊,會是哪邊沒改到?

    20080406:19:05 <@mhsin_bsd> sunpoet: ^A:cjkwidth on
    20080406:19:06 <@mhsin_bsd> sunpoet: 然後你的 terminal emulator(PuTTY, rxvt, etc.)也要設相對應的 ambiguous width 設定
    20080406:19:19 <NotExist> sunpoet: putty的話Windows->Translation右邊有Treat CKJ as wide
    20080406:19:21 <@mhsin_bsd> sunpoet: 看到會加空白 => screen cjkwidth 沒開;符號變成窄版的 => terminal emulator 的 ambiguous width 沒設成寬字元
    20080406:20:57 <@sunpoet> mhsin_bsd: NotExist: thanks,我少測了同時設 cjkwidth on 跟 Treat CJK as wide 的情形,現在解決了。

    *       *       *

    20080418:00:02 <@sunpoet> 原來之前改錯地方,現在 screenrc 裡面可以用 -b/-g 指定該視窗要哪個 encoding 啦。
    20080418:00:09 <NotExist> sunpoet: 你用哪版@@ 我man沒看到 囧rz
    20080418:00:14 <@sunpoet> NotExist: 自己 patch ...
    20080418:00:19 <@sunpoet> NotExist: http://sunpoet.net/FreeBSD/screen-big5-gbk
    20080418:00:20 <@sunpoet> 像這樣連大神的站 screen -b -t abpe 2 env LANG=C LC_ALL=en_US.ISO8859-1 telnet abpe.org
    20080418:00:23 < NotExist> sunpoet: XD 感謝
    20080418:00:24 <@sunpoet> NotExist: 因為我懶惰 :p
    20080418:00:24 < NotExist> sunpoet: 科技始終來自於惰性 :p<
    20080418:06:55 @Eintisy> sunpoet: 雖然只對 big5 的人有用,但 telnet 好像大部分也是 big5 的 bbs 會用... 這個 patch 幹得好啊~ :)

    *       *       *

    18:48 <@ijliao> 好像該來把 shell 環境弄成 utf-8 的...
    18:48 <@ijliao> 不過不知道要怎麼上 bbs orz 用 screen 再轉嗎 @_@
    18:49 <@mhsin_bsd> ^A:encoding big5?
    18:49 <@mhsin_bsd> 設 key binding 快速切換?
    18:50 <@mhsin_bsd> ijliao: 可以考慮留幾個窗設在 big5 專門上 B
    18:50 <@ijliao> hmmm... 是個好主意
    19:48 <@sunpoet> ijliao: 用 screen 轉啊,我現在上小鹿鹿跟 ptt/ptt2 都是這樣
    20:04 <@knight> sunpoet: screen 怎麼 default utf8 然後下參數開 big5 window?
    20:06 <@mhsin_bsd> ^A:defencoding utf8 ?
    20:07 <@mhsin_bsd> 我都開窗之後再改 encoding
    20:07 <@vvlng> 不是有人有 keybinding 的 config ?
    20:07 <@vvlng> bind b encoding big5 utf-8
    20:07 <@vvlng> bind u encoding utf-8 utf-8
    20:08 <@vvlng> ctrl-a b 就變成 big5 window
    20:23 <@lwhsu> 不過這樣有些 asciiart 看起來會怪怪的 @@
    20:23 <@knight> y
    20:23 <@knight> 不過那不是重點, 重點是想要搞 auto start script :~
    20:23 <@knight> .screenrc 裡好像沒辦法自動開 big5 window
    20:24 <@lwhsu> 多按一兩個鍵還可以接受 但是畫面醜是好幾個小時的事阿 :~
    20:24 <@Jedi_> 腦內補完吧 *誤*
    20:25 <@lwhsu> 我還是乖乖另外開一個 terminal 用 big5...
    20:25 <@yinjieh> 不能開完再弄 encoding ?
    20:25 <@mhsin_bsd> lwhsu: 因為沒上 cjkwidth?
    20:25 <@mhsin_bsd> knight: 改 defencoding 再開?
    20:25 <@knight> ...
    20:26 <@lwhsu> mhsin_bsd: 你是說這個 option? CJK "Treat CJK ambiguous characters as full width" OFF
    20:26 <@lwhsu> 我不確定我這台有沒有開...
    20:26 <@knight> 就是想要 default utf8 然後用 screenrc 自動開一兩個窗 big5
    20:27 <@mhsin_bsd> lwhsu: 那是 PuTTY 那邊的選項,然後 screen 也有個 cjkwidth 要調
    20:28 <@lwhsu> mhsin_bsd: 我丟的那個是 sysutils/screen/Makefile 裡面的阿 @@
    20:28 <@mhsin_bsd> knight: 改 defencoding、開窗、再改回來不行嗎?
    20:28 <@lwhsu> mhsin_bsd: putty 裡面也有? 我找一下
    20:28 <@mhsin_bsd> lwhsu: 喔喔看錯了 XDrz
    20:29 <@mhsin_bsd> lwhsu: 對,Makefile 那個 KNOB 要開,然後 screen 就會有個 cjkwidth {on|off} 可以調
    20:29 <@lwhsu> mhsin_bsd: 我剛看到了, 正在試
    20:29 <@mhsin_bsd> 和 PuTTY 的都開起來
    20:30 <@lwhsu> mhsin_bsd: 開了以後也很糟阿 XD
    20:31 <@lwhsu> mhsin_bsd: 是都變 wide 了沒錯, 但是畫面還是會亂 @@
    20:31 <@yinjieh> 開 make config 會很炫喔
    20:32 <@knight> mhsin_bsd: 你說的方法似乎有效哩, thx :)
    20:33 <@yinjieh> 賀
    20:34 <@yinjieh> http://flickr.com/photos/37036611@N00/1676416856/
    20:35 <@vvlng> yinjieh: refan's patch 也上一下吧
    20:36 <@yinjieh> oh ok
    20:36 <@mhsin_bsd> knight: :p
    20:37 <@mhsin_bsd> lwhsu: 這...可能是吃到 UAO 字 / 一字雙色吧 @_@
    20:37 <@lwhsu> mhsin_bsd: 嗯, 我想也是那些惡搞的東西 XD
    20:38 <@mhsin_bsd> yinjieh: ncurses 表格是個很麻煩的東西
    20:38 <@yinjieh> mhsin_bsd: yes, 所以我還是暫時都關掉 沒辦法 XD
    20:38 <@mhsin_bsd> 上次好像研究過,忘了結論是什麼(ncurses 要 patch?)
    20:39 <@yinjieh> ncurses 又在 base ? XD
    20:40 <@mhsin_bsd> 呃還是 curses?
    20:40 < rafan> 我自己是 patch screen
    20:41 <@mhsin_bsd> rafan: how?
    20:41 <@mhsin_bsd> 印象中是 curses 把表格當 half-width 造成的(?)
    20:43 <@rafan> 換成 -+| XD
    20:43 <@rafan> http://www.rafan.org/patch/big5/screen/files/patch-poorman-drawing
    20:44 <@sunpoet> knight: 你是要寫在 screenrc 裡面自動開 big5/gbk 視窗嘛?
    20:45 <@sunpoet> 最近的心得 PuTTY Treak CJK ambiguous characters as full 要選,screenrc 裡面加 defencoding utf8 , cjkwidth on
    20:45 <@sunpoet> 編的時候要 WiTH_CJK
    20:46 <@knight> sunpoet: y
    20:46 <@knight> 那個我倒還沒這麼介意
    20:47 <@sunpoet> knight: 請取用這個 patch, http://sunpoet.net/FreeBSD/screen-big5-gbk
    20:47 <@knight> sunpoet: thx
    20:47 <@rafan> 不是可以用 keybinding 設嗎?
    20:48 <@sunpoet> knight: 然後在 screenrc 裡面的 screen 可以加 -b/-g 指定 big5/gbk
    20:48 <@sunpoet> rafan: 那個還要手按,這個 patch 是可以直接在 screenrc 裡面指定
    20:48 <@knight> !
    20:48 <@sunpoet> rafan: 兩種不衝突啊,我都用了
    20:48 <@knight> sunpoet: 這個就是我要的啊啊啊
    20:49 <@sunpoet> knight: 因為我也需要,所以 ... :P
    20:49 <@knight> 這個應該不限是在哪個版本吧
    20:49 <@sunpoet> knight: 不限,我是拿 4.03 改的
    20:50 <@sunpoet> 其實就只是做 encoding big5 utf8 的動作 :P
    20:51 <@knight> y
    20:56 <@mhsin_bsd> rafan: 喔我懂了,就跟 PuTTY 的 poorman's drawing 一樣 XD
    20:59 <@rafan> mhsin_bsd: 不過 putty poorman's 我每次都用不成功 orz

    --
    2008/10/14 Updated: sunpoet 的 patch 換到 http://sunpoet.net/FreeBSD/screen-big5-gbk