Archive for the 'FreeBSD' Category

Page 2 of 4

eaccelerator + php5

剛剛在弄 mediawiki 才發現原來我家的 eaccelerator 根本一直都沒跑阿,花了一些時間看到底問題出在哪裡,發現原來是被擺到了。再安裝厚的提示訊息寫著:

*****************************************************************************

You have installed the eaccelerator package.

Edit %%LOCALBASE%%/etc/php.ini and add:

zend_extension="%%PREFIX%%/lib/php/%%PHP_EXT_DIR%%/eaccelerator.so"

Then create the cache directory:

mkdir /tmp/eaccelerator
chown www /tmp/eaccelerator
chmod 0700 /tmp/eaccelerator

*****************************************************************************

但是實際上如果去 /usr/local/etc/php.ini 設 zend_extension 事實上他會不理你。所以還是得設到 /usr/local/etc/php/extensions.ini 裡面去:

extension=eaccelerator.so 

本來是直接 copy/paste 他的路徑,結果 php -v 下去就又被 ooxx 。所以現在看起來,是真的有跑了:

PHP 5.1.4 (cli) (built: May  9 2006 10:48:26)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
    with eAccelerator v0.9.5-beta2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator

被 ports 的 hint message 擺道,很無言的阿!

PS. 前幾天  FreeBSD 的 php 好像地震了一下:

20060506:
  AFFECTS: users of PHP
  AUTHOR: ale@FreeBSD.org

  The old PHP slave ports (phpN-cli, phpN-cgi and mod_phpN) were removed
  in favour of unified PHP ports that allow building any combination of
  PHP SAPIs (cli, cgi and apache module).
  The PHP CGI binary was renamed to php-cgi, so you should update
  the path in your script. To simplify the update process, *only* for
  this release a 'php' compatibility symlink to php-cgi will be created
  if you don't select the CLI SAPI.
  Before the upgrade you *should* run 'make config' in lang/php4 or
  lang/php5 to configure the SAPIs you want to install.
  As a consequence the default binary packages include the CLI and the
  FastCGI SAPIs.
 

所以順手把他重新 make 了一次,進 php 打 make config 勾一勾然後 portupgrade -f 'php*' 下去就搞定了 :p

mediawiki + mysql5.1 beta

剛剛在裝 mediawiki ,本來理論上 make install clean 就能搞定的東西裝了好久。我還笑著跟把妹揚說,搞不好他那裡下去打 make install clean 會直接 ok 也說不定。(把妹楊最近被惡魔化了,雖然他本來就是壞人,不過被惡魔化倒應該是頭一遭。他lab裡的機器現在是 FreeBSD 6 喔!嘿嘿)。原因是因為之前手賤然後現在就遇到很多神秘的問題。

這篇有 提過因為 mysql5.1.7 beta吃了一點小苦頭,而這個問題也同樣發生在 mediawiki 的 CREATE TABLE 的 sql 檔上面。一開始是一度懷疑是不是因為我自己白目去抓 mediawiki 的 svn (自以為以後升級比較方便,可是從 FCU 抓那邊真的是他 X 的慢…)所以爛掉,後來從 ports 裝也是相同的情形,可是現在 mysql 上面又跑幾個東西再上面了,要再 downgrade 其實也可說是頗麻煩,於是就很任命的開始找。一開始看到 Syntax error 大概有個底,照上次經驗把 TYPE 清光光大概就會動。不過後來就很莫名其妙了。

一開始發生 index key 不能 > 1000 bytes 的情形,可是怎麼看都莫名其妙,後來 google 到說原來 utf8 會比較機車,於是就開始 try and error 慢慢調整。之後遇到

A database error has occurred Query: SET NAMES utf8

然後卡關卡好久後才發現原來是因為我一開始就在 my.cnf 設了

init_connect = 'SET NAMES UTF8;'

然後 mediawiki 又自己做了一次,所以不知道該算是誰的錯?解法是把 include/Database.php Line 310 那附近的 $this->query( 'SET NAMES utf8' ); 給幹掉,然後就天下大平了。

如果有需要的可以拿我亂改的 sql 檔蓋到 /maintenance/mysql5/ 底下的 tables.sql,不過爆炸不負責就是。這裡下載

apache22 + MPM=worker 遇到神秘問題

我家美人愛鬧脾氣,從取進門來之後總是沒安份過。到現在還是會動不動就 *panic* 一下。上次追了半天甚至還換了硬碟後來發現,原來是 PF 在搗蛋,只要有開 pf 幾乎是沒一下子就沒不理人了。而且還是沒有 panic 掉,只是就直接 hang 住不知道是怎樣。後來換回很久沒用的 IPFilter + ipnat (好像從 PF port 進 base ,印象中是 5.x 之後我就 switch 過去了…那年代的 ipnat 好像還沒有 rc 好吃)。

於是呢,把 pf 那幾行 mark 掉之後加上

ipnat_enable="YES" # Start ipnat function
ipnat_rules="/etc/ipnat.rules" # rules definition file for ipnat

原本想說可以就此過著幸福快樂的生活,他確實也安分了幾天,不過在開暗黑大會的時候據說某把妹揚按了 wiki 的編輯,這台主機就又失連了。衝回來看才發現又 tcp6 啥小的 panic 了 XD。想說搞不好是踩到 7-current 的地雷了,那閒閒沒事來 downgrade 好了。於是就 cvs 成 RELENG_6 的 tag 衝到 6.1-RC(理論上就是現在的 RC2 iso),不過一開 pf 還是馬上就 say 沙要那那。真是一整個獄卒,那想說好吧來升一下 ports ,明明我就才裝沒多久為啥 apache22 的版本能差那麼多。某把妹楊都已經跑到 2.2.2 了我還在很後面,明明還裝不到一個月版號就跳了兩跳阿。

在 make 的時候才發現,咦,怎麼 top 只看到一顆 cpu ,哇哩咧,忘了編 SMP 進去。(沒辦法阿,以前的機器都沒有 SMP 的阿阿阿阿阿)。於是又很苦的重新弄了一次 kernel ,想說好不容易可以休息了吧,要偶爾當一下我也不能阻止他了。
但是好死不死,最後很手賤的 delete-old-libs ,然後似乎就有東西爆炸了 -_-。 php 就得重編,然後一連串的 recursion。到最後實在是不行,就丟給 portupgrade 去攪,弄了半天 apache 還是不肯乖乖起來。於是乎我看到 httpd-error.log 出現一大堆神秘的錯誤訊息:

Fatal error 'kse_exit() failed for system scope thread' at line 1215 in file /usr/src/lib/libpthread/thread/thr_kern.c (errno = 22)
Fatal error 'kse_exit() failed for system scope thread' at line 1215 in file /usr/src/lib/libpthread/thread/thr_kern.c (errno = 22)
Fatal error 'kse_exit() failed for system scope thread' at line 1215 in file /usr/src/lib/libpthread/thread/thr_kern.c (errno = 22)

於是就跑去看 thr_kren 可是看不出所以然來…google 半天也沒相關的資訊,不知道是 keyword 給錯還是怎樣。忽然靈機一動,想說看看是不是哪些 lib 掛了,於是看了一下 ldd:

ddbeauty# ldd /usr/local/sbin/httpd
/usr/local/sbin/httpd:
libm.so.4 => /lib/libm.so.4 (0×800688000)
libaprutil-1.so.2 => /usr/local/lib/libaprutil-1.so.2 (0×8007a3000)
libexpat.so.6 => /usr/local/lib/libexpat.so.6 (0×8008ba000)
libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0×8009dc000)
libapr-1.so.2 => /usr/local/lib/libapr-1.so.2 (0×800bcc000)
libcrypt.so.3 => /lib/libcrypt.so.3 (0×800cf2000)
libpthread.so.2 => /usr/lib/libpthread.so.2 (0×800e0b000)
libc.so.6 => /lib/libc.so.6 (0×800f35000)
libpthread.so.2 => /lib/libpthread.so.2 (0×80112d000)

看不出所以然來阿,跟其他台比較明明是一樣的:

cdst# ldd /usr/local/sbin/httpd
/usr/local/sbin/httpd:
libm.so.4 => /lib/libm.so.4 (0×280ca000)
libaprutil-1.so.2 => /usr/local/lib/libaprutil-1.so.2 (0×280e0000)
libexpat.so.5 => /usr/local/lib/libexpat.so.5 (0×280f5000)
libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0×28113000)
libapr-1.so.2 => /usr/local/lib/libapr-1.so.2 (0×28201000)
libcrypt.so.3 => /lib/libcrypt.so.3 (0×28224000)
libpthread.so.2 => /usr/lib/libpthread.so.2 (0×2823d000)
libc.so.6 => /lib/libc.so.6 (0×28264000)

於是一籌莫展的情況下就開始惡搞,想到說 libpthread 反正是 user level thread 其實根本沒啥用,那來把他丟給 libthr 玩玩好了,於是就去改 /etc/libmap.conf (這檔案竟然沒 example ,還好我不知道哪看來記得有 man libmap.conf 好抄..)於是加了:

[/usr/local/sbin/httpd]
libpthread.so.2 libthr.so.2

於是美人與阿啪器過著幸福快樂的日子。 一整個神秘。

PS. 是在 apache-worker-2.2.2 Version 2.2 of Apache web server with worker MPM. 遇到的
UPDATE: 這篇草稿忘了發,沒想到才過兩天就上了 6.1-RELEASE 的 tag 了,我要不要重編咧?

Install FreeBSD6 on X41 tablet (2)

人總是很懶惰的動物,反正灌好了嗎,反正能夠 dual-boot ,那就繼續用 Windows 吧 XD。反正都付錢買 license 了嘛 XD。

喂喂喂喂,不是這樣說的吧?好啦,上個禮拜實在爆炸到一個不行,於是很生氣的就把小黑上的 FreeBSD 開起來亂裝了。

一開始呢,先把他 cvsup 到 7-current ,然後就可以把 cvsup 淘汰掉,很歡樂的用 csup :

改 make.conf

SUP= /usr/bin/csup
SUPFLAGS= -L 2

然後這裡發現有很討厭的事情,就是在 NAT 後面 fetch 似乎不會自動走 passive ftp 去抓東西,於是找了一下理論上應該是在 make.conf 加上 FETCH_CMD=fetch -U -A -p ( -p Use passive FTP.) ,不過看起來還是很神秘的不理我,於是就直接 bind 一個外面的 ip 給他 :p 。

然後升級了完了之後就開始裝桌面吧,當然,習慣性的用 KDE 。 而且這次很生氣所以不是編 kde3-lite 而是直接編 kde XD。

cd /usr/ports/x11/kde3 ; make install clean

這邊因為耍笨忘了開 BATCH=yes ,然後再加上 FCU 網路狂斷,再加上可憐的小黑,他的硬碟是 1.8" 然後只有 4200RPM (具不可靠測速指出,max transfer rate 大概只有 20MB … seek time 更是 ~!@#$%^… orz),所以這裡花了我兩天多,雖然忘了開 time 下去量 XD,更好笑的是,之前嘲笑鴨子說怎麼會耍笨到 /usr 割太小然後 diskfull ,結果這次也發生再我身上 orz 。還好 unix-like 的系統下的偉哉 ln 很好用 :p 。

裝完之後當然要再自己 localhost 顯示畫面啊,不然怎麼搞? 所以就得乖乖的裝 X Server :

cd /usr/ports/x11/xorg ; make install clean

然後自動生出設定檔:

Xorg -configure

把生出來的設定檔拷到「他該去的地方」,該去的地方可以 man xorg.conf 看最後面。

cp /root/xorg.conf.new /usr/X11R6/etc/X11/xorg.conf

然後抄某處的 setting 讓小紅點 scroll 功能能用(就是按中賤然後動小紅點就變成滾輪,然後本來的貼上中鍵變成左右鍵一起按)

#TrackPoint Scroll
Option "EmulateWheel" "on"
Option "EmulateWheelButton" "2"

接下來裝中文環境(其實我一直覺得英文的 look-and-feel 真的好看很多,所以搞不好可以看英文然後裝中文字型就好?)

cd /usr/ports/chinese/zh-auto-tw-l10n ; make install clean
cd /usr/ports/chinese/zh_TW-kde-i18n ; make install clean
cd /usr/ports/chinese/zh_TW-koffice-i18n ; make install clean
cd /usr/ports/chinese/fireflyttf ; make install clean

然後進「控制中心」,把字型改成 firefly 辛苦畫的字體「AR PL New Sung」,我是直接把所有都改成這個,然後大小除了視窗標題是 11 以外其他都 12 ,然後固定字寬的暫時用 Monospace 12 ,看起來還不至於太糟。
x41_kde_screenshot4.png
AA 的話我是有開,由於是 LCD 也有設 sub-pixel hinting ,可以參考 statue 的 FreeBSD 中文 Howto (zh-tut) 當中的 fireflyttf ,然後把 .xinitrc 跟 .cshrc 偷出來稍微改一下之後,就可以打 startx 進去玩耍啦!

如果想用用中文輸入法的話,我這邊是裝 oxim ,一樣是 firefly 前輩最近在維護的輸入法,似乎是從 xcin 2.5pre2 改的 :p ,而且用了新酷音,在 freebsd 下的話裝法很簡單:

cd /usr/ports/chinese/oxim ; make install clean

就幫你搞定了 :) ,然後只要在 .xinitrc 加上

export XMODIFIERS='@im=oxim'
export GTK_IM_MODULE=oxim
export QT_IM_MODULE=xim

以及

exec oxim &

喔當然,還要記得把

exec startkde

的註解 # 拿掉,一切就都會很完美!有中文可以上 msn,可以用整合的很不錯的 Konqueror 找資料看網頁,然後又有很多有趣的小遊戲!其實很夠了 XD。

當然要來點審查砲彈啦?

某妹的「幹」換成大張的圖,不過佔掉了畫面的 1/4 ,很有趣 XD

x41_kde_screenshot5.png

真的可以打中文喔!!

x41_kde_screenshot3.png
很受我跟把妹偉喜愛的遊戲,某天本來要回家,把妹偉被黏上之後又玩了快一個小時才走出去….

x41_kde_screenshot2.png
最後看一下這個blog長啥鳥樣?

x41_kde_screenshot1.png 不賴吧,快換快換!

然後呢,抄 /usr/local/share/skel/zh_TW.Big5/dot.cshrc 來用..把 zh_TW.Big5 改成 zh_TW.UTF-8..然後開始準備大爆炸的痛苦 UTF-8 環境 :p <待續>

Install FreeBSD6 on X41 tablet (1)

據說下學期的文獻是留朕恤老師,當然要來巴結一下,至於為什麼,這個故事以後再講。

其實不只這個原因,機八鴨在 X31 上玩 FreeBSD 玩了好一陣子了,雖然他很機八都沒留 blog or wiki ,不過總是還有人可以指點,在遇到困難上面會快很多 XD。我從拿到 X31 就一直喊說要玩玩到都已經被搶走了還是沒玩到,於是乎趁這裡拜比較悠哉,就鐵了心試著來裝 FreeBSD 到 laptop 上。

沒想到困難重重啊,一開始把 combo 機接上去之後很高興的把 FreeBSD 6.0 Release Disc1 丟進去,想說大概三分鐘就可以搞定,之後再慢慢 make 就好,沒想到給我的是這張畫面:

x41t_FreeBSD6_crash_on_BTX_Loader

真是歡樂到一個不行。然後試了漂長輩助教以及機八鴨的 combo 也是不行,發生同樣的情況,於是跑去抓其他舊的版本(因為據機八鴨說他在 FreeBSD6 RC 的 iso 也是開不起來,不過症狀不太一樣),從 5.1 5.2.1 5.3 5.4 都試了,其中好像只有 5.3 沒有畫面一直跑而是 hang 住,其他都一樣的情形。總不會要我用 4.X 試吧?於是一氣之下跑去抓 FreeSBIE、pfsense、DragonFlyBSD,結果還是都一樣。於是只好請教 google ,看到比較可能的情形是說:FreeBSD 6 Released BTX loader issue – BTX loader 不支援 USB 裝置造成的。如我上一篇所說,難不成要如此之嗎?

由於「邪」太過於麻煩,還要先裝 Linux ,如果讓我一不小心裝 gentoo 上去大概就黏住那就不能巴結老鄧了 ,所以我選擇了「惡」

PXE 這東西事實上並不陌生,約在四五年前幫高中做電腦教室的時候就已經玩了一次,那時 google 打 PXE 可以說東西少的可憐,所以必須從 Intel、Realtek 那邊挖資料,然後 try and error 想辦法慢慢兜,連螃蟹卡的 boot rom 都要自己燒,還常常會有某版不能配某版的問題,實在是超麻煩。不過很有趣就是了,尤其是把整套系統兜出來之後,透過 PXE Server 開機,派 PCDOS 開機檔,然後用 config.sys 和 autoexec.bat 搭配寫開機選單,再加上 ghost server/ghost preload partition 的配置,可以說撐得上當時自己很滿意的作品。不過可惜的是當時沒有寫 doc 的觀念,只有自己習慣性的隨手寫了幾個 TXT 檔,然後跟著 server backup 起來。只是我沒想到用三台 server 做交互備份的情況下還能夠爛的如此徹底。在一年多後的某天,看到網路上有人也在搞這些東西,可是解的都不怎麼漂亮、或是說不完整,覺得把那些東西拿出來寫 doc 或分享應該不錯,才發現竟然一點文件、一點成果都不剩。

其實說穿了技術性不高,只是那時幾乎沒現成的工具的情況下苦工不少,全部不見了還真有點可惜。這次 build PXE Server 就非常快了。參考了終極流行(toppop)金蟬脫殼這篇、以及 mount iso 的方法、還有 Diskless FreeBSD 5.2.1 release PXE DHCP NFS NIS 。大概的步驟不外乎是:

Mount ISO

mdconfig -a -t vnode -f /your/iso/image/6.0-RELEASE-i386-disc1.iso -u 0
mount -t cd9660 /dev/md0 /mnt/freebsd6

Install DHCPD

cd /usr/ports/net/isc-dhcp3-devel
make install clean

Modify RC.CONF

該開的東西要開

ee /etc/rc.conf
inetd_enable=yes

dhcpd_enable=”YES” # dhcpd enabled?
dhcpd_flags=”-q” # command option(s)
dhcpd_conf=”/usr/local/etc/dhcpd.conf” # configuration file
dhcpd_ifaces=”" # ethernet interface(s)
dhcpd_withumask=”022″ # file creation mask

nfs_server_enable=”YES”

EDIT dhcpd.conf

ee /usr/local/etc/dhcpd.conf
在 host or network 裡加上:

filename “pxeboot”;
option root-path “192.168.200.254:/”;
next-server 192.168.200.254;

如果 tftp server 跟 dhcp server 不同台的話就由 next-server 指過去,要改 root-path 的話用 root-path 改。
改完重跑: /usr/local/etc/rc.d/isc-dhcpd.sh restart

EDIT inetd.conf

ee /etc/inetd.conf
把註解取消並改後面 boot 路徑
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /home/tftp
檔名由 dhcpd.conf 的 filename 指定,所以 tftpd 只要給路徑。
改完重跑: /etc/rc.d/inetd restart

EDIT exports

ee /etc/exports

#/usr -alldirs -ro
/home/tftp/freebsd60 -ro -maproot=root -network=192.168.200.0 -mask=255.255.255.0
#/mnt/freebsd6 /mnt/freebsd6 -maproot=root x41tablet
/usr -ro -maproot=root -alldirs -network=192.168.200.0 -mask=255.255.255.0
#/diskless_ro -ro -maproot=0 -network 192.168.1.0 -mask 255.255.255.0
/ -ro -maproot=root -alldirs -network=192.168.200.0 -mask=255.255.255.0

改完記得重跑 mound -r
kill -HUP `cat /var/run/mountd.pid`

就會動了,不過跑起來一直 hang 在 rootfs:

freebsd_x41t_pxe_hang.PNG
找了半天不知道怎麼回事,ping 的到但是服務都沒繼續往下跑。感覺上他的 fstab 都沒有吃,花了好幾個小時實在是累了於是就放大絕招。用 VMWARE 灌進去。

在機八鴨的教誨之下:

[上午 04:57:02] (鴨)…: 我現在跟你說要用entire disk 阿
[上午 04:57:17] (鴨)…: 所以醬子相對來說會比較危險一點
[上午 04:58:16] (鴨)…: 你現在的步驟是…
把vmware 的vmdk 幹掉
重新新增一個physical disk
選entire disk
[上午 04:58:31] (鴨)…: 開vmware 起來之後把freebsd 裝完
[上午 04:58:59] (鴨)…: 裝好以後趁除/d9 還可以開起來的時候 dd 把 512 byte 讀出來
[上午 04:59:28] (鴨)…: 讀完以後 windows 的partition 設回來active
[上午 04:59:37] (鴨)…: 降子應該就好了

很順利的搞定了。而且全部都在 vmware 當中搞定(危險動作請勿模仿啊 XD,搞爛恕不負責)。因為我之前就已經用工具先把磁區分好了:

partition_x41.PNG
所以在裝的時候小心,不要安裝 MBR ,然後再割分割區的時候直接用 T 把 type 設成 165 (freebsd) 然後進去切 slice 就好了。至於這裡我沒有割 /swap 因為打算跟 windows 共用 2G 的那塊 fat32 。另外在 loader 的部份為了簡單直接用 NT 的 loader ,可以參考 FreeBSD 的 FAQ 有關 NT Loader 的部份,或是 MicrosoftWindowsBootManager,我是照 debian 那個方法下了:

dd if=/dev/ad0s1c of=/root/BootSector.FreeBSD bs=512 count=1

然後把 BootSector.FreeBSD 想辦法傳出來丟到根目錄後改 boot.ini 加上:

C:\BootSector.FreeBSD=”FreeBSD”

並且到 FreeBSD 裡面用 fdisk -t -a -1 ad0 把 Windows XP 的 partition 設回 active ,就可以重開看成果(或是準備炸的亂七八糟了)。



About

You are currently browsing the 餅乾隨筆 weblog archives for the FreeBSD category.

 

July 2010
M T W T F S S
« May    
 1234
567891011
12131415161718
19202122232425
262728293031