server-room

課程資料

計算機系統管理

開課:由多名助教上課

修課年度:99資工系

課程大概就是 FreeBSD 各種運用:安裝 FreeBSD編譯核心使用者管理怎麼架 FTP怎麼在 Windows 和 FreeBSD 間分享資料夾寫腳本過濾文字資料安裝網頁伺服器、架 blog、NFS 檔案系統分享,還有一些 OS 的基礎知識:Unix 檔案系統process 的概念、開機程序、硬體。

所有的講解檔都在課程網站上,而幾乎所有內容在 〈FreeBSD Handbook〉 上都有更詳盡的介紹。

評分方式

實際是由幾個助教上課,使用投影片上課,整堂課的重心其實是在作業上。正如課程網頁上的佔分比例暗示,是一門重實作的課:

  • Midterm: 15 ~ 20%
  • Final: 15 ~ 20%
  • Excercises + HWKs: 60 ~ 70%
  • Presentation and research strength: 0 ~ 10%

基本上是不會點名。

考試作業

考試的部分,有期中考和期末考,都是 open book,大家都把上課講義全印了出來,個人也印了好厚一疊,期末全變成計算紙。據說後來有改成可以攜帶電子檔案,不過筆者沒有特別確認。

期中考題大多是簡答題,期末的時候,考題竟都是選擇和填充,還有個佔分 100 的心得、意見呢!當時的期中考有很多都是從考古題出題,但困難度很高,期末考則幾乎是新的題目但十分簡易。無論紙筆考成績如何,似乎如果作業高分,期末成績也會很高分。

這學期的作業有 5 個,除了基本分外,幾乎每個作業都有額外加分,也就是說只要肯做,就有分數。

第一個作業是要安裝 FreeBSD 作業系統,並且編譯 kernel,然後再透過 ports 從原始碼安裝圖形介面的桌面環境。

這個作業實際上是最容易遇到問題,也花費最多時間的。可以想像為什麼要把這樣的作業放在期初,因為後期大概不會有那麼多的時間可以花在同一科上。可是或許也因為這樣,期中時嚇跑不少人吧…

第一個作業吃掉了我的許多週末,因為某個要求要使用實體機比較容易達成,所以我是直接灌在電腦上。雖然我在暑假時,就有透過 2009 年的課程網頁先預習過安裝 FreeBSD (那時我是安裝在虛擬機上),真正做時,還是遇到了意想不到的問題…(見最後的心得)

第一個作業交出去之後,我馬上用虛擬機(VirtualBox)再重灌了一個 FreeBSD,事後也證明這個作法是正確的。

第二個作業是架 FTP,還有用 samba 設定分享給 windows 的資料夾,還有神奇的 ZFS ,和自動監控資料夾幫你載 BT。這份作業要求大多要在網路上搜尋一陣,才能找到寫法。

第三個作業是 shell scripting:寫一個搜尋 Wikipedia 並擷取文章的腳本,還有分析 IP 登入資訊的腳本等等。

看完了講義之後,最主要的就是要熟悉 awk,這份網頁給我幫助很大: 〈Awk〉,接下來考驗的就是寫程式的能力了。

第四個作業主要就是架 blog 還有 HTTPS 的建置,大部分在 FreeBSD Handbook 上都有詳盡解釋,只要照做即可,小部份當然還是要 Google。

第五個作業是 NFS+NIS,就像資工系計中的工作站一樣,要在不同機器登入都共享同一個家目錄 (NFS),然後可以用一樣的帳號登入多台機器 (NIS)。

這份作業需要三台機器,是由1~3個人共同完成。這裡幾乎全部的步驟只要照 Handbook 和上課簡報即可完成,只是因為我和組員住在不同宿舍,要跨網段比較困難,最後實在趕不及,所以決定全部都放在一個網段裡才趕出來。

結語

這門課真的要花不少心思,由於會接觸到很多新指令,不太可能全部都記起來,一定要一直查他的 manual pages (man)

一開始編譯核心時,偶爾會遇到很奇怪的問題,非得使用搜尋引擎,才能在茫茫網海中撈出解法。作業有的要求是上課講義不會寫的,也是要使用 Google 才有答案,這大概就是為何配分中有個 research strength 吧。

以一位友人在版上問的問題為例,他的問題是,使用了 /etc/fstab 設定在開機時自動掛載 NTFS 格式的 Windows 硬碟,卻因為不明原因無法開機了。這問題一時之間也看不出解法,於是我就使用了 Google 來搜尋答案:(注意在中文版界面和英文版界面的搜尋結果可能會不一樣,此例中我想搜尋的是英文資料,故使用的是英文版本)

一開始我下的關鍵字是「freebsd fstab ntfs cannot boot」。雖然確實找到一些看似有用的訊息,但實際看過一遍,似乎都不是解答,於是我又試了「freebsd mount ntfs cannot boot」,再試了「freebsd ntfs fstab」

最後終於找到關鍵文章,在〈mount ntfs (windows) file system in /etc/fstab fails at boot〉文章中提到的,很可能就是問題所在。

雖然網路上已經有不少笑話文章來說明搜尋的重要性,像是〈為什麼一定要我幫你 Google?〉,不過說正經的,透過搜尋引擎,我們可以把整個網路資源納為己用,個人以為,搜尋能力,確實是很重要很核心的能力。若有心學習,這裡有篇使用 Google 的教學,或許會有幫助:Google Guide

我其實是哪種遇到問題會很堅持要找出解答的人,一開始作業1的時候,我遇到了非常奇怪的問題。為了解決這個問題,我用不同方法重灌系統兩三次、對記憶體做了詳細檢查,還另外用 Ubuntu 測試編譯核心,想盡各種方法,查遍網路資料,最後重割硬碟才終於解決。

想當年我還小的時候啊,曾經因為不能執行某個很有趣的小遊戲(小朋友其打交1),想說會不會是下載的來源有問題,就一直在網路上搜尋各種下載點,整整找了一整天,最後才終於承認是自己電腦的問題,或許那些幼稚的曾經也多少對我的搜尋能力有點小小幫助吧 orz。

雖然這門課的作業確實有點重,但也因為這些作業,使得 SA 比任何一門課都更能測試與磨練解決問題以及學習的能力。有心想修的同學可以透過課程網頁開始自行預習和做作業,相信一定會有不少收獲。

延伸閱讀

這本書是這堂課教科書的最新版,學期初就向浩然推薦這本書,最後終於進了。個人是沒有看完,覺得如果沒有特別接觸過 Unix/Linux 的話,把這本當故事書看過一遍或許可以稍微對 SA 這堂課有較大概的認知。

不過這本書在作業上或是考試都不是絕對必要的,個人經驗,它在期中考也不過是幫到我一題罷了。 * 《 Beginning Linux Programming》

這本書有一章提到 Shell Programming。我看了好多年,結果一直到修了 SA 才真正寫了 shell script,由此可知學分的驅策力還是有幫助的。 * 《 Learning the vi and Vim Editors》

雖然他和 SA 沒有直接相關,不過在操作 FreeBSD 的時候常常會使用 command line

這時一個好的文字編輯器常可以替你節省很多時間,個人喜歡使用 Vim,所以推薦這本書。 * 《 The Complete FreeBSD》

這本書滿舊的,但是它是我唯一找到內附大量 man pages 的書。期中期末 Open book 首選用書。(只可惜他舊到內容可能不符現狀的地步) * FreeBSD Handbook:非常非常重要,從第一份作業,甚至到最後的 Term Project,這裡幾乎都有細詳解說。 * Awk - A Tutorial and Introduction * HOWTO: Setup a Pure-FTPd server with virtual users * x11vnc: a VNC server for real X displays