雷 的个人资料AbbeyGong's Spaces照片日志 工具 帮助
2006/11/21

免拆機、不破壞保固之 LinkStation 軟體改機

之前看到有人問 LinkStation 如何改機, 我們已經改成功了。
同時建立了一個 Kuro-Box / LinkStation 改機同好 討論區, 原本想將文章投稿到雜誌社, 不過他們好像沒什麼興趣。文章排版可能無法像 PDF 那麼好, 若你需要 PDF 版, 可到討論區下載。以下文章我會找時間好好排版的, 請大家忍耐一下吧 冒汗

======== 廢話結束 ======== 廢話結束 ======== 廢話結束 ======== 廢話結束 ========

為何我會寫關於 Buffalo LinkStation 如何改機的文章呢?而且為何沒事要冒著破壞保固的危險來改機呢?這個是一個有關同事國標男的悲情故事, 說來話長, 稍後再來講這個故事。先讓我們來看Buffalo 的 LinkSataion 是何方神聖, 它主要的功能是 NAS (Network Attached Storage), 大小就跟最近很熱門的 Mac mini 差不多大。其實它是一台小電腦, 配備有 64MB 記憶體、MIPS 400 Mhz 的 CPU, 而硬碟的部分則依等級不同有 120G ~ 250G 的差別。詳細產品規格及功能你可以參考 Buffalo 公司的網頁 http://www.buffalo-tech.com.tw/producta.asp?M=29。

一、改機的好處

Buffalo 在 LinkStation 的硬碟裡安裝了一個小型的 Linux, 提供了網路芳鄰、網頁伺服器 (管理介面) 和 FTP 的功能。雖然它的系統是 Linux, 但是因為執行了 Samba 伺服程式, 使用與微軟網路芳鄰相容的 SMB/CIFS 通訊協定, 所以在辦公室或是家裡區域網路的環境下, 不管是 Windows 或是 Mac 的電腦都可以看到 LinkStation 所分享出來的硬碟。使用者可以將要分享的 MP3、電影、資料存放於 LinkStation 上, 進而達到檔案交換的目的。同時它也可以接一台 USB 介面的印表機, 並分享給區域網路上的電腦使用。

因為 LinkStation 的耗電量只有 17 ~ 25W, 在電費高居不下的時代, 它絕對比你用一般的 PC 來做專職的檔案分享伺服器還省電。

目前市面上有多以 Linux 為嵌入式系統的產品, 例如 IOGEAR 的 boss GNS-1000 及 V-Gear 的 LANDISK, 它們大多也有提供 FTP、Web 伺服器或是 NAS 的功能, 但因為 Linux 是放在大約 2MB ~ 4MB 的 Flash RAM 中, 因此其功能就受到限制, 以 Web 伺服器的功能來說, 它們大概就只能放置靜態的 html 網頁, 你若想在上面執行以 PHP 寫成的網頁, 它們就做不到。因為礙於 Flash Ram 及韌體的限制, 除非廠商能夠加大 Flash RAM 的空間及擴充韌體的功能, 否則你是無法使用其他的功能, 自然也無法自行增加。

Buffalo 的 LinkStation 雖然也是將 Linux 的核心放在 4MB 的 Flash RAM 中, 但是因為它在開機載入 Linux 核心之後會執行 chroot 將系統切換到安裝於硬碟的 Linux 環境中, 所以它就提供了無限的擴充功能。你可以在上面安裝 Apache (網頁) 伺服器、郵件伺服器、FTP 伺服器和安裝 Blog 軟體來寫個人的網誌。甚至可以將它改裝為一台專門抓 BT 及 eDonkey 的 P2P 伺服器。

那麼到底哪些人適合拿 LinkStation 來改機呢?若你:

1.需要一台整天開機的檔案分享伺服器, 但擔心電腦過於耗電, 晚上睡覺又怕吵。LinkStation 的特色就是耗電量低及低噪音, 當它開機後只有硬碟及小風扇會發出聲音, 而風扇又可以透過指令強迫關閉運轉。你該不會連硬碟的運轉聲都無法忍受吧, 雖然它的硬碟是 SAMSUNG SP1604N 7200 轉。

2.除了檔案分享的功能之外, 你已經受不了免費的網頁空間, 想有個 XOOPS 的個人網站或是 Blog 網誌提供親朋好友來觀看。

3.除了個人網站之外, 你還想有個不受空間限制及有專屬網域名稱的 E-mail 位址。

4.想要養小動物。有了寬頻的 ADSL 之後, 當然要充分的應用這些頻寬。大部分人的做法當然是整天開機執行 BT 或是 eDonkey、eMule 等 P2P 軟體。若 LinkStation 已經整天開機了, 那何不透過網頁管理介面來使用 P2P 軟體呢?讓你不管是在家裡、公司或是學校, 只要透過網頁瀏覽器就可以監控下載狀況及隨時隨地增加新的下載。

5.不想破壞保固、不想拆機器。改機方式是將 Linux 安裝在資料碟的分割區中, 你隨時可以切換回原來 Buffalo所附的系統。若想拍賣或是回原廠維修, 只要將資料碟分割區的 Linux 刪除即可。完全不動螺絲起子, 不拆機器。

6.它比一台 PC 還便宜, 以 160G 的型號為例, 目前光華商場的報價約在台幣 7200 ~ 7500 之間。若以單純的檔案伺服器來說, 是嫌稍貴。但若加上前面所說的 5 項優點, 就物超所值了。

7.你想學習 Linux, 入門書、架站書買了一堆, 但卻是虎頭蛇尾, 中斷了很多次。透過本篇文章, 藉由 LinkStation 的改機過程你除了可以享受改機的樂趣之外, 更可以實際練習架站的技巧。若你對 Linux 沒興趣只是想改機, 擴充 LinkStation 的功能 , 那也不用擔心。因為本文章是以 Step by Step 的方式說明, 務求您照著做也可以無痛改機成功。

至於我為什麼想要拿 Buffalo 的 LinkStation 來改機呢?這純粹是個偶然的因素。我有一個同事, 聽說國標舞跳的很好, 姑且稱他為國標男好了。話說有一天國標男跟我提起 LinkStation 是一台以 Linux 為嵌入式系統的機器, 且可以改機增加許多功能, 在日本已經流行很久了。對於本來就有在玩 Linux 的我們來說當然是眼睛一亮, 於是開始在網路上找資料。後來發現原來日本還有出一款專門為改機所設計的 Kuro-Box, 它的主機板與 LinkStation 一樣是 Buffalo 公司的, 但是較容易改機, 完全沒有任何限制。因為台灣沒有人代理, 若要買則需請網路上專門幫人從日本帶東西回台灣的店家購買。湊足了兩台的錢之後, 由國標男匯錢給那個老闆, 因為老闆本身是親自到日本幫客戶帶貨, 可能是因為要買的東西太多, 因此老闆第一次只帶了一台回來。國標男就自願把那台 Kuro-Box 先給我用, 他自己則願意再等老闆下一次出國。在我使用 Kuro-Box 期間, 有同事覺得很好用也想買, 但有鑒於之前找的代購服務不是很好, 於是我們就找了另一家代購商家, 這次找的是直接幫客戶從網路上訂, 大約等 12 ~ 14 天就可以拿到貨了。這期間我們已經陸續又購買了 2 台 Kuro-Box, 但悲情的國標男還是一直沒有拿到兩個月前訂的 Kuro-Box。

後來他乾脆找老闆退了錢, 直接購買的 Buffalo 的 LinkStation。其實在台灣的 mobile01 或是 pcdvd討論區都有人在問如何改 LinkStation, 但是一直都沒有人寫出中文的教學文章。因為 Kuro-Box 與 LinkStation 的改法是差不多的, 但是在台灣 LinkStation 比較好買, 因此我才會想寫文章來教大家解除 LinkStation 的封印。

二、更新 LinkStation 的韌體

Buffalo 的 LinkStation 提供了強大的擴充功能, 但是它並沒有提供任何可以連線進入修改的方法。但因為它可以更新韌體, 所以網路上已經有專門的網站替它修改增加 telnet 伺服器功能的韌體。只要以此韌體更新之後, 你就可以 telnet 進 LinkStation, 並在資料碟分割區安裝新的 Linux, 而不破壞原本的系統。

本文章接下來要做的修改筆者已測試無誤可以執行, 雖然可以不破壞保固, 但你若修改錯誤而導致無法開機, 還是得拆開 LinkStation, 將硬碟裝到 PC 上修復。如此一來就破壞保固了, 因此在修改前請三思。

首先我們必須先下載包含 telnet 伺服器的韌體, 請到 http://linkstationwiki.org/downloads/openlink/mipsel-openlink-052b.zip 下載, 我所使用的是 mipsel-openlink-052b.zip 版。跟新韌體前, 你必須先完成下列設定:

1.關防 Windows 的火牆。

2.參考 LinkStation 的手冊設定好 IP 位址。若你的區域網路沒有 DHCP 伺服器, LinkStation 預設會使用 192.168.11.150 的 IP, 請將 Windows 的 IP 改為 192.168.11.1 的 IP 後才可進入網頁管理介面。

3.將 LinkStation 的 IP 設為固定 IP, 因為安裝自己的 Linux 會複製相關的網路設定。而我發現, 若將 LinkStation 設為自動取得 IP, 會導致進入自己的 Linux 時無法正常取得 IP, 而將自己鎖在外面 (已知是 dhcp 用戶端程式的問題)。

就緒之後, 你可在解開 openlink-052b.zip 的 openlink-052b 目錄下找到 HD-HLAN FWUpdate.exe 程式, 它就是韌體更新程式。在同目錄下會有一個 linkstation_version.txt 檔案, 是否可以更新韌體的依據取決於 LinkStation 的版本與 linkstation_version.txt 檔的內容。LinkSstation 預設的韌體版本為 2.05, 因此在更新前 HD-HLAN FWUpdate.exe 會檢查同目錄下 linkstation_version.txt 的版本, 若沒有高於 LinkStation 的版本則無法更新。因此請將 linkstation_version.txt 的內容改為 2.06。

你執行 HD-HLAN FWUpdate.exe 會出現如下的畫面:



按 【Renew Firmware】 鈕後, 會檢查韌體版本:



按 【OK】 鈕即可更新。

更新完後, 你就可以使用 Windows 內建的 telnet 程式 telnet 入 LinkStation 了, 預設是不需要輸入帳號與密碼, 它會直接出現提示字元:

bash-2.05a# ← 直接顯示提示字元

你可如下檢查 CPU 資訊:

bash-2.05a# cat /proc/cpuinfo ← 檢視 CPU 資訊
system type : MIPS IDT32434
processor : 0
cpu model : MIPS 4Kc V0.10 ← MIPS 的 CPU
BogoMIPS : 399.76 ← 頻率為 400 MHz
wait instruction : yes
microsecond timers : yes
tlb_entries : 16
extra interrupt vector : yes
hardware watchpoint : yes
VCED exceptions : not available
VCEI exceptions : not available

原廠硬碟會有三個分割區:

bash-2.05a# mfdisk -p /dev/hda ← 檢查分割區
Units = /dev/hda, 1073MB
/dev/hda1 = Linux, ext3 ← 原廠的 Linux 是安裝在此分割區
/dev/hda2 = Linux swap, swap ← 此分割區為置換分割區
/dev/hda3 = Linux, ext3 ← 資料碟分割區, 存放資料用 (如網路芳鄰)

而各分割區的使用狀況如下:

bash-2.05a# df -h ← 檢視硬碟分割區掛載狀況
Filesystem Size Used Avail Use% Mounted on
rootfs 365M 135M 211M 39% /
/dev/root 365M 135M 211M 39% / ← 第一個分割區約 365 MB
/dev/ram0 9.5M 138k 8.8M 2% /mnt/ram
/dev/hda3 146G 33M 146G 1% /mnt/hda ← 第三個分割區約 146G

三、設定網路相關資訊

因為你的 LinkStation 不是以 DHCP的方式取得 IP, 而是透過網路管理介面手動設定, 所以它將不會有 DNS 及閘道的相關設定。而後面的 Linux 安裝需透過網路, 所以我們必須先讓 LinkStation 可以上網。

你可如下檢查是否已設定 DNS 相關資訊:

bash-2.05a# cat /etc/resolv.conf ← 檢視 DNS 設定
#
# resolv.conf This file is the resolver configuration file
# See resolver(5).
#

若得到的資料都是以 # 號註解的說明, 表示沒有設定 DNS 資料, 請如下新增 DNS 伺服器:

bash-2.05a# echo "nameserver 168.95.192.1" > /etc/resolv.conf ← 增加 Hinet 的 DNS 伺服器
bash-2.05a# cat /etc/resolv.conf ← 再次檢查
nameserver 168.95.192.1 ← 已經設定好了

接著檢查是否設定好閘道:

bash-2.05a# cat /etc/network/interfaces ← 檢視網路設定
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.0.131
netmask 255.255.255.0

若沒看到 gateway 的資訊, 表示沒有設定閘道, 請如下增加:

bash-2.05a# echo "gateway 192.168.0.3" >> /etc/network/interfaces ← 我的閘道為 192.168.0.3
bash-2.05a# cat /etc/network/interfaces ← 再次檢查
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.0.131
netmask 255.255.255.0
gateway 192.168.0.3 ← 已經增加了

都設定好後, 就可以重新開機了:

bash-2.05a# reboot ← 重新開機

開完機後, 同樣以 Windows 內建的 telnet 程式連到 LinkStation:

bash-2.05a# ping www.google.com.tw -c4 ← 測試是否可以連上網路
PING www.l.google.com (66.249.89.104) from 192.168.0.131 : 56(84) bytes of data.
64 bytes from 66.249.89.104: icmp_seq=1 ttl=243 time=121 ms
64 bytes from 66.249.89.104: icmp_seq=2 ttl=243 time=113 ms
64 bytes from 66.249.89.104: icmp_seq=3 ttl=243 time=79.2 ms
64 bytes from 66.249.89.104: icmp_seq=4 ttl=243 time=78.5 ms
...

四、設定 SSH 伺服器

因為由 Windows 使用 telnet 連到 LinkStation 時會導致按一個 [Enter] 鍵但送出兩個訊號的問題, 這是我以前直接由 Linux 直接連到 LinkStation 上所沒遇過的。這個 [Enter] 鍵的問題會導致稍後在安裝 Linux 時失敗, 但我們藉由啟動 LinkStation 上的 SSH 伺服器, 並改由 SSH 連線可以解決此問題。

請先下載 http://www.geishuettner.de/docs/Linkstation/mipsbins.tgz 檔案, 並透過網路芳鄰將它上傳到 LinkStation 上的 share 目錄, 它有一些在安裝過程會需要的程式。

因為預設的管理者帳號 root 是沒有設定密碼的, 所以無法透過 SSH 連線, 因此要先設定 root 的密碼:

bash-2.05a# passwd
Enter new UNIX password: ←┐
Retype new UNIX password: ←┴ 輸入兩次密碼, 預設不會顯示任何字元
passwd: password updated successfully ← 密碼更新成功

接著產生 SSH 伺服器的金鑰:

bash-2.05a# dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key ← 產生 DSS 金鑰
bash-2.05a# dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key ← 產生 RSA 金鑰
bash-2.05a# /etc/init.d/dropbear start ← 啟動 SSH 伺服器
Starting Dropbear SSH server: dropbear.

在 Windows 上你可以使用 PieTTY 透過 SSH 連上 LinkStation, 其官方網址為 http://ntu.csie.org/~piaip/pietty/ 我所下載的程式是http://ntu.csie.org/~piaip/pietty/stable/pietty0327.exe。你可如下操作:



使用的 port 記得選擇 22, 並使用 SSH 連線。連上後以 root 帳號跟剛才設定的密碼登入即可。

五、安裝 Linux

現在已經解決 [Enter] 鍵的問題了, 我們將在資料碟分割區安裝自己的 Linux 系統, 所使用的 Linux 發行版為 Debian, 因為它支援了很多的 CPU 類型。因為 LinkStation 沒有光碟機, 因此我們會執行 Debian 的前端安裝程式, 然後透過網路安裝。目前已經有人將它寫成半自動化的安裝程式, 因此不需擔心很複雜。請先如下操作:

root@HD-HLAN0FE:/mnt/hda/debil-0.1# cd /mnt/hda/share ← 切換到此目錄
root@HD-HLAN0FE:/mnt/hda/debil-0.1# tar zxvf mipsbins.tgz ← 解開之前透過網路芳鄰所上傳的檔案
root@HD-HLAN0FE:/mnt/hda/debil-0.1# cp bins/* /bin/ ← 將所有的指令複製到 /bin 目錄下
root@HD-HLAN0FE:/mnt/hda/debil-0.1# cd /mnt/hda ← 切換到此目錄
root@HD-HLAN0FE:/mnt/hda/debil-0.1# wget http://www.geishuettner.de/docs/Linkstation/debil-0.1.tgz
───────────┬───────────
取得安裝 debian 所需的程式
root@HD-HLAN0FE:/mnt/hda/debil-0.1# tar zxvf debil-0.1.tgz ← 解開壓縮檔
root@HD-HLAN0FE:/mnt/hda/debil-0.1# mkdir -p /mnt/hda/debil-0.1/debinst/var/cache/apt/archives
───────────┬──────────
建立下載套件存放的目錄
root@HD-HLAN0FE:/mnt/hda/debil-0.1# cd debil-0.1 ← 切換到此目錄
root@HD-HLAN0FE:/mnt/hda/debil-0.1# cp swappart_mipsel /bin ← 此指令可以將硬碟的第一個與第三個分割區的資訊交換, 我們將它複製到 /bin 目錄下
root@HD-HLAN0FE:/mnt/hda/debil-0.1# ./debil.sh ← 執行安裝 debian 的指令稿
debil.sh/mipsel 0.1 by marge
see http://www.geishuettner.de/docs/Linkstation/ for updates

(if you uant to collect error messages created outside this script
you should rerun with a redirect of handle 2)
./debil.sh: arch: command not found ← 找不到此指令, 不過不影響安裝
Press enter to begin installation ← 按 [Enter] 鍵繼續
...

連上網路下載基本所需的套件後會出現下列的 Debian 安裝畫面:



因為安裝的過程很多, 不適合把所有的圖片都放到此份文件中, 我已將大部分的安裝過程抓圖放到 http://www.kurobox.info/linkstation/ 網站中。你只需照上圖的項目依序設定即可, 我只針對須注意的部分特別說明。在安裝過程到 【Select and install packages】 項目時, 請如下圖所示,
不要選擇任何套件:



所有套件都不選的好處是可以節省從網路下載的時間, 等安裝好後我們再依需求自行安裝所需的套件即可。在安裝到最後的時候, 會出現如下圖的 webmin 設定畫面:



它叫你按 [Enter] 鍵進入 vi 編輯器, 按了 [Enter] 鍵之後會進入 vi 編輯器, 因為一般人幾乎沒用過此編輯器, 所以我特別說明:



請直接如上圖輸入 :wq 後不做任何修改後離開, 因為稍後我們會移除 webmin。

root@LinkStation://sbin# apt-get remove webmin ← 移除 webmin 套件
root@LinkStation://sbin# apt-get clean ← 清除所有下載的套件以節省硬碟空間
root@LinkStation://sbin# exit ← 離開目前的 chroot 環境
root@HD-HLAN0FE:/mnt/hda/debil-0.1#cp -dpRvx /mnt/hda/debil-0.1/debinst/* /mnt/hda ← 將安裝好的 debian 複製到第三個硬碟分割區的根目錄下
root@HD-HLAN0FE:/mnt/hda/debil-0.1# cd /mnt/hda ← 切換到此目錄
root@HD-HLAN0FE:/mnt/hda# cp debil-0.1/swappart_mipsel /mnt/hda/bin ← 將交換硬碟分割區的指令複製到 debian 的 /bin 目錄下
root@HD-HLAN0FE:/mnt/hda# rm -rf bins debil-0.1 debil-0.1.tgz debil.2.sh debil.old.log ← 刪除不需要的檔案
root@HD-HLAN0FE:/mnt/hda# tar zcvf linkstation-debian.tgz ./ ← 將剛安裝好的 debian 系統壓縮
root@HD-HLAN0FE:/mnt/hda# mv linkstation-debian.tgz share ← 將此壓縮檔複製到 share 目錄

你可以連到網路芳鄰上的 LinkStation, 在 share 目錄下可以下載到 linkstation-debian.tgz 的系統壓縮檔。萬一以後需要重新安裝, 就不需執行這麼多的步驟了, 你只需上傳此系統壓縮檔, 並將它解開即可。

root@HD-HLAN0FE:/mnt/hda# reboot ← 重新開機

開完機後, 重新 telnet 進入 LinkStation, 如下掃描資料碟分割區的硬碟:

bash-2.05a# cd / ← 切換到跟目錄
bash-2.05a# umount /dev/hda3 ← 卸載第三個分割區 (之前安裝 debian 的分割區)
bash-2.05a# e2fsck /dev/hda3 ← 進行硬碟掃描, 以防止進入 debian 時需花很多時間掃描
e2fsck 1.27 (8-Mar-2002)
2002/01/01_09:00 has been mounted 51 times without being checked, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
2002/01/01_09:00: 50051/19464192 files (0.4% non-contiguous), 848032/38909430 blocks

掃描完畢後, 請執行下列的指令將硬碟的第一和第三個分割區交換, 如此系統重新開機後會進入到你所安裝的 Linux 環境:

bash-2.05a# /bin/swappart_mipsel /dev/hda /dev/hda ← 執行此指令
swappart 0.1 by marge 2005-06-12

short partition dump:

partition 0 = type 83
partition 1 = type 82
partition 2 = type 83
partition 3 = type 0
Swapping partitions 0 and 2
bash-2.05a# reboot ← 重新開機

這時系統應該會開到 debian 系統下, 開完機後請用 pieTTY 以 SSH 連線到 LinkStation:

root@LinkStation:/# df -h ← 檢查硬碟掛載資訊
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 147G 922M 146G 1% / ← 原本的資料碟分割區已經變成第一個分割區了
/dev/hda3 365M 138M 209M 40% /mnt/hda

若你已經很熟悉 Linux, 那麼目前的階段已經跟你以往所使用的 Linux 環境沒有什麼不同了, 你可以依照自己的需求更改各項設定與安裝所需的伺服器, 將 LinkStation 的功能發揮到極至。若你不熟悉 Linux, 可以繼續參考文後的說明來進行各項修改與安裝所需的伺服器。

因為 LinkStation 並沒有視訊輸出及鍵盤輸入功能, 所以為了避免以後你因為設定錯誤而將自己鎖在外面, 而無法回到原廠的系統, 所以建議您馬上執行下列指令將第一個和第三個分割區交換:

LinkStation:~# /bin/swappart_mipsel /dev/hda /dev/hda ← 交換分割區資訊

當你下次重新開機後, LinkStation 會進到原廠的系統中。然後如下設定每次進入 debian 時都會自動執行此指令:

LinkStation:~# cd /etc/init.d
LinkStation:~# nano switchhd.sh

輸入如下的內容:

#!/bin/bash
/bin/swappart_mipsel /dev/hda /dev/hda
echo "$(date) -- swaphd ok" >> /var/log/swaphd.log

存檔後執行下列指令:

LinkStation:~# chmod a +x switchhd.sh ← 加上執行權限
LinkStation:~# update-rc.d swaphd.sh start 99 2 3 4 5 . ← 設定開機自動執行 (別忘了最後的 ".")
Adding system startup for /etc/init.d/swaphd.sh ...
/etc/rc2.d/S99swaphd.sh -> ../init.d/swaphd.sh
/etc/rc3.d/S99swaphd.sh -> ../init.d/swaphd.sh
/etc/rc4.d/S99swaphd.sh -> ../init.d/swaphd.sh
/etc/rc5.d/S99swaphd.sh -> ../init.d/swaphd.sh

如此每次開機進入 debian 之後都會將硬碟分割區資訊再次交換, 下次重開機之後都會進入原廠的系統。你只需連線進原廠的系統, 重新執行 /bin/swappart_mipsel /dev/hda /dev/hda 指令, 再重新開機就會進入自己安裝的 Linux。這樣的好處是不會因為不小心設定錯誤將自己鎖在外面 (通常是更改網路設定所造成的錯誤) 而須拆機器來修改。

六、新增使用者帳號

若你在安裝的過程中沒有建立一般使用者帳號, 可以如下新增:

root@LinkStation:/# adduser wyw ← 新增使用者帳號
Adding user `wyw'...
Adding new group `wyw' (1000).
Adding new user `wyw' (1000) with group `wyw'.
Creating home directory `/home/wyw'.
Copying files from `/etc/skel'
Enter new UNIX password: ←┐
Retype new UNIX password: ←┴ 輸入兩次密碼
passwd: password updated successfully
Changing the user information for wyw
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [y/N] y ← 輸入 "y"

因為在安裝自己的 Linux 時安裝程式會將原廠系統的基本設定也一起複製, 因此也會把不需要密碼的 telnet 程式複製到新的系統中。若你的 LinkStation 是直接連到網路上而不是使用 IP 分享器將埠號轉送, 那麼任何人都可以直接 telnet 進來。請如下移除 telnet 程式:

root@LinkStation:/# update-rc.d -f telnet remove ← 設定 telnet 伺服器開機不啟動
update-rc.d: /etc/init.d/telnet exists during rc.d purge (continuing)
Removing any system startup links for /etc/init.d/telnet ...
/etc/rc2.d/S05telnet

root@LinkStation:/# rm -f /etc/init.d/telnet ← 刪除 telnet 相關檔案
root@LinkStation:/# reboot ← 重新開機

自行登入原廠系統更改分割區資訊再次重新開機後, 請登入 debian, 接著如下升級套件資訊與升級系統套件, 然後安裝常用的程式:

LinkStation:~# apt-get update ← 更新系統套件資訊
LinkStation:~# apt-get upgrade ← 升級系統套件
LinkStation:~# apt-get install bzip2 ← 安裝 bzip2 解壓縮程式
LinkStation:~# apt-get install ncftp ← 安裝好用的 ftp 用戶端程式
LinkStation:~# apt-get install rcconf ← 透過它你可以決定哪些伺服器在開機時要啟動
LinkStation:~# apt-get install nmap ← 可掃描伺服器開了哪些埠號
LinkStation:~# apt-get install psmisc ← 檢視某些系統資訊時會用到
LinkStation:~# apt-get install ntpdate ← 校時伺服器
LinkStation:~# apt-get install screen ← 好用的終端機程式

七、安裝Apache + MySQL + PHP

你將 LinkStation 改機, 目的可能就是將它改為一個精簡的 Web 伺服器, 讓你可以在上面架設自己的 XOOPS 網站或是 Blog。首先請如下修改 /etc/hosts 檔:

LinkStation:~# nano /etc/hosts

依自己的 IP 與主機名稱修改:

127.0.0.1 localhost.localdomain localhost
192.168.0.131 linkstation ← 依自己的情況修改

1.安裝 Apache

接著如下安裝所需的套件:

LinkStation:~# apt-get install apache2 ← 安裝 Apache 套件
LinkStation:~# nano /etc/apache2/apache2.conf ← 修改 Apache 設定

請如下修改:

...
AddDefaultCharset Big5 ← 刪除此行的註解, 並將設定值改為 Big5
...


再來是修改 /etc/apache2/sites-available/default 設定檔:

LinkStation:~# nano /etc/apache2/sites-available/default
...
<Directory /var/www/>
Options -Indexes FollowSymLinks MultiViews ← 在 Intexes 前加上 "-" 號
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
#RedirectMatch ^/$ /apache2-default/ ← 於此行前加上 # 號
</Directory>

存檔後, 重新啟動 Apache 伺服器:

LinkStation:~# /etc/init.d/apache2 restart

2.安裝MySQL

因為不管是 XOOPS 或是 Blog 都需要用到資料庫, 請如下安裝 MySQL 資料庫:

LinkStation:~# apt-get install mysql-server-4.1 ← 安裝 MySQL
LinkStation:~# mysqladmin -u root password "123456" ← 將資料庫管理者的密碼設為 "123456"
LinkStation:~# mysql -u root -p ← 測試是否可登入
Enter password:123456 ← 輸入剛才設定的密碼, 預設不會出現任何字元
Welcome to the MySQL monitor. Commands end with ; or \g. ← 成功登入
Your MySQL connection id is 6 to server version: 4.1.11-Debian_4-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> exit ← 離開
Bye

3.安裝PHP

有了 Apache 與 MySQL 資料庫之後, 再安裝 PHP 就完成 Web 環境的設定了:

LinkStation:~# apt-get install php4 ┐
LinkStation:~# apt-get install php4-mysql ├ 安裝 PHP 與所需的模組
LinkStation:~# apt-get install libapache2-mod-php4 ┘
LinkStation:~# nano /etc/php4/apache2/php.ini ← 編輯 PHP 設定檔

請如下修改:

...
; Example lines:

extension=mysql.so ← 刪除此行前面的分號註解
;extension=gd.so
...

存檔後如下重新啟動 Apache:

LinkStation:~# /etc/init.d/apache2 restart
LinkStation:~# nano /var/www/test.php ← 建立 PHP 測試網頁

內容如下:

<?php
phpinfo();
?>

存檔後請開啟瀏覽器, 瀏覽 http://你的 ip/test.php 網頁, 例如 http://192.168.0.131/test.php。你應該可以看到很多 PHP系統資訊, 表示你所有的設定都是正確的。若你以前已經有現成的網頁或是有安裝 XOOPS 或是類似程式的經驗, 只要將網頁上傳到 /var/www 目錄即可。

八、安裝 P2P 軟體 ─ BitTorrent 及 Web 前端管理介面

你改機也有可能是為了要用來透過 BT 抓檔案, 因為 BT 的通訊協定是開放的, 所以在 Linux 上當然也有對應的軟體。

玩電腦的人都很有愛心, 相信你們應該都養了一堆如驢子、騾子...等等的小動物。既然有已經改機, 且安裝了 Linux, 那麼應該有人也會想在上面養小動物。這當然是沒問題的, 不過我們考量的重點是能夠以 Web 介面來操作的軟體為主, 這樣才不需在 LinkStation 上裝 X Window, 然後透過 VNC 來管理, 因為這樣應該會很浪費資源。首先讓我們先安裝 BT 軟體, 請到 http://www.torrentflux.com/ 網站下載 torrentflux-1.5.tar.gz,它是一套 PHP 的前端管理介面, 下載完後使用 WinSCP (http://winscp.net/eng/download.php) 透過 SSH 上傳到 LinkStation 上。因為它會用到 Web、MySQL 伺服器及 PHP, 所以你一定要照前面的說明設定好它們。傳完後, 請如下安裝:

LinkStation:~# apt-get install bittornado ← 安裝 BT 軟體
LinkStation:~# cd /var/tmp
LinkStation:/var/tmp# tar zxvf torrentflux-1.5.tar.gz ← 解開 PHP 所寫的 BT 前端網頁介面
LinkStation:/var/tmp# cd torrentflux_1.5
LinkStation:/var/tmp/torrentflux_1.5# cp -r html /var/www/bt ← 將它複製到 Apache 的目錄
LinkStation:/var/tmp/torrentflux_1.5# cp -r TF_BitTorrent /usr/local/ ← 複製相關指令到 /usr/local 目錄
LinkStation:/var/tmp/torrentflux_1.5# mysqladmin create torrentflux -p ← 建立 torrentflux 資料庫
Enter password:123456 ← 輸入管理者密碼
LinkStation:/var/tmp/torrentflux_1.5# cd sql
LinkStation:/var/tmp/torrentflux_1.5/sql# mysql -u root torrentflux < torrentflux.sql -p ← 匯入資料庫設定
Enter password:123456 ← 輸入管理者密碼
LinkStation:/var/tmp/torrentflux_1.5/sql# cd /var/www/bt
LinkStation:/var/www/bt# nano config.php ← 編輯設定檔

請如下修改相關設定:

...
/**************************************************************************/
// YOUR DATABASE CONNECTION INFORMATION
/**************************************************************************/
$cfg["db_host"] = "localhost"; // DB host computer name or IP
$cfg["db_name"] = "torrentflux"; // Name of the Database
$cfg["db_user"] = "root"; // username for your MySQL database
─┬
改為資料庫管理者帳號
$cfg["db_pass"] = "123456"; // password for database
──┬
資料庫管理者密碼
/**************************************************************************/

/**************************************************************************/
// Define the PATH where the downloads will go (note that it ends with a / [sla$
// Note this can be anywhere (not where TorrentFlux is installed)
// must be chmod'd to 777 (DO NOT MAKE THIS THE PATH TO YOUR PHP FILES!)
$cfg["path"] = "/share/bt/";
─┬─
改為 BT 檔案欲存放的目錄 (稍後會建立)
/**************************************************************************/

/**************************************************************************/
// Specify the path to the btphptornado.py or btphptorrent.py python script
// Only change the path to this file as needed.
// You may use 'btphptornado.py' for BitTornado Client or 'btphptorrent.py'
// for the original BitTorrent Client (read the INSTALL file for more).
$cfg["btphpbin"] = "/usr/local/TF_BitTorrent/btphptorrent.py";
───────┬───────
改成此檔案路徑
/**************************************************************************/

/**************************************************************************/
// Specify the btshowmetainfo.py file name
// Use the full path to this file -- change as needed.
$cfg["btshowmetainfo"] = "/usr/local/TF_BitTorrent/btshowmetainfo.py";
────────┬────────
改成此檔案路徑
/**************************************************************************/
...

接著建立存放 BT 暫存及存檔的目錄:

LinkStation:/var/www/bt# mkdir /share/bt
LinkStation:/var/www/bt# chmod 777 /share/bt ← 設定權限

存檔後請開啟瀏覽器, 瀏覽 http://你的 ip/bt 網頁, 例如 http://192.168.0.131/bt:



當畫面出現時, 你一定會覺得很奇怪, 剛剛不是沒設帳號跟密碼嗎?那這裡要填什麼?你
只要隨便取個帳號跟設定密碼即可。以後這組帳號與密碼將會是管理者帳號及密碼, 若你要建立一般使用者的帳號, 可由網頁管理介面來建立。檔案下載的使用畫面如下:



九、設定網路芳鄰

裝好 BT 軟體及前端網頁介面之後, 我們可以設定 Samba, 讓其他的電腦可以透過網路芳鄰存取我們所下載的 BT 檔案:

LinkStation:~# apt-get install samba ← 安裝 Samba
LinkStation:~# nano /etc/samba/smb.conf ← 修改設定檔

請如下修改:

...
# "security = user" is always a good idea. This will require a Unix account
# in this server for every user accessing the server. See
# /usr/share/doc/samba-doc/htmldocs/ServerType.html in the samba-doc
# package for details.
security = share ← 將此設定的值改為 "share"
...
[share] ┐
comment = share folder │
path = /share ├ 加入這些設定
guest ok = yes │
writable = yes ┘

存檔後, 重新啟動 Samba:

LinkStation:~# /etc/init.d/samba restart ← 重新啟動 Samba
LinkStation:~# mkdir /share ← 預設應該就有 /share 目錄了, 若沒有, 請建立
LinkStation:~# chmod 777 /share ← 設定目錄權限

這時, 其他的電腦就可以透過網路芳鄰存取 LinkStation 了。

前面說到 LinkStation 還可以架設 FTP、Mail、DNS 伺服器以及EDonkey/eMule 的 Web 前端介面, 不過這些將留待下次再說明。

linux上ssh配置指南

介绍SSH
什么是SSH?
传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到"中间人"(man -in-the-middle)这种方式的攻击。所谓"中间人"的攻击方式,就是"中间人"冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被"中间人"一转手做了手脚之后,就会出现很严重的问题。


SSH的英文全称是 Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的"通道"。

最初SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。

SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。

SSH的安全验证是如何工作的
从客户端来看,SSH提供两种级别的安全验证。

第一种级别(基于口令的安全验证)只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到"中间人"这种方式的攻击。

第二种级别(基于密匙的安全验证)需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密"质询"(challenge)并把它发送给客户端软件。客户端软件收到"质询"之后就可以用你的私人密匙解密再把它发送给服务器。

用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。

第二种级别不仅加密所有传送的数据,而且"中间人"这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒。

安装并测试OpenSSH
因为受到美国法律的限制,在很多Linux的发行版中都没有包括OpenSSH。但是,可以从网络上下载并安装OpenSSH(有关OpenSSH的安装和配置请参考:http://www.linuxaid.com.cn/engineer/brimmer/html/OpenSSH.htm)。

安装完OpenSSH之后,用下面命令测试一下:

ssh -l [your accountname on the remote host] [address of the remote host]

如果OpenSSH工作正常,你会看到下面的提示信息:

The authenticity of host [hostname] can't be established.
Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.
Are you sure you want to continue connecting (yes/no)?

OpenSSH告诉你它不知道这台主机,但是你不用担心这个问题,因为你是第一次登录这台主机。键入"yes"。这将把这台主机的"识别标记"加到"~/.ssh/know_hosts"文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。

然后,SSH提示你输入远程主机上你的帐号的口令。输入完口令之后,就建立了SSH连接,这之后就可以象使用telnet那样使用SSH了。

SSH的密匙
生成你自己的密匙对
生成并分发你自己的密匙有两个好处:

1) 可以防止"中间人"这种攻击方式

2) 可以只用一个口令就登录到所有你想登录的服务器上

用下面的命令可以生成密匙:

ssh-keygen

如果远程主机使用的是SSH 2.x就要用这个命令:

ssh-keygen -d

在同一台主机上同时有SSH1和SSH2的密匙是没有问题的,因为密匙是存成不同的文件的。

ssh-keygen命令运行之后会显示下面的信息:

Generating RSA keys: ............................ooooooO......ooooooO
Key generation complete.
Enter file in which to save the key (/home/[user]/.ssh/identity):
[按下ENTER就行了]
Created directory '/home/[user]/.ssh'.
Enter passphrase (empty for no passphrase):
[输入的口令不会显示在屏幕上]
Enter same passphrase again:
[重新输入一遍口令,如果忘记了口令就只能重新生成一次密匙了]
Your identification has been saved in /home/[user]/.ssh/identity.
[这是你的私人密匙]
Your public key has been saved in /home/[user]/.ssh/identity.pub.
The key fingerprint is: 2a:dc:71:2f:27:84:a2:e4:a1:1e:a9:63:e2:fa:a5:89 [user]@[local machine]

"ssh-keygen -d"做的是几乎同样的事,但是把一对密匙存为(默认情况下)"/home/[user]/.ssh/id_dsa"(私人密匙)和"/home/[user]/.ssh/id_dsa.pub"(公用密匙)。

现在你有一对密匙了:公用密匙要分发到所有你想用ssh登录的远程主机上去;私人密匙要好好地保管防止别人知道你的私人密匙。用"ls -l ~/.ssh/identity"或"ls -l ~/.ssh/id_dsa"所显示的文件的访问权限必须是"-rw-------"。

如果你怀疑自己的密匙已经被别人知道了,不要迟疑马上生成一对新的密匙。当然,你还要重新分发一次公用密匙。

分发公用密匙
在每一个你需要用SSH连接的远程服务器上,你要在自己的家目录下创建一个".ssh"的子目录,把你的公用密匙"identity.pub" 拷贝到这个目录下并把它重命名为"authorized_keys"。然后执行:

chmod 644 .ssh/authorized_keys

这一步是必不可少的。如果除了你之外别人对"authorized_keys"文件也有写的权限,SSH就不会工作。

如果你想从不同的计算机登录到远程主机,"authorized_keys"文件也可以有多个公用密匙。在这种情况下,必须在新的计算机上重新生成一对密匙,然后把生成的"identify.pub"文件拷贝并粘贴到远程主机的"authorized_keys"文件里。当然在新的计算机上你必须有一个帐号,而且密匙是用口令保护的。有一点很重要,就是当你取消了这个帐号之后,别忘了把这一对密匙删掉。

配置SSH
配置客户端的软件
OpenSSH 有三种配置方式:命令行参数、用户配置文件和系统级的配置文件("/etc/ssh/ssh_config")。命令行参数优先于配置文件,用户配置文件优先于系统配置文件。所有的命令行的参数都能在配置文件中设置。因为在安装的时候没有默认的用户配置文件,所以要把 "/etc/ssh/ssh_config"拷贝并重新命名为"~/.ssh/config"。

标准的配置文件大概是这样的:

[lots of explanations and possible options listed]
# Be paranoid by default
Host *
ForwardAgent no
ForwardX11 no
FallBackToRsh no

还有很多选项的设置可以用"man ssh"查看"CONFIGURATION FILES"这一章。

配置文件是按顺序读取的。先设置的选项先生效。

假定你在www.foobar.com上有一个名为"bilbo"的帐号。而且你要把"ssh-agent"和"ssh-add"结合起来使用并且使用数据压缩来加快传输速度。因为主机名太长了,你懒得输入这么长的名字,用"fbc"作为"www.foobar.com"的简称。你的配置文件可以是这样的:

Host *fbc
HostName www.foobar.com
User bilbo
ForwardAgent yes
Compression yes
# Be paranoid by default
Host *
ForwardAgent no
ForwardX11 no
FallBackToRsh no

你输入"ssh fbc"之后,SSH会自动地从配置文件中找到主机的全名,用你的用户名登录并且用"ssh-agent"管理的密匙进行安全验证。这样很方便吧!

用SSH连接到其它远程计算机用的还是"paranoid(偏执)"默认设置。如果有些选项没有在配置文件或命令行中设置,那么还是使用默认的"paranoid"设置。

在我们上面举的那个例子中,对于到www.foobar.com的SSH连接:"ForwardAgent"和"Compression"被设置为 "Yes";其它的设置选项(如果没有用命令行参数)"ForwardX11"和"FallBackToRsh"都被设置成"No"。

其它还有一些需要仔细看一看的设置选项是:

l CheckHostIP yes

这个选项用来进行IP地址的检查以防止DNS欺骗。

l CompressionLevel

压缩的级别从"1"(最快)到"9"(压缩率最高)。默认值为"6"。

l ForwardX11 yes

为了在本地运行远程的X程序必须设置这个选项。

l LogLevel DEBUG

当SSH出现问题的时候,这选项就很有用了。默认值为"INFO"。

配置服务端的软件
SSH服务器的配置使用的是"/etc/ssh/sshd_config"配置文件,这些选项的设置在配置文件中已经有了一些说明而且用"man sshd"也可以查看帮助。请注意OpenSSH对于SSH 1.x和2.x没有不同的配置文件。

在默认的设置选项中需要注意的有:

l PermitRootLogin yes

最好把这个选项设置成"PermitRootLogin without-password",这样"root"用户就不能从没有密匙的计算机上登录。把这个选项设置成"no"将禁止"root"用户登录,只能用"su"命令从普通用户转成"root"。

l X11Forwarding no

把这个选项设置成"yes"允许用户运行远程主机上的X程序。就算禁止这个选项也不能提高服务器的安全因为用户可以安装他们自己的转发器(forwarder),请参看"man sshd"。

l PasswordAuthentication yes

把这个选项设置为"no"只允许用户用基于密匙的方式登录。这当然会给那些经常需要从不同主机登录的用户带来麻烦,但是这能够在很大程度上提高系统的安全性。基于口令的登录方式有很大的弱点。

l # Subsystem /usr/local/sbin/sftpd

把最前面的#号去掉并且把路径名设置成"/usr/bin/sftpserv",用户就能使用"sftp"(安全的FTP)了(sftpserv在sftp 软件包中)。因为很多用户对FTP比较熟悉而且"scp"用起来也有一些麻烦,所以"sftp"还是很有用的。而且2.0.7版本以后的图形化的ftp工具"gftp"也支持"sftp"。

拷贝文件
用"scp"拷贝文件
SSH提供了一些命令和shell用来登录远程服务器。在默认情况下它不允许你拷贝文件,但是还是提供了一个"scp"命令。

假定你想把本地计算机当前目录下的一个名为"dumb"的文件拷贝到远程服务器www.foobar.com上你的家目录下。而且你在远程服务器上的帐号名为"bilbo"。可以用这个命令:

scp dumb bilbo@www.foobar.com:.

把文件拷贝回来用这个命令:

scp bilbo@www.foobar.com:dumb .

"scp"调用SSH进行登录,然后拷贝文件,最后调用SSH关闭这个连接。

如果在你的"~/.ssh/config"文件中已经为www.foobar.com做了这样的配置:

Host *fbc
HostName www.foobar.com
User bilbo
ForwardAgent yes

那么你就可以用"fbc"来代替"bilbo@www.foobar.com",命令就简化为"scp dumb fbc:."。

"scp"假定你在远程主机上的家目录为你的工作目录。如果你使用相对目录就要相对于家目录。

用"scp"命令的"-r"参数允许递归地拷贝目录。"scp"也可以在两个不同的远程主机之间拷贝文件。

有时候你可能会试图作这样的事:用SSH登录到www.foobar.com上之后,输入命令"scp [local machine]:dumb ."想用它把本地的"dumb"文件拷贝到你当前登录的远程服务器上。这时候你会看到下面的出错信息:

ssh: secure connection to [local machine] refused

之所以会出现这样的出错信息是因为你运行的是远程的"scp"命令,它试图登录到在你本地计算机上运行的SSH服务程序......所以最好在本地运行"scp"除非你的本地计算机也运行SSH服务程序。

用"sftp"拷贝文件
如果你习惯使用ftp的方式拷贝文件,可以试着用"sftp"。"sftp"建立用SSH加密的安全的FTP连接通道,允许使用标准的ftp命令。还有一个好处就是"sftp"允许你通过"exec"命令运行远程的程序。从2.0.7版以后,图形化的ftp客户软件"gftp"就支持"sftp"。

如果远程的服务器没有安装sftp服务器软件"sftpserv",可以把"sftpserv"的可执行文件拷贝到你的远程的家目录中(或者在远程计算机的 $PATH环境变量中设置的路径)。"sftp"会自动激活这个服务软件,你没有必要在远程服务器上有什么特殊的权限。

用"rsync"拷贝文件
"rsync" 是用来拷贝、更新和移动远程和本地文件的一个有用的工具,很容易就可以用"-e ssh"参数和SSH结合起来使用。"rsync"的一个优点就是,不会拷贝全部的文件,只会拷贝本地目录和远程目录中有区别的文件。而且它还使用很高效的压缩算法,这样拷贝的速度就很快。

用"加密通道"的ftp拷贝文件
如果你坚持要用传统的FTP客户软件。SSH可以为几乎所有的协议提供"安全通道"。FTP是一个有一点奇怪的协议(例如需要两个端口)而且不同的服务程序和服务程序之间、客户程序和客户程序之间还有一些差别。

实现"加密通道"的方法是使用"端口转发"。你可以把一个没有用到的本地端口(通常大于1000)设置成转发到一个远程服务器上,然后只要连接本地计算机上的这个端口就行了。有一点复杂是吗?

其实一个基本的想法就是,转发一个端口,让SSH在后台运行,用下面的命令:

ssh [user@remote host] -f -L 1234:[remote host]:21 tail -f /etc/motd

接着运行FTP客户,把它设置到指定的端口:

lftp -u [username] -p 1234 localhost

当然,用这种方法很麻烦而且很容易出错。所以最好使用前三种方法。

用SSH设置"加密通道"
"加密通道"的基础知识
SSH 的"加密通道"是通过"端口转发"来实现的。你可以在本地端口(没有用到的)和在远程服务器上运行的某个服务的端口之间建立"加密通道"。然后只要连接到本地端口。所有对本地端口的请求都被SSH加密并且转发到远程服务器的端口。当然只有远程服务器上运行SSH服务器软件的时候"加密通道"才能工作。可以用下面命令检查一些远程服务器是否运行SSH服务:

telnet [full name of remote host] 22

如果收到这样的出错信息:

telnet: Unable to connect to remote host: Connection refused

就说明远程服务器上没有运行SSH服务软件。

端口转发使用这样的命令语法:

ssh -f [username@remote host] -L [local port]:[full name of remote host]:[remote port] [some command]

你不仅可以转发多个端口而且可以在"~/.ssh/config"文件中用"LocalForward"设置经常使用的一些转发端口。

为POP加上"加密通道"
你可以用POP协议从服务器上取email。为POP加上"加密通道"可以防止POP的密码被网络监听器(sniffer)监听到。还有一个好处就是SSH的压缩方式可以让邮件传输得更快。

假定你在pop.foobar.com上有一个POP帐号,你的用户名是"bilbo"你的POP口令是"topsecret"。用来建立SSH"加密通道"的命令是:

ssh -f -C bilbo@pop.foobar.com -L 1234:pop.foobar.com:110 sleep 5

(如果要测试,可以把"sleep"的值加到500)。运行这个命令之后会提示你输入POP口令:

bilbo@pop.foobar.com's password:

输入口令之后就可以用"telnet"连接到本地的转发端口了。

telnet localhost 1234

你会收到远程mail服务器的"READY"消息。

当然,这个方法要求你手工输入所有的POP命令,这是很不方便的。可以用Fetchmail(参考how to configure Fetchmail)。Secure POP via SSH mini-HOWTO、man fetchmail和在"/usr/doc/fetchmail-[...]"目录下的Fetchmail的FAQ都提供了一些具体的例子。

请注意IMAP协议使用的是不同的端口:IMAP v2的端口号为143而IMAP v3的端口号为220。

为X加上"加密通道"
如果你打算在本地计算机上运行远程SSH服务器上的X程序,那么登录到远程的计算机上,创建一个名为"~/.ssh/environment"的文件并加上这一行:

XAUTHORITY=/home/[remote user name]/.Xauthority

(如果在远程主机上你的家目录下不存在".Xauthority"这个文件,那么当用SSH登录的时候就会自动创建)。

比如启动一个X程序(xterm)可以这个命令:

ssh -f -X -l [remote user name] [remote machine] xterm

这将在远程运行xterm这个程序。其它的X程序也是用相同的方法。

为linuxconf加上"加密通道"
Linuxconf是Linux的配置工具,它支持远程管理。Linuxconf的FAQ重说明了如何通过SSH使用linuxconf:

其命令为:

remadmin --exec [link_command] linuxconf --guiproto

如果你想在两台计算机之间用加密的方式传送信息,那么最好用ssh。命令是:

remadmin --exec ssh -l [account] linuxconf --guiproto

这是非常有效的而且运行用图形界面管理计算机。

这种方法需要在客户端安装linuxconf。其它的方法还有直接登录到服务器上用"X11Forwarding"或字符界面运行linuxconf。

为Webmin加上"加密通道"
Webmin是一个新的基于浏览器的配置工具。它运行在1000端口。你可以用SSH的"端口转发"对它进行加密:

ssh -f -l [remote user name] [remote host] -L 1234:[remote host]:10000 tail -f /etc/motd

2006/11/20

[Linux]RAID使用也不易安装RedHat9时遇到麻烦

  随着Intel ICH5R南桥芯片的推出,如今带RAID功能的主板是越来越多。尽管一提到RAID就让人感觉那是老鸟的玩意,可我们菜鸟也想试试,不玩深奥的,只玩可以提高速度的RAID 0就好了。下面就是笔者玩RAID的经历,有悲有喜,希望能使各位菜鸟少走弯路。
  
  首先明确一下组成RAID 0的容量问题。组成RAID 0时的容量并不是我们想象中的两块硬盘的容量总和。而是两块硬盘以最小容量的硬盘为基准乘以2就是RAID的容量。比如笔者的两块西捷SATA 80GB和120GB硬盘组成RAID后为150GB(其中因为换算单位不同80GB容量只有75GB有效)。这样将浪费30GB左右磁盘空间。所以建议用同容量硬盘组建RAID。
  
  笔者所使用的西霸RAID卡用的芯片是SIL3112A,不少主板实现RAID功能也是板载的这块芯片,所以二者使用方法差不多,硬件安装也很简单。只是注意两块硬盘发热量大,要有散热空间,并且注意电源功率是否充足。开机后按"Ctrl+S"进行设置,选自动配置,最后按"Ctrl+E"保存。
  
  安装系统就要复杂一些了。安装Win98还好,只要把CMOS设成SCSI启动即可。但安装完成后要在系统中再安装RAID卡的驱动程序。而安装WinXP则麻烦一点。需要制作驱动程序软盘,安装出现提示时按F6并选择S,系统可以继续安装。这里需要注意的是:如果你使用的是联想或DELL等的OEM版的WinXP,并且利用双系统从Win98下安装的话,那么就会在拷贝文件时出现"无法复制RAID驱动文件"的问题,硬盘将不被认出,然后蓝屏。此时可以用软盘启动,然后从DOS下安装WinXP(注意加载SMARTDRV.EXE磁盘加速文件)。
  
  最让笔者头疼的是安装RedHat9时所遭遇的问题。笔者用分区大师腾出20GB的空间安装RedHat9。从光盘启动后开始安装,在设置分区时弹出一个提示,大意是安装程序无法读取分区信息,问是否继续?因为已认出硬盘,笔者当时也没太在意,就点了"是"。可是安装程序立即格式化硬盘,感觉不对时按冷启动重启,悔之晚矣,所有的硬盘文件毁于一瞬间!事后检查时发现原来RedHat9比WinXP更"聪明",它认出了两块硬盘,而不是组成的RAID盘,所以它自做主张就格式化了硬盘。由此可知RedHat9可以直接支持SATA硬盘而不需加载任何驱动。为了验证笔者的想法,笔者在两块独立硬盘系统中安装RedHat9,果然重启后可以使用,但是不用RAID模式安装时间要长一倍。笔者在Silicon Image网站找到了SIL3112A的Linux驱动,按照说明的步骤就是无法完成安装。现将安装步骤写出,希望高手不吝赐教。
  
  1.放入RedHat9光盘启动,在提示符下输入"linux dd hde=noprobe hdg=noprobe"后按回车。
  
  2.安装程序开始读驱动软盘,按步骤安装选择使用GRUB启动,制作启动软盘。
  
  3.重启后从启动软盘引导,在提示符下输入"linux hde=noprobe hdg=noprobe"按回车,继续安装完成。可是笔者重启后就死机无法引导,不知何处出错,是硬件还是软件原因?
  
  另外RAID在Win98、WinXP、Linux中,感觉是组建RAID后Win98性能提升最少,而在Linux中性能提升最明显。还有一个关于硬盘灯的问题,把插在主板上的HDD LED插到RAID卡后,硬盘灯并不闪,只有在操作系统中安装了驱动,硬盘灯才会亮。
  
  首先是RAID的速度提升问题。很多读者认为组建RAID后性能会提升一倍,但这里存在误解。组建RAID后只是磁盘加速项的性能理论上会提升一倍。但由于实际的硬件和软件的制约,只能有60%左右的性能提升,这只是说硬盘的传输速率提升60%,而不是整机的性能提升60%。从RAID工作的原理可知,RAID会将数据通过CPU的计算分成平均的两份,同时传输给两块硬盘,这样理论上存储同样数据速度加快一半,性能提升100%。但由于CPU额外负担计算数据分配造成实际性能损失可高达40%。所以性能提升只有60%左右。同时可知如果两块硬盘不是同容量同缓存同品牌的硬盘,则CPU的占用率将会更高,而性能损失就更大。这就是为什么建议使用同容量同缓存同品牌硬盘的原因。
  
  其次有读者问RAID 0+1的问题,现答复如下。由于RAID 0+1需要四块硬盘,对于PATA接口还可以,对于只有两个SATA接口的主板、RAID卡来说就不适合了。因为SATA点对点的特性,只能接两块硬盘,所以无法组成RAID 0+1。而RAID 0+1由于镜像硬盘的需要,容量只有硬盘总容量的一半。即如果四块40GB的硬盘只有80GB的实际空间。工作时CPU把数据一分为二同时传给两块硬盘再同时将数据传给另外两块镜像硬盘,这样由于CPU处理负担加重使性能提升更达不到60%。
  
  尽管组建RAID 0+1的读者是为了数据的安全,但笔者认为,RAID 0+1针对服务器来说是非常适合的,但对于个人电脑就不太适用了。因为服务器的配置稳定,平时针对硬件的操作也少,只在终端机上使用。可是对于个人电脑,DIYer们很喜欢改动配置,而如果在RAID的BIOS中删除了RAID的设置,只要重新启动,即使不格式化硬盘,也可能造成数据的丢失,无法用恢复软件来恢复,因为每块硬盘存的是部分数据。还有四块硬盘同时工作的耗电量和发热量都不得不让人重视,再加上CPU、光驱等的耗电,对电源完全是一种考验。一旦电源出现问题,麻烦就大了,皮之不存,毛将焉附,何谈安全!对于个人用户,笔者认为对数据进行定期的备份,如刻录成光盘更安全一些,并且还省费用。


2006/11/6

psp2.71运行iso

psp2.71运行iso啦,真高兴!


2.71PSP玩iso游戏程序再度更新,放出新版完整包下载,99%成功启动!

为了让2.71系统PSP用户更方便的玩iso游戏,电玩巴士提供了最新版的henb2和devlauncher271_2的完整版供大家下载。我们都知道上一版本的程序启动几率在20%左右,本次提供的版本则在99%。这个为2.71制作的devhook最新修改版真正针对2.71的系统作了优化,充分利用了2.71自身的系统,所以如果我们是用来玩游戏的话,可以不用再在记忆棒上存放几十兆的系统文件,因此整个引导工具的体积可以缩减到很小,可以大大节约记忆棒的空间。

最新版傻瓜包下载

使用教程
-下载我们提供的完整版,解压后会有一个MS_ROOT的文件夹。连接USB,把该文件夹内的所有文件都拷贝至PSP记忆棒的根目录下;

-把下载到的PSP游戏镜像拷贝至记忆棒根目录下的"ISO"文件夹内;

-断开USB连接,操作PSP在图片浏览器里选中并运行文件夹"HEN";

-当你第一次运行此程序,你会见到一个很快的蓝色画面,然后等一会儿便会转成以下其中一种颜色:
红色:文件尚未写入到flash,重新再试就可以了。
绿色:这些程序己经完成写入到flash。然后,PSP便会重新开启到主目录。
如果在这个过程中出现画面不动或者长时间的蓝屏请不要担心,强制关机重启并重复本操作

-浏览PSP的游戏选项,可以看到devhook 2.71的启动图标,选择进入(参考下图);


选择进入devhook0.4x

-进入后会出现DEVHOOK的主菜单界面,要玩iso游戏的话,我们只需要设置UMD SELECT和FIRMWARE两项:


主菜单界面


进入UMD SELECT后选中要玩游戏的iso(我这里装的《教父》,iso文件名为PSY-GOD.ISO,选中它就是了)


再进入FIRMWARE选项,选择2.71(flash)


然后会回到主菜单界面,选择START完成DEVHOOK设置。


等待自动回到PSP桌面后,我们会看到GAME下有了前面选择游戏的预览动画,选中进入游戏。

如果看不到游戏的预览动画的话,请确认是否放入了UMD盘,在目前,我们仍然需要一张UMD盘来引导游戏。


成功进入游戏!!

如果你在记忆棒里放入了多个游戏iso,可以通过R+home或者L+home键来切换上一个ISO游戏和下一个ISO游戏。