原來Hacker 也對 Blog 很有興趣
10/11/2005, 22:23 - 今天
很久沒有更新了,今天看了看發現有人在站上留言要我更新 Simple PHP Blog 因為有安全性問題,真是謝謝了。而且台灣也有些人也用 Simple PHP Blog 而且還有討論區

對了我更新到 Simple PHP Blog 0.4.5 了。
發表回應 發表回應 ( 590預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 1766 )

Linux gateway with Traffic QoS
10/11/2005, 13:24 - Network
Linux gateway with Traffic QoS

Must install linux package "tc" and "ip2", and need make sure the linux kernel are support the IP traffic shape, and QoS, also Queueing method are enabled.

Here are a Linux with an ADSL line, 2 ethernet interfaces, but because ADSL line traffic is asyncmatic, so the download bandwidth is far more than upload, when upload traffic in full loading, then you can not download even you still got download bandwidth, because the download requirement packets can not be send to destenation because upload bandwidth full loading.

But if we can control the bandwidth with IP QoS, then we can control the bandwidth usage, which type of traffic is more important then others, also reserved some bandwidth for requirement packet go out, so it must go out
first, this is more detail in traffic control.

First we will create some queues for different type traffic queue, then mark the traffic to different type with TCP/UDP and port to identify the traffice type. Also we add more txqueue for interface to get more queue length to keep traffic packets when congestion occur.

This script can work with iptables, and get more control, because you can mark traffic via iptables ( change IP TOS bit ) then move the traffic into different queue, also you can change to different queueing method (Weight Fair Queueing, Weight Round Robin etc ) to get more flatable traffic shapeing.

The most important note is make the bandwidth eater to lower priority
queue, and less bandwidth reserved for that type of traffic packets.


#!/bin/sh
# Traffic controller by Tasuka
# Jan/26/2002
#
echo ""
echo "Traffic Controller V1.0"
echo ""
#
BINPATH=/sbin
TC=$BINPATH/tc
IFCONFIG=$BINPATH/ifconfig
#
#Limit whole IP address traffic selector
# if LIMIT_ALL=1 then limit the limited ip address all traffic
# else just limit select protocol
#
LIMIT_ALL="0"
#
INT_IF="eth0"
INT_IF1="eth1"
EXT_IF="ppp0"
QUEUE_DEPTH="500"
EXT_QUEUE_DEPTH=$QUEUE_DEPTH
INT_QUEUE_DEPTH=$QUEUE_DEPTH
#
TCP="0x06"
UDP="0x11"
EXT_BANDWIDTH="1024Kbit"
EXT_BURST="50Kbit"
#
BANDWIDTH="100Mbit"
AVGPKT="1000"
MAXBURST="20"
LIMITRATE1="128Kbit"
LIMITRATE2="1Kbit"
LIMITRATE3="384Kbit"
MTU="1514"
MPU="64"
LIMIT_IP_GROUP1="192.168.8.0/24 192.168.0.0/24 192.168.2.0/24 \
192.168.3.0/24 192.168.4.0/24 192.168.5.0/24 \
192.168.6.0/24 \
"
LIMIT_IP_GROUP2="192.168.255.255 192.168.1.255 192.168.2.255 \
192.168.3.255 192.168.4.255 192.168.5.255 \
192.168.9.255 192.168.10.255 \
10.255.255.255 10.1.255.255 10.1.1.255 \
10.255.255.255 \
192.168.7.255 192.168.6.255 192.168.8.255 \
172.16.255.255 172.16.100.255 172.16.200.255 \
"
LIMIT_IP_GROUP3="10.0.0.0/8 192.168.8.0/21 "
PASS_IP="172.16.0.0/12 192.168.1.0/24 192.168.7.0/24 \
192.168.9.0/24 192.168.10.0/24 \
"
MIN_SEC="1sec"
MAX_SEC="8sec"
LIMIT_TCP_PROTOCOL="135 136 137 138 139 1080 4661 4662 4663 4664 4665 6699
\
6881 6882 6883 6884 6885 6886 6887 6888 6889"
LIMIT_UDP_PROTOCOL="135 136 137 138 139 161 162 1080 4665 6699 \
6881 6882 6883 6884 6885 6886 6887 6888 6889"
NETBIOS="137 138 139"
#
# Clear a traffic control setting on $DEV
#
echo "Clear traffic control setting"
#
$TC qdisc del dev $EXT_IF root
$TC qdisc del dev $EXT_IF ingress
#
$TC qdisc del dev $INT_IF root
$TC qdisc del dev $INT_IF ingress
#
$TC qdisc del dev $INT_IF1 root
$TC qdisc del dev $INT_IF1 ingress
#
# change the interface's queue depth
echo "Change the interface queue depth"
#
$IFCONFIG $INT_IF txqueuelen $INT_QUEUE_DEPTH
$IFCONFIG $EXT_IF txqueuelen $EXT_QUEUE_DEPTH
$IFCONFIG $INT_IF1 txqueuelen $INT_QUEUE_DEPTH
#
#Create root handle for $EXT_IF
#$TC qdisc add dev $EXT_IF root handle 1: cbq \
# bandwidth $EXT_BANDWIDTH avpkt $AVGPKT mpu $MPU
#
echo "Internet Egress traffic with TBF"
#
$TC qdisc add dev $EXT_IF root tbf rate $EXT_BANDWIDTH latency 50ms \
burst $EXT_BURST
#
echo "Internet Ingress traffic with CBQ"
$TC qdisc add dev $EXT_IF ingress
#
# Create root handle for $INT_IF and $INT_IF1
#
$TC qdisc add dev $INT_IF root handle 1: cbq \
bandwidth $BANDWIDTH avpkt $AVGPKT mpu $MPU
#
$TC qdisc add dev $INT_IF1 root handle 2: cbq \
bandwidth $BANDWIDTH avpkt $AVGPKT mpu $MPU
#
$TC qdisc add dev $INT_IF ingress
$TC qdisc add dev $INT_IF1 ingress
#
echo "Create Traffic Classes"
#
$TC class add dev $INT_IF parent 1:0 classid 1:1 est $MIN_SEC $MAX_SEC cbq
\
bandwidth $BANDWIDTH rate $BANDWIDTH allot $MTU mpu $MPU \
maxburst $MAXBURST avpkt $AVGPKT
#
$TC class add dev $INT_IF1 parent 2:0 classid 2:1 est $MIN_SEC $MAX_SEC cbq
\
bandwidth $BANDWIDTH rate $BANDWIDTH allot $MTU mpu $MPU \
maxburst $MAXBURST avpkt $AVGPKT
#
$TC class add dev $INT_IF parent 1:1 classid 1:100 est $MIN_SEC $MAX_SEC
cbq \
bandwidth $BANDWIDTH rate 95Mbit allot $MTU mpu $MPU \
weight 1Mbit prio 5 maxburst $MAXBURST avpkt $AVGPKT \
# bounded isolated
#
$TC class add dev $INT_IF1 parent 2:1 classid 2:100 est $MIN_SEC $MAX_SEC
cbq \
bandwidth $BANDWIDTH rate 95Mbit allot $MTU mpu $MPU \
weight 1Mbit prio 5 maxburst $MAXBURST avpkt $AVGPKT \
# bounded isolated
#
$TC class add dev $INT_IF parent 1:1 classid 1:200 est $MIN_SEC $MAX_SEC
cbq \
bandwidth $BANDWIDTH rate $LIMITRATE1 allot $MTU mpu $MPU \
weight 1Kbit prio 7 maxburst $MAXBURST avpkt $AVGPKT \
bounded isolated
#
#
$TC class add dev $INT_IF1 parent 2:1 classid 2:200 est $MIN_SEC $MAX_SEC
cbq \
bandwidth $BANDWIDTH rate $LIMITRATE1 allot $MTU mpu $MPU \
weight 1Kbit prio 7 maxburst $MAXBURST avpkt $AVGPKT \
bounded isolated
#
#
$TC class add dev $INT_IF parent 1:1 classid 1:300 est $MIN_SEC $MAX_SEC
cbq \
bandwidth $BANDWIDTH rate $LIMITRATE2 allot $MTU mpu $MPU \
weight 1Kbit prio 7 maxburst $MAXBURST avpkt $AVGPKT \
bounded isolated
#
#
$TC class add dev $INT_IF1 parent 2:1 classid 2:300 est $MIN_SEC $MAX_SEC
cbq \
bandwidth $BANDWIDTH rate $LIMITRATE2 allot $MTU mpu $MPU \
weight 1Kbit prio 7 maxburst $MAXBURST avpkt $AVGPKT \
bounded isolated
#
#
$TC class add dev $INT_IF parent 1:1 classid 1:400 est $MIN_SEC $MAX_SEC
cbq \
bandwidth $BANDWIDTH rate $LIMITRATE3 allot $MTU mpu $MPU \
weight 1Kbit prio 6 maxburst $MAXBURST avpkt $AVGPKT \
# bounded isolated
#
$TC class add dev $INT_IF1 parent 2:1 classid 2:400 est $MIN_SEC $MAX_SEC
cbq \
bandwidth $BANDWIDTH rate $LIMITRATE3 allot $MTU mpu $MPU \
weight 1Kbit prio 6 maxburst $MAXBURST avpkt $AVGPKT \
# bounded isolated
#
$TC qdisc add dev $INT_IF parent 1:1 sfq quantum 1514b perturb 8
$TC qdisc add dev $INT_IF1 parent 2:1 sfq quantum 1514b perturb 8
#
$TC qdisc add dev $INT_IF parent 1:100 sfq quantum 1514b perturb 8
$TC qdisc add dev $INT_IF1 parent 2:100 sfq quantum 1514b perturb 8
#
$TC qdisc add dev $INT_IF parent 1:200 sfq quantum 1514b perturb 8
$TC qdisc add dev $INT_IF1 parent 2:200 sfq quantum 1514b perturb 8
#
$TC qdisc add dev $INT_IF parent 1:300 sfq quantum 1514b perturb 8
$TC qdisc add dev $INT_IF1 parent 2:300 sfq quantum 1514b perturb 8
#
$TC qdisc add dev $INT_IF parent 1:400 sfq quantum 1514b perturb 8
$TC qdisc add dev $INT_IF1 parent 2:400 sfq quantum 1514b perturb 8
#
# filter limited IP address traffic
#
echo " Classfily limited TCP protocol traffic"
#
for IP in $LIMIT_IP_GROUP1 ; do
for PROTOCOL in $LIMIT_TCP_PROTOCOL ; do
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 10 \
u32 match ip dst $IP \
match ip protocol $TCP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 1:200
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 10 \
u32 match ip dst $IP \
match ip protocol $TCP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 2:200
#
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 10 \
u32 match ip src $IP \
match ip protocol $TCP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 1:200
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 10 \
u32 match ip src $IP \
match ip protocol $TCP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 2:200
#
done
done
#
echo " Classfily by limited UDP protocol traffic"
#
for IP in $LIMIT_IP_GROUP1 ; do
for PROTOCOL in $LIMIT_UDP_PROTOCOL ; do
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 10 \
u32 match ip dst $IP \
match ip protocol $UDP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 1:200
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 10 \
u32 match ip dst $IP \
match ip protocol $UDP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 2:200
#
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 10 \
u32 match ip src $IP \
match ip protocol $UDP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 1:200
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 10 \
u32 match ip src $IP \
match ip protocol $UDP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 2:200
#
done
done
#
echo " Classfily NETBIOS over IP traffic"
#
for IP in $PASS_IP ; do
for PROTOCOL in $NETBIOS ; do
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 11 \
u32 match ip src $IP \
match ip protocol $UDP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 1:300
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 11 \
u32 match ip src $IP \
match ip protocol $UDP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 2:300
#
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 11 \
u32 match ip dst $IP \
match ip protocol $UDP 0xff \
match ip dport $PROTOCOL 0xffff \
flowid 1:300
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 11 \
u32 match ip src $IP \
match ip protocol $UDP 0xff \
match ip dport $PROTOCOL 0xffff \
flowid 2:300
#
done
done
#
if [ $LIMIT_ALL == 1 ] ; then
echo " Classfily limited whole IP address traffic"
#
for IP in $LIMIT_IP_GROUP1 ; do
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 20 \
u32 match ip src $IP \
flowid 1:200
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 20 \
u32 match ip src $IP \
flowid 2:200
#
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 20 \
u32 match ip dst $IP \
flowid 1:200
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 20 \
u32 match ip src $IP \
flowid 2:200
#
done
fi
#
for IP in $LIMIT_IP_GROUP2 ; do
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 5 \
u32 match ip src $IP \
flowid 1:400
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 5 \
u32 match ip src $IP \
flowid 2:400
#
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 5 \
u32 match ip dst $IP \
flowid 1:400
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 5 \
u32 match ip dst $IP \
flowid 2:400
#
done
#
# Limit all broadcast traffic
echo " Classfily limited IP broadcast traffic"
#
for IP in $LIMIT_IP_GROUP3 ; do
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 15 \
u32 match ip dst $IP \
flowid 1:300
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 15 \
u32 match ip dst $IP \
flowid 2:300
#
done
#
# filter none limited IP address traffic
#
echo " Classfily none limit ip address traffic"
#
for IP in $PASS_IP ; do
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 1 \
u32 match ip dst $IP flowid 1:100
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 1 \
u32 match ip dst $IP flowid 2:100
#
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 1 \
u32 match ip src $IP flowid 1:100
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 1 \
u32 match ip src $IP flowid 2:100
#
done
#
echo "Done"
echo ""
#
發表回應 發表回應 ( 1127預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 1576 )

Active FTP 及 Passive FTP
10/11/2005, 13:20 - 原來如此
Active FTP 及 Passive FTP

在大部份的防火牆設定中,使用 FTP 傳輸檔案時經常會遇到需要設定使用 passive mode 的 FTP.但大部份的 FTP client 軟體,default 大都是 active mode FTP,這二種 FTP 模式在傳輸上有何不同?先了解 FTP 的工作方式,有助於了解 active FTP 及 passive FTP 的不同.

一般的 FTP 使用 TCP port 20 及 21 二個 port. 正常來說, port 20 是傳輸資料用,而 port 21 傳輸命令.但事實上並不是一直使用 port 20 來傳輸資料.

Active mode FTP (主動模式 FTP)
在 Active 模式的 FTP client 一開始時會先使用一個大於 1024(N) 的 TCP port 連結至 FTP server 的port 21. 然後 FTP client 會打開該 port 的下一個數字的 port (N+1) 並送至 FTPserver 說期望下次的溝通可以經由新的 port (N+1),這樣比較不會占用到 FTP server 的 port 21 而影響別的 FTP sessions.同時 FTP server 會使用 port 20 連結至 FTP client 新送過來的 port 號來傳資料.
所以在防火牆上需要打開:

FTP server port 21 from anywhere # 給 FTP client 開始連接
FTP server port 21 to port > 1024 # 給 FTP server 回應 client 命令
FTP server port 20 to port > 1024 # 給 FTP server 開始資料傳輸
FTP server port 20 from port > 1024 # 給 FTP cleint 傳送 data ACK 給 server

所以連接順序為:
1. FTP client use TCP port 1026 for command to FTP server command port 21
2. FTP server use TCP port 21 responed to FTP client command port 1026
3. FTP server use TCP port 20 for sending data to FTP client data port 1027 (1026 + 1)
4. FTP client use TCP port 1027 ( 1026 + 1) for data ACK to FTP server port 20

問題在於使用 active mode FTP 時主控權在 FTP client, FTP client 並不是真正的連至 FTP server 的data port (TCP port 20),它只是告訴 FTP server 它準備在那個 port 接收資料及port+1 傳送 ACK.並期望 FTP server 可以主動連接至 FTP client 所期望的 port.這在使用防火牆的環境中就會造成問題.


Passive mode FTP (被動模式 FTP)
解決主動模式在防火牆外面時所發生無法連接的問題,可以用被動模式 FTP. 在Passive mode FTP 下,FTP client一開始和 active mode FTP 一樣,打開二個 port (N > 1024 及 N+1), 使用第一個port 連接至 FTP server的 port 21,並送出命令 PORT 讓 server 連至 N port 再送出 PASV 命令給 server,這樣會造成 server使用 一個大於 1024 的 port 連接至 client 並送出命令 PORT N ( N >1024 ) 給client. 樣 client 就會使用 N + 1 並開始傳輸資料.

這樣子在防火牆上需要設定

FTP server TCP port 21 from anywhere # FTP client 開始連接至 FTP server
FTP server TCP port 21 to port > 1024 # FTP server 回應 client 控制
FTP server TCP port > 1024 from anywhere # FTP client 資料傳輸
FTP server TCP port > 1024 to client port > 1024 # FTP server 回應資料 ACK至 client data port

連接順序為:
1. FTP client use TCP port 1026 to FTP server command port 21 via command PASV
2. FTP server use TCP port 21 to FTP client 1026 command port for reply data port 2024
3. FTP client use TCP port 1027 (N+1) to FTP server 2024 for data transmit and ACK
4. FTP server use TCP port 2024 to FTP client for data transmit and ACK


因為 passive mode FTP 是由 FTP server 發起一個大於 1024 的 port 至 client,在防火牆上的設定就相對簡單,而可以傳輸資料而不會被防火牆 block.


參考資料 RFC959

註:在 Windows 下原來的 ftp client 並沒有 passive 這個指令,但可以利用 literal 指今來下給 FTP server FTP session 為 passive mode

方法如下:

C:\>ftp 10.10.100.121
Connected to 10.10.100.121.
220 (vsFTPd 2.0.1)
User (10.10.100.121:(none)): ftp
331 Please specify the password.
Password:
230 Login successful.
ftp> literal pasv
227 Entering Passive Mode (10,10,100,121,242,172)
ftp>

可以看到進入 passive mode 了.使用的 port 號碼是 (242*256)+172= 62124

若是 UNIX 但 FTP client 不支援 passive mode 指令可以用 quote pasv

5 回應 5 回應 ( 3011預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 377 )

PM6100 的 G3 加速卡好像掛了
08/14/2005, 23:19 - Apple
不管您知不知道的這個站是架在 Power Macintosh 6100 上的,我都要說---- G3 加速卡好像掛了,開不起來,而我沒時間詳細檢查,就先將 G3 enable extenation 關閉,所以現在這個站是用原本的 PowerPC 601 66MHz 在跑 Yellow Dog Linux 2.3,慢----這是正常的,請見諒!不過好像也還好耶。

可能的話會更換一部 iMac 400,更換機器的原因,不是因為 PM6100太慢,而是因為自 1994 年至今,己過十年,一部電腦用了十年,而在後面的五年是一天二十四小時,一年三百六十五日,不休息的(除了停電或維修等)所有的元件大都年限己至,而且我比較擔心電源及電容等元件的問題,為了全家的安全,所以還是換吧,而軟體系統就要等我試過 YDL 4.0 Gentoo Linux for PowerPC 之後再看了,不排除 OS X 也是一個選項。

而老機器呢?嘿嘿....(To be Continue)
1 回應 1 回應 ( 5508預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 2073 )

VoIP 大戰開打了嗎?
07/17/2005, 00:36 - 想到的
SkypeGizmo Project 二者都是可以直接使用電腦傳送語音,也就是打電話,不過看來 Gizmo 還多了一些功能,像是會議室可以給使用一般電話的人也可以加入,以及 voice mail 或是電話留言等等功能,而且還可以有一個電話號碼讓別人撥進來。而相同部份則是二者都是免費軟體。

看來這種語音電話的需求己經出現了,而且廠商也看到了商機了。不過作為一個使用者,比較好奇的是這種不同網路之間的電話要何時才可以互通呢?如何收費?

對了,M$何時會有這類軟體出現呢?就像Internet ExplorerNetscapeMSN messengerICQ 一樣。會不會有相容的 open source 軟體出現呢?
發表回應 發表回應 ( 571預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 1840 )

OSX with PearPC in Linux with network enable
07/05/2005, 01:06 - Apple
將 PearPC 的網路設定好了,可以連上網路並作 software update。
試過 PearPC 0.4 Prerelease 會很容易當機,然後就再也起不來了,所以換回 0.3.1 就 OK。在 0.4pre 版中使用 3Com 3C59x 的網路卡 driver 會有問題,而 RelTek 8139 會當機。在 0.3.1 版中無法使用 3C59x driver (會說 driver extenation can not load),但可以用系統內建的 Reltek 8139 的 driver。

而在網路設定方面,我修改了 scripts/ifppc_up 內的設定,加上 PPC_BROADCAST_IP 因為不是用 default 的 IP address 192.168.1.80/24 而是
PPC_NETWORK_IP = 172.31.254.8
PPC_HOST_IP = 172.31.254.10/29
PPC_CLIENT_IP = 172.31.254.11/29
PPC_BROADCAST_IP = 172.31.254.15

若沒有加 broadcast IP address,Linux 會用 classful 也就是 B class broadcast 172.31.255.255 。

現在還是只有 384MB RAM total inside Linux 所以還是不太够,而且若是用 swap memory 則跑起來會很慢(VMWare 用了 swap 也一樣會變慢)。

不方便的地方有無法 sleep 及 reboot 以及所有的硬體功能都變得不太好用了(因為硬體還是 PC)
而 Linux kernel 用的是 2.6.11.12 還算穩定,下次會換 Linux-2.6.12.2 試試。
對了,會先將 iMovie/iPhoto 可能連 iTune 也會拿掉,因為看來在模擬器上還真是用不到這些東西。
反正先將就著用吧,至少可以用 OpenVanilla 了,不必用 M$ 的輸入法!
發表回應 發表回應 ( 652預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 1873 )

PearPC 安裝網路卡後續
06/27/2005, 21:55 - Apple
若使用 RelTek 的 driver,OS X 10.3 有內含,可是好像不能用(會在 console 上看到有資料進到 driver 可是有問題),而要利用一點小技巧才可以將 3Com 3C9x driver.ext 放到 OS X 中,裝了之後,則是會在開機時當機,還得多試試。

原來的 3Com3C9x driver 的 iso 無法在 OS X 下安裝(看不到安裝畫面),改用 compile 好的 extention file,但因還沒有網路,所以只可以用 CD ISO 安裝,這時利用 Linux 的 mkisofs 建立一個內含 driver 的iso 檔案給 PearPC mount 進去(mkisofs -o driver.iso Apple3Com3c9x.ext.tgz),就可以自己 copy extention 到 /System/Library/Extentions 目錄下了。

可以用 mount -o loop driver.iso /mnt 來檢查是否成功建立 iso image file。
發表回應 發表回應 ( 613預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 1883 )

OS X on x86 with Linux via PearPC
06/24/2005, 21:53 - Apple
經過二天的努力,成功的將 OS X 10.3 安裝在 Slackware Linux 10.1 上了。
cvs -z 4 -d:pserver:anonymous@cvs.sf.net:/cvsroot/pearpc login
cvs -z 4 -d:pserver:anonymous@cvs.sf.net:/cvsroot/pearpc co pearpc 

CVS 下來的是 PearPC 0.4pre,若是到 http://www.pearpc.net 或 http://pearpc.sourceforge.net download 下來的會是 PearPC 0.3.1。
而 0.4pre 是有 G4 Altivec 的版本,只要把設定檔的 cpu_pvr 改成 0x000c0000 即可。

cd pearpc
./autogen.sh
./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc --enable-cpu=jitc_x86
make
make check
make install
mkdir ~/osx
mkdir ~/osx/scripts
cd ~/osx
cp /etc/ppc.cfg .
cp ~/pearpc/scripts/* ~/osx/scripts/.
dd if=/dev/zero of=~/osx/osx.img bs=516096 count=200

或用 http://www.pearpc.net 上提到的 script來建立 Virtual 硬碟空間。
再來是修改 ppc.cfg 成您要的樣子。

要注意的是,目前的 PearPC 無法知道更換 CD-ROM 所以在安裝 OS X 10.3 (三片 CD ROM)時會要開機三次。
第一次是第一片,自動重開機(PearPC 要再重新執行)。再來是安裝第二片,自己手動重開 PearPC。
放第三片,自己安裝第三片的程式後完成。再來就是要安裝網路 Driver 到 OS X 上。

OK!

目前只可給 OS X 用 128MB 的 RAM,所以還有點慢,不過加上 RAM 之後就應該會好一點了吧!


發表回應 發表回應 ( 747預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 1856 )

Windows on Linux
06/18/2005, 18:34 - Network
大多數的人,在使用電腦時,大部份是使用 Windows 作業系統,只有一些人會在 Windows 的系統中裝個 Virtual PC VMWare 跑跑 Linux。但是我非常不喜歡用 Windows 作業系統(相同的系統資源下 Windows 比較慢,大都使用 Macintosh OS 所以用法比較不習慣等因素,而且用量少,非不得己才用)所以都是先裝 Linux 等到一定用 Windows 才會在 Linux 下裝個 VMWare 來跑 Windows 或是在 Macintosh 下使用 Virtual PC 跑 Windows 或是 Linux/BSD,因為這樣子一部電腦就會變成多部電腦(一部 Linux 一部 Windows 一部 Macintosh),可以比較自由選擇比較合適的程式來完成工作(我實在不喜歡用 M$ Office 及要分左右鍵的 Mouse)。

因為工作場合只有提供一部 Intel PC ,而且不可以用自己的電腦(不然我會帶一部iMac 到公司,作為工作之用),所以這次使用就先裝了 Slackware Linux 10.1 (原來是要用 Gentoo Linux 的,但是因為要太多時間作 Compile,而工作上又沒有辦法可以用二天以上的時間一直在 Linux 的環境上,所以就選用了 Slackware 比較快一點),之後再安裝 Windows 2000 英文版。不過因為記憶體只有 256MB 所以 Windows 跑起來就有點...,但重點是我非常可能大部份時間只是要在 Windows 下使用 Lotus Notes 讀文件,來配合公司的政策而己。下次再加 RAM 至 512 MB 就好了。

這樣子的安裝法,好像比較少人這樣作,只有之前公司的一個同事 Kelvin Lee 這樣作(還是因為我的提議),好處是 Windows 的開機變快了,因為 VMWare 可以選待機關機,又不怕有問題(很多的硬體會在待機回復時當機或出問題),所以下次啟動 Windows 事實上只是等於從待機回復,時間只有將原來記憶體資料從硬碟讀回來而己,比重開機快得多。而且還可以作整個 Windows 環境備份,不用 Norton ghost(要錢的),因為是一個假的硬碟(在 Linux 看來只是一個大的檔案),只要將整個檔案(或是多個 2GB 的檔案)備份起來就可以了。這個用法可以比較快速的回復整個 Windows 系統。現在可以同時使用 Lotus Notes 及 Linux 了。下次我計劃在 Linux 下再裝個 PearPC OS X 10.3 Penther 再昇級至 10.4 Tiger,這樣子就可以幾乎完全回復原來的工作環境,或者至少應該會比較快樂一點吧!

VMWare 5.0 加上 Linux kernel 2.6.11.12 沒有上次使用 VMWare 4.0 在 Linux kernel 2.6 上顥示卡無無法設定 32 bit Color 的問題了,而且不用重編 kernel。 VMWare 5.0 註冊碼請至 http://www.vmware.com 註冊。

Update :
現在有 VMPlayer 可以用,是由 VMWare 所提供的免費軟體!


發表回應 發表回應 ( 658預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3.1 / 561 )

二度瀕臨絕種
06/08/2005, 01:04 - Apple
剛看了 Steve Jobs 在 WWDC 的發表了 Apple 將要和 Intel 合作的消息,真是令人震驚,不過回想起來,從 OS X 出現以來,因為使用[http://developer.apple.com/darwin/] darwin kernel [/url]而且是 Open source ,所以就一直保持有一份 x86 版的 opendarwin 版本,和原版的 OS X 最大的不同就是 Apple 特有的 Aqua GUI 介面。 Open Darwin 使用 X window GUI 介面,但是若說 Apple 要出 OS X for x86 版本,絕對是可能的,只要先將 Aqua port 到 x86 CPU 上就可以了,何況這次還說明了將會使用叫 Rosetta 動態二進位碼轉譯器(dynamic binary translator)。它可以在 Intel 平台上執行現有的 PowerPC 應用程式。所以問題不大啦。

對 Windows 的使用者來說,多了一個 OS X 並不會令這些人就轉向使用 OS X ,了不起只是一些使用 Linux 或 BSD 的使用者跳過來看看,而且當 MicroSoft 說沒有 Office for OS X x86 版本時,不就玩完了嗎?

還有當使用 x86 (假如是和一般 PC 使用相同的硬體架構)就會出現 driver 不支援 OS X 的問題,這個也是目前 M$ 會產生最多問題的原因之一。

而對目前的 Macintosh 使用者來說,使用 PowerPC 並不是只有 OS 的問題,還包含了穩定性及使用較少的電量功率。可不要成了

Power Macintosh --。

使用 PowerPC 時 Power 的解釋是”強有力的”。
而使用 Intel CPU 時 Power 是解釋成”需要大功率的”。

這個 OS X for X86 版,會不會造成 Apple Macintosh 自 iMac 出現前向以來的二度”瀕臨絕種”呢?

我個人比較認為這個是 Steve Jobs 在向 IBM 嗆聲,加快低功率、低耗電、更高速度 PowerPC G5 的研發,而不是轉向 PlayStation III、XBox 360 等等電視樂器的市場,而冷落了 Apple 。
發表回應 發表回應 ( 759預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 710 )


<<開始 <前一頁 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 下一頁> 最後>>