最近更新日期:2007/07/03
1. 電腦概論
1.1 電腦的功能 1.2 個人電腦所需硬體 1.3 程式運作流程 1.4 程式怎麼來? 1.5 硬體與驅動程式 2. 重要工具:硬碟 2.1 硬碟的連接介面:IDE, SATA 2.2 硬碟的組成 2.3 磁碟分割表 2.4 主要開機記錄區 (MBR) 3. Linux 作業系統概念 3.1 Linux 是啥東西? 3.2 Linux 的授權 (自由軟體) 3.3 Linux 完整安裝套件 (distribution) 3.4 裝置代號 3.5 X Window System 4. 檔案系統 4.1 啥是檔案系統? 4.2 啥是 Linux 目錄樹資料架構? 4.3 檔案系統與目錄樹的關係(掛載) 5. 參考資料 6. 針對本文的建議:http://phorum.vbird.org/viewtopic.php?p=125753 電腦概論
在目前的社會中,沒有電腦真的是很奇怪的一件事情!因為我們必須要使用電腦幫我們進行很多工作。
包括在辦公室中使用電腦來進行各項作業、在資訊領域方面利用電腦來進行伺服器的架設、
在休閒時利用電腦來上網瀏覽或聊天、在無聊時利用電腦來進行電腦遊戲軟體的運作等等。
但是妳知道目前電腦規格有哪些?為什麼我們使用的電腦通常被稱為『個人電腦』而不是啥特別的名詞? 為什麼電腦一定需要軟體才能夠使用?為什麼我的遊戲無法在早期的 Windows 98 上面運作? 這個我們都得要瞭解一下比較好。 電腦的功能
什麼是電腦呢?基本上,一部機器只要能夠『接受指令的輸入,經過邏輯判斷或者是算數運算後,
能夠將產生的資訊輸出到螢幕或印表機等介面上的機器』我們就可以稱他為電腦了。
所以個人電腦、小型計算器、大型伺服器等等,都可以稱為電腦的。
那麼換句話說,我們透過鍵盤或滑鼠輸入指令,讓電腦主機進行運算後,將我們所需要的資料輸出到螢幕上!
這就是電腦的運作過程。
圖一、電腦組成示意圖 為了要將上圖中的『邏輯判斷、算數運算』所在處的主機設計出來,這部主機還得要負責連結輸入設備以及輸出設備, 並且還要能夠執行算數處理以及邏輯方面的判斷,因此主機就得要有幾個組成的部分了,這包括: 中央處理器、主記憶體、系統匯流排(可以想成主機板上面的晶片組),以及各種輸入輸出元件 (I/O 裝置)。不過,關鍵元素在於中央處理器,也就是俗稱的 CPU 啦! 為什麼說 CPU 最重要呢?就跟我們生活的時候任何事情都要透過腦袋來思考後才能產生行動一樣, 事實上 CPU 裡面也是含有多個指令集,這些指令集可以想成腦袋的思考方式。 而為了配合這個 CPU ,所有在主機上所設計出來的硬體當然也要符合相關的規範才可以! 就如古話說的:『戲法人人會變,巧妙各有不同』一樣,既然電腦主要的功能就是在接受訊號的輸入, 經過一些程序後將他轉變為適當的資訊並且輸出而已,那麼當不同的硬體開發商在進行研究時,當然可能產生不同的硬體規格啦! 但由於市場機制以及相關產品開發商的支援,現今電腦硬體的架構依 CPU 的類別主要區分為兩大類,分別如下所述:
雖然 RISC 的架構較為先進,不過由於個人電腦的普及性,以及拜 Intel 與 AMD 這兩家主要 x86 CPU 製造公司開發出更精良且高速的 x86 CPU 之賜,目前您可以使用相對便宜很多的金額就買到效能很棒的 x86 個人電腦了。不但個人電腦是 x86 架構,現在就連很多伺服器以及企業關鍵應用的主機也都使用 x86 的架構。 因此底下我們將以 x86 架構來說明電腦硬體喔!(註:Intel 及 AMD 是兩家製造個人電腦 CPU 的公司名稱)
個人電腦所需硬體
如同上一小節所說的,電腦主機主要包括了 CPU、記憶體、系統匯流排以及各項 I/O 裝置。
那麼這些硬體主要的功能是什麼呢?我們就以人體來說明好了。
圖二、各元件的組成情況 (上述圖示主要取自 tom's 硬體指南,各元件圖片分屬個別公司所有) 就像雖然每個人都有腦袋、神經系統、記憶力與各項外在書籍,但是每個人的腦袋、神經系統傳導的能力以及記憶力都不同一樣, 由於製造商發展的能力不一樣,所造出來的各項電腦元件能力也不相同。 所以您在選購 CPU、主機板、記憶體以及各項 I/O 裝置時,務必詢問專業人士, 否則有可能買到無法使用在您主機上面的硬體喔! 舉例來說,鳥哥之前的工作主機使用 AMD 公司出產的 Atlhon XP 1800+ CPU,搭配華碩公司的主機板。 為了比較快速的儲存系統,所以鳥哥跑去買了一顆 SATA 介面的硬碟, 但是,買回來後才發現俺的主機板上面只有較早期的 IDE 硬碟介面,啊! 還要去買一塊 SATA 擴充卡來安裝∼唉∼失敗!
程式運作流程
鳥哥常常在開玩笑的問朋友說:『沒有插電的電腦是一堆廢鐵,
那麼插了電的電腦是什麼?』您猜是什麼呢?答案是...『一堆會電人的廢鐵!!』^_^!為什麼呢?
因為上頭沒有程式嘛!所以說,電腦硬體上面必須要配合程式軟體才能夠順利的完成各項動作。
那麼電腦是如何執行各項軟體功能的呢?
假設有個人體身份是學生,他最近的工作是要去考試,為了應付考試他應該要如何動作?
圖三、程式的運作流程 (上述圖示主要取自 tom's 硬體指南,各元件圖片分屬個別公司所有) 圖三給我們幾個很重要的概念,那就是:
程式怎麼來?
現在我們知道了,CPU 內其實含有很多的指令集,而 CPU 需要由主記憶體中讀取所需要的程式碼與資料才能處理工作,
當然啦,這些程式碼必須要能夠使用 CPU 內的指令集來執行算數、邏輯等動作才行。那麼程式碼怎麼來?
其實程式的撰寫最直接的就是參考 CPU 的指令集,然後利用 CPU 認識的機器碼直接撰寫程式,
這樣程式就可以直接運作了。
但是這樣的動作很麻煩,因為機器碼是機器認識的語言,人類不容易瞭解!加上參考 CPU 指令集也是個苦差事, 因此這種撰寫程式碼的行為除非是用在一些很小的嵌入式設備中,一般個人電腦很少使用這種模式來開發應用程式的。 取而代之的是一個作業程式來處理硬體問題。 直接針對硬體來撰寫應用程式是沒有效率的,因為每支程式都必須從頭撰寫,機器碼也不容易瞭解。 所以就有些公司或社群發展出所謂的『作業系統』。作業系統是利用一組特殊的程式管理整個硬體資源, 同時作業系統還會提供一整組的標準開發介面,讓程式設計師在撰寫應用程式時,不需要考慮硬體, 僅需參考作業系統所提供的開發介面來撰寫程式即可。此時程式可使用作業系統推出的高階程式語言, 包括 C, .NET, Fortran, Java 等等。 我們可以將硬體、作業系統、開發介面與工具、應用程式、使用者作一個簡單的相依圖示如下: 圖四、作業系統的示意圖 上面的圖示提供我們幾個簡單的小概念:
我們拿常見的微軟公司的產品來說明。妳知道 Windows XP, Office 2007 之間的關係了嗎?
硬體與驅動程式
瞭解了硬體與作業系統的相關概念後,現在我們知道作業系統主要在管理整個電腦主機的硬體資源,
為了要管理這些硬體支援,我們的作業系統當然就得要『驅動整部主機上面的所有硬體』了!
一開始時,作業系統的設計者會將當時主流的電腦硬體作個整理,取得硬體開發商所提供的驅動程式,
並主動加入到作業系統當中,以讓這個系統可以開機並順利的認識硬體。
不過硬體可是持續在進步當中的!包括主機板、顯示卡、硬碟等等。那麼比較晚推出的較新的硬體, 例如顯示卡,我們的作業系統當然就不認識囉!那作業系統該如何驅動這塊新的顯示卡? 為了克服這個問題,作業系統通常會提供一個開發介面給硬體開發商, 讓他們可以根據這個介面設計可以驅動他們硬體的『驅動程式』,如此一來,只要使用者安裝驅動程式後, 自然就可以在他們的作業系統上面驅動這塊顯示卡了。 圖五、驅動程式與作業系統 (上述圖示主要取自 tom's 硬體指南,各元件圖片分屬個別公司所有) 由上圖五我們可以得到幾個小重點:
重要工具:硬碟
前一小節我們談到硬體與程式運作的關係,也談到程式主要是放置到一些儲存媒體上的,
現在的主機設備當中,儲存媒體最重要的一項就是『硬碟』這個玩意兒啦!
當妳的主機想要有作業系統時,首先就得要將作業系統『安裝』到妳的硬碟當中!
所以您說,硬碟是否很重要啊!
硬碟的連接介面:IDE, SATA
硬碟的介面規格近年來有重大突破,那就是由傳統的 IDE 介面轉換到新的 SATA 介面。
(我們這裡主要針對個人電腦,所以較高階的 SCSI 介面不在討論之列。)
那麼什麼是 IDE 什麼是 SATA 介面呢?簡單的說,就是硬碟與主機板連結在一起的那個插槽不一樣啦!
我們以實際的硬碟來作說明,請看下圖的兩款硬碟連接腳位:
圖六、兩款硬碟介面(左邊為 IDE 介面,右邊為 SATA 介面) 早期 IDE 硬碟的排線 (連接硬碟與主機板) 較寬,容易影響到機殼內的熱對流,所以散熱不易。 如下圖所示,這一條排線上面有三個插槽,一邊接主機板,另外兩個則接在硬碟 (或稱為 IDE 裝置) 上。 圖七、IDE 介面的排線 (圖示取自 Seagate 網站) 一般來說,早期主機板上面的 IDE 插槽有兩個,而每條排線上又可以有兩個 IDE 裝置,所以最多可以接到四個 IDE 裝置。 如果妳需要一個光碟機,那麼最多妳的主機就可以接三顆硬碟的意思。不過妳應該要想到的是:『既然排線可以接兩個硬碟, 那麼哪一顆硬碟會先被主機捉到?』這個時候得要進行跳針 (Jump) 的設定才行喔!如圖六所示, IDE 排線右邊的那個插槽就是在設定跳針的地方!妳可以設定成主要(master)或次要(slave)的形式。 要注意,一條排線上面不可以同時為 master 或 slave ,否則主機會捉不到兩顆硬碟!在同一條排線上, 一定要一顆為 master 一顆為 slave 才行 由於 IDE 介面的發展已經到了極限,而且排線又容易造成通風不良,所以後來出現了一種新的介面,那就是 SATA 介面啦! 從圖六妳已經可以發現到 SATA 的排線接口非常的小,而且 SATA 的速度要比 IDE 快的多! 所以 SATA 已經成為目前硬碟機介面的主流囉! SATA 的排線示意圖如下圖所示: 圖八、SATA 介面的排線 (圖示取自 Seagate 網站) SATA 的排線直接連結硬碟與主機板,一條排線僅接一顆硬碟,所以妳不需要調整跳針。 不過一張主機板上面 SATA 插槽的數量並不是固定的,且每個插槽都有編號,在連接 SATA 硬碟與主機板的時候, 還是需要留意一下。 硬碟的組成
在開始談實際使用硬碟之前,我們還得要知道一下硬碟的組成比較好。實際上,硬碟就是由硬碟盤與讀取頭所組成的。
硬碟盤是圓形的,資料就是透過磁頭寫入到硬碟盤上面。資料能夠被寫入到硬碟盤的最小單位是磁區 (sector),
目前 x86 硬碟的磁區一個為 512 bytes 這麼大。而磁區聚合成為一個同心圓時,那就是磁柱 (cylinder)。
如果以圖示來看,他有點像這樣:
圖九、硬碟盤組成示意圖 我這裡假設硬碟裡面僅有一個硬碟盤的狀況。所以硬碟最重要的組成就是:磁區、磁柱、磁頭 (sector, cylinder, head),其中磁區一個有 512bytes 大,而磁柱為分割時的最小單位。 那麼是否每個磁區都一樣重要呢?其實整顆硬碟的第一個磁區特別的重要,因為他記錄了整顆硬碟的重要資訊! 第一個磁區主要記錄了兩個重要的資訊,分別是:
那麼分割表又是啥?其實妳剛剛拿到的整顆硬碟就像一根原木,妳必須要在這根原木上面切割出妳想要的區段, 這個區段才能夠再製作成為你想要的家具!如果沒有進行切割,那麼原木就不能被有效的使用。 同樣的道理,妳必須要針對妳的硬碟進行分割,這樣硬碟才可以被妳使用的! 磁碟分割表
但是硬碟總不能真的拿鋸子來切切割割吧?那硬碟還真的是會壞掉去!那怎辦?
就利用參考對照磁柱號碼的方式來處理啦!在分割表所在的 64bytes 容量中,總共分為四組記錄區,
每組記錄區記錄了該區段的啟始與結束的磁柱號碼。若將硬碟以長條形來看,然後將磁柱以直條圖來看,
那麼那 64 bytes 的記錄區段有點像底下的圖示:
圖十、硬碟分割表的作用示意圖 由上圖來看,我們可以知道幾個小重點:
另外,由於分割區將資料集中在某個磁柱的區段,例如圖十當中第一個分割槽位於磁柱號碼 1~100 號, 如此一來當有資料要讀取自該分割槽時,磁碟只會搜尋前面 1~100 的磁柱範圍, 由於資料集中了,將有助於資料讀取的速度與效能!所以說,分割是很重要的! 既然分割表只有記錄四組資料的空間,那麼是否代表我一顆硬碟最多只能分割出四個分割槽? 當然不是啦!有經驗的朋友都知道,妳可以將一顆硬碟分割成十個以上的分割槽的! 那又是如何達到的呢?在 Windows/Linux 系統中,我們是透過一個稱為延伸分割 (Extended partition) 的方式來處理的。 既然第一個磁區所在的分割表只能記錄四筆資料,那我可否利用額外的磁區來記錄更多的分割資訊? 那就是延伸分割的想法。實際上圖示有點像底下這樣: 圖十一、硬碟分割表的作用示意圖 在圖十一當中,我們知道硬碟的四個分割記錄區僅使用到兩個,P1 為主要分割,而 P2 則為延伸分割。 請注意,延伸分割不能夠被用來作為資料存取的! 然後我們可以透過延伸分割所指向的那個區塊繼續作分割的記錄,如圖十一右下方那個區塊, 繼續分割出五個分割槽,這五個由延伸分割繼續切出來的分割槽,就被稱為邏輯分割區 (logical partition)。同時注意一下,由於邏輯分割區是由延伸分割繼續分割出來的, 所以他可以使用的磁柱範圍就是延伸分割所設定的範圍喔!也就是圖中的 101~400 啦! 主要分割、延伸分割與邏輯分割的特性我們作個簡單的定義囉:
圖十二、磁碟空間整合示意圖 在圖十二當中,上圖的 D, E 因為同屬於延伸分割內的邏輯分割槽,因此妳只要: (1)將這兩個分割槽刪除,然後 (2)再重新建立一個新的分割槽,就能在不影響其他分割槽的情況下, 將兩個分割槽的空間組合成為一個。但如果是圖十二的下圖,由於 D, E 槽分屬主分割與邏輯分割, 所以兩者不能夠整合在一起,除非妳將延伸分割破壞後再重新分割。不過,這樣會影響到所有的邏輯分割! 要注意,如果延伸分割被破壞,所有邏輯分割將會被刪除! 在硬碟分割完畢後,這顆硬碟就可以準備被格式化使用了!不管你想要玩的是 Windows 還是 Linux , 硬碟的分割概念是相當重要的!別忽略這部份的知識呢! 主要開機記錄區(MBR)
不知道你會不會覺得很奇怪,為啥電腦可以開機?為啥電腦知道我的開機軟體放在 C 槽?
這是因為有硬碟的 MBR 的關係!每次電腦打開電源後,電腦根據 BIOS 的設定決定哪一個裝置為主要的開機裝置。
假如你以硬碟作為開機裝置時,那麼電腦就會主動的去讀取該顆硬碟的 MBR ,
並根據 MBR 裡面的設定知道開機程式在哪裡,所以說, MBR 是很重要的呢!
如前面說的,MBR 是硬碟第一個磁區內佔有 446 bytes 容量的區塊,這個區塊可以安裝開機管理程式, 在一些作業系統上面我們稱這種程式為開機載入器 (boot loader),底下我們直接稱呼為 loader 好了。 loader 主要的任務有三個,分別是:
圖十三、開機載入器示意圖 圖十三可以這樣看:
那現在請您想一想,為什麼人家常常說:『如果要安裝多重開機,最好先安裝 Windows 再安裝 Linux 』呢? 這是因為 Linux 在安裝的時候,妳可以選擇將開機管理程式安裝在 MBR 或超級區塊, 而且 Linux 的 loader 可以手動設定選單 (就是圖十三的 M1, M2...);至於 Windows 在安裝的時候, 則會自己覆蓋掉 MBR 以及超級區塊,而且他沒有讓我們自己選擇選單的機會,因此, 如果先安裝 Linux 再安裝 Windows 的話,那妳就得要自行以類似 spfdisk 之類的軟體重新處理 MBR , 否則就進不了 Linux 系統了 (雖然可以透過其他方法來處理 MBR )。 Windows 的 loader 不認識 Linux 的系統槽,而 Linux 的 loader 對於一般使用者來說, 似乎不是那麼具有親和力,那是否有其他的 loader 可以安裝在 MBR 裡面管理多重開機啊? 沒錯!是有的!那就是台灣之光馮緒平先生撰寫的 SPecialFDisk (簡稱 spfdisk) 這套軟體! 這套軟體詳細資訊請參考底下的連結,這軟體不但可以進行磁碟分割的動作以及安裝 loader , 更厲害的是,他是全中文介面!高興了吧! ^_^
Linux 作業系統概念
啥是 Linux ?這東西有啥好玩的?這個咚咚的製作概念如何?這個咚咚有沒有版權?
這東西的應用度廣嗎?這都是我們要來留意的啊!不然為何妳想要玩 Linux 呢? ^_^
Linux 是啥東西?
既然要玩 Linux 就得先知道 Linux 是啥才對。其實 Linux 就是一個『作業系統』!
我們前面談到作業系統主要的功能就是驅動與管理所有的硬體資源,並提供相關的開發介面給程式設計師參考與開發應用程式。
所以 Linux 是一組程式,這一組程式可以管理與驅動電腦,同時還可以提供很多好用的開發介面就是了。
如果要更詳細的定義,那我們可以說,整個作業系統最重要的核心 (kernel) 就是 Linux , 這個 Linux 的核心原始碼可以在 http://www.kernel.org 這個網站找到,而且當妳將他安裝在妳的電腦上時,整個程式碼甚至可以小到數百 Kbytes , 這麼小的程式就能夠驅動與管理所有的硬體,所以很多家電、手機等嵌入式設備很喜歡使用 Linux 哩! 最早 Linux 是在 1991 年由芬蘭人托瓦茲 (Linus Torvalds) 所開發出來的,他本著『人人為我、我為人人』的態度將 Linux 釋出到網際網路社會中,由於他所撰寫的程式碼相當的優秀,所以很多駭客級工程師都很喜歡使用。 而且由於他將程式碼直接釋出到網際網路中,因此很多人都可以修改他的程式碼, 另外有更多人則是貢獻他們自己的程式碼給托瓦茲,以進一步加強 Linux 本身的能力! 妳或許會問:『為什麼大家可以修改托瓦茲的程式碼?他沒有著作權的保護嗎?』 當然不是啦!Linux 是有授權的,妳必須要同意他的授權才能夠使用喔!那 Linux 的授權是啥呢? Linux 的授權 (自由軟體)
很多人都以為 Linux 是『免費』的,其實不然!應該說 Linux 是『自由的』才對!免費與自由在英文都是 Free ,
所以很容易造成大家的誤解。Linux 是有版權的,他的版權使用的是
GNU 計畫的一般通用授權 (General Public License, GPL)。
GNU 是由史托曼 (Richard Stallman) 在 1984 年所發起的一項計畫,目的就是在創作一個完全自由的作業系統。
GNU (http://www.gnu.org) 本身有相當多的軟體提供,
包括 Linux 開發的環境、編譯器等都是使用 GNU 的軟體呢!這也是後來托瓦茲將 Linux 使用 GPL 授權的原因之一。
那麼什麼是 GPL 授權呢?詳細的條文中文版可以參考這裡: 說穿了, GPL 的目的在確保程式著作者的版權權利以及使用者的相關使用規定。當一個軟體掛上了 GPL 的授權後, 針對使用者來說,他具有底下的權利:
由於 GPL 授權的軟體在使用上的自由度 (Free) 相當高,所以我們也稱這種授權的軟體為自由軟體 (Free software), 他並不是免費軟體 (freeware) 喔!不要搞混了∼ ^_^ Linux 完整安裝套件 (distribution)
Linux 既然這麼好用,當然大家都想要搶著用,尤其是他又是自由的!不過, Linux 早期真的很難入門∼
因為 Linux 原本只有核心程式,也就是 http://www.kernel.org
提供的原始碼而已,想要使用他還得要自己動手編譯,這對於一般使用者來說,實在是莫大的壓力!
很多人為了要推廣這麼好用的東西,於是就將 Linux 核心先進行編譯,並且加入很多軟體 (不一定是自由軟體),
最重要的是將這一整組東西處理成為一份可完整安裝的光碟 (或 DVD)釋出,這就稱為完整安裝套件 (distribution) 了!
所以說, Linux distribution 指的就是:
圖十四、作業系統與 distribution 之間的相關性 如上所示,Linux 核心提供的是中間兩層,這也是 http://www.kernel.org 提供的咚咚。 同時,很多商業公司自行推出他們的 distribution 配合販賣他們的支援服務來進行商業行為, 這對於企業用戶來說,實在是一整套不錯的作業系統哩!而如果妳只是想要試用,那麼很多社群版的 distribution 也可以滿足你喔!目前常見的 Linux distributions 有底下這幾種:
妳可以自由下載該軟體,然後燒錄成為可開機光碟或 DVD 後,即可使用 Linux 的環境哩! 當成搶先試用版的功能也是不錯啦! ^_^! Linux 核心版本之謎 Linux 的發展者非常的多,且為因應新硬體與軟體的升級,所以造成核心常常增加新功能,也就是說, Linux 核心常常有變動就是了。 為了分辨各個不同版本之間的差異,所以托瓦茲將針對 Linux 核心的釋出給予版本的訂定。一般來說, 核心釋出時的版本定義為: 2 . 6 . 20 主版本.次版本.釋出次數就如同前面提到的,因為核心的變動性太大,如果用在一般家用電腦或者是企業關鍵應用的話, 常變動的核心並不適合的,因此托瓦茲將核心發展的趨勢分為兩股,並根據這兩股核心的發展分別給予不同的核心編號, 那就是:
妳常用的 Linux 系統則應該說明為 distribution 才對!因此,如果以本站所介紹的 CentOS 來說,妳應該說:『我用的 Linux 是 CentOS 這個 distribution, 版本為 5.x 版,請問....』才對喔!
裝置代號
如果妳曾經使用過 Windows 系統的話,會發現妳的檔案總管內有好多的裝置,包括 C 槽、 D 槽、光碟機、
可攜式硬碟機、USB 裝置....一大堆東西。那麼 Linux 有沒有這些東西呢?答案是....沒有這些『代號』了∼
Linux 系統內有的只是以『檔名取代裝置名稱』!
舉例來說,第一個 IDE 插槽的 master 硬碟代號為 /dev/hda ,
那個 /dev 是個目錄,是裝置 (device) 的縮寫,而 hda 則是 Hard Disk A (hda) 的縮寫囉!若以此類推的話,
slave 硬碟就稱為 /dev/hdb 囉∼而如果光碟機是放在第二個 IDE 插槽的 master 時,光碟機的代號就是 /dev/hdc 啦!
那麼最近主流的 SATA 硬碟代號是啥?由於 SATA 使用的是 SCSI 模組 (早期的硬碟只有 IDE, SCSI 兩種介面), 所以 SATA 硬碟代號與 SCSI 相同,都稱為 /dev/sda !其實就是 SCSI hard Disk A (sda) 的意思。 而 SATA 硬碟由於不需要調整跳針,他是根據 SATA 插槽的順序來給予代號的。所以第一顆 SATA 硬碟為 /dev/sda, 第二顆為 /dev/sdb 以此類推。 接下來那個 usb 硬碟的代號又是啥?由於 usb 也是使用 SCSI 模組,所以 usb 硬碟也是使用 /dev/sd? 代號。 這樣會不會造成困擾呢?其實不會啦!因為硬碟代號還是會以偵測順序為主,所以通常 SATA 硬碟代號會較前面 (/dev/sda...) 而 usb 硬碟代號則較後面 (/dev/sdc...) 不過,我們在前一小節談過,硬碟總是得經過分割後才能夠被格式化使用,那假設以第一顆 SATA 硬碟來說, 他的分割槽代號為何?很簡單啊,直接在硬碟代號後面加上數字即可。只是要注意的是,由於硬碟的分割表已經保留四個位置, 所以邏輯分割的代號都是由 5 號開始的。我們以底下的兩個案例來說明代號: 圖十五、磁碟代號的說明 要記得,延伸分割也是一種分割 (雖然他只是在規劃出邏輯分割的磁柱位置而已),所以那個代號不要忘記了。 圖十五上圖很容易瞭解,就是照順序下來即是。但圖十五下圖則可發現代號 /dev/sda3, /dev/sda4 不見了! 因為 partition table 內有四筆記錄啊,這四筆記錄的代號是保留的。因此 parmary 與 extended 代號一定是前面四號, 邏輯分割一定是由五號開始的!這個概念很重要的,因為與 Windows 的 C, D, E... 不一樣! ^_^ 反正您要記得的是,Linux 已經沒有所謂的裝置名稱,他有的是檔名而已。而跟系統裝置有關的咚咚, 幾乎都是放在 /dev 那個目錄底下,這點要特別注意喔! X Window System
一些老玩家都知道,早期的 Win 3.1 是在 DOS 系統上面的一套軟體而已。相同的,
X Window System 也不過是 Linux 上面的一套軟體而已,X Window System 並不是作業系統喔!^_^
什麼是 X Window System 呢?早期的作業系統都是文字介面的,就是需要工程師下達指令後系統才會運作, 而沒有圖形介面的功能。但是一些工程界人士,例如地質學家要繪製地表面與高度的相關性, 又例如海洋學家要繪製海溝的分佈情況等等,這些都需要圖形介面的。後來麻省理工學院 (MIT) 開發出圖形使用者介面 (Graphical User Interface, GUI) ,他們認為這是下一代視窗 (window) 介面, 因此就稱為 X (想一想, 26 個英文字母按照順序,W 後面出現的字母是啥? ^_^)。 這就是 X Window System 命名的由來。 那 X Window System 有啥特異功能,為何 Linux 要使用這個咚咚呢?其實 X 系統主要是架構於可利用網路的環境, 利用一個 X server 管理硬體架構,利用 X client 計算繪圖數據,然後再交由 X server 來列印到螢幕上。 X client 可以是一部主機,而 X server 則可以在任何一部主機上,那就構成了網路的 X 連線了。 妳可以參考底下的圖示來看: 圖十六、X server 與 X client 的溝通示意圖 上圖有趣的地方在於, X client 可能是多個可以在 X 系統上面運作的程式,而 X server 則是可以在多種不同作業系統上面運作的程式。也就是說,妳可以在不同的作業系統上面安裝 X server , 然後透過網路的功能連結到 X client 去取得繪圖數據,最後在妳的 X server 上面將桌面圖示繪製出來。 這對於『遠端桌面』是很有幫助的!而且一部 X client 可以讓多部 X server 連接,實在是很有趣! 在預設的 Linux distribution 上面,X server/X client 剛好在同一部機器上,所以我們可以讓這個 X window system 順利的在一部 Linux 系統上面運作的!此外,妳會看到圖十六的中間圖示,妳會發現怎麼有個 Window Manager (WM)? 其實 Window Mananger 是個特殊的 X client ,他的功能主要是管理整個 X window system 的。 因為每個 X client 其實彼此之間並不認識對方,所以可能會造成每個 X client 的繪圖圖層彼此重疊, 且無法分辨每個 X client,與無法在不同 X client 之間切換。 為了解決這方面的困擾,並且增加整個 X window system 的資源管理,因此就有這個 WM 的產生了。 目前的 WM 主要有 KDE 以及 GNOME ,當然不止這些東西而且,不過目前是以這兩個計畫為最大, 管理介面以及畫面風格也比較美觀漂亮!以後您要知道的是,不同的 WM 具有不同的操作介面, 而且那也只是在 X server 上面架構出來的一個視窗管理員而已,這個視窗管理員是可變更的! 若硬要在 X window system 的各項元件上分析他的相關性,那妳可以知道的是:
檔案系統
來到重要的地方啦!對於作業系統來說,檔案系統是非常重要的喔!因為電腦作業系統本來就是要處理一些資料,
讓這些資料變成有意義的東西,那這些資料其實是放置到儲存媒體上面的,那妳要由儲存媒體上面存、取該資料,
就與檔案系統 (file system) 有關啦!底下我們就來談一談這個恐怖的東西。
啥是檔案系統
我們知道一顆硬碟要被使用,第一個重點是需要進行分割 (partition),分割完畢後還需要進行格式化,
那分割槽才能夠被作業系統使用。關於分割我們知道他是硬碟本身所需要的動作,前面談過很多了,所以這裡略過。
妳應該會問的是,那為何需要格式化?格式化的意義是什麼?
讓我們先舉個例子來說,白蟻要如何創造蟻窩?或許是這樣的:
此外您也必須要知道,不同的作業系統之間基本上可能不會認識彼此的檔案系統的。舉例來說,蜜蜂應該不知道白蟻的蟻窩結構, 白蟻應該也不知道蜜蜂的蜂窩結構,您說是吧!所以囉,您或許常常會聽到,Windows 的檔案系統可能無法被 Linux 抓到,同樣的, Linux 的檔案系統對於 Windows 來說,他可能也不會知道如何讀取的!^_^ 那 Linux 的檔案有哪些重要資料需要儲存呢?大概有兩種:
圖十七、檔案系統示意圖 如圖十七所示,在 inode table 及 block area 當中,其實是被切成好像許多小隔間的樣子,在 inode 裡面記錄檔案的屬性, 在 block 內則是記錄檔案的實際內容。但能不能讀取這個檔案系統,則與驅動程式 (模組) 有關。 常見的 Windows 檔案系統主要有:
啥是 Linux 目錄樹資料架構?
在前一小節我們談到了 inode 與 block 這兩個東西,也知道了檔案的資料其實是(1)屬性與(2)內容兩者,
而我們可以透過 inode 記錄的 block 號碼來取得檔案的屬性與內容資料。所以,其實我們只要知道
inode 號碼就能夠知道一個檔案的完整資料了。可是你有沒有想到一件事,
那就是『我怎麼知道某一個檔案的屬性是記錄在那個 inode 號碼上?』
此時就得要透過目錄樹了 (directory tree)。
如同前面提到的,Linux 已經沒有所謂的裝置名稱了,所以當然也沒有 C, D... 槽。那麼我們的檔案要如何放置? 其實 Linux (或 Unix-Like, 類 Unix 系統) 使用的是目錄樹。最頂層的目錄為根目錄 (/) ,所有的目錄都在這個根目錄之後。 這個目錄樹也是整個檔案的基礎!如果你以檔案總管的想法來思考的話,如同下圖所示: 圖十八、檔案總管的目錄示意圖 在圖十八中方框圈選起來的部分,那就是目錄!而檔案總管中最頂層的目錄稱為『桌面』,那在 Linux 底下則是根目錄。 妳可以使用下圖來稍微瞭解一下目錄樹的概念: 圖十九、Linux 系統的目錄樹示意圖 仔細看一下圖十九的內容,第一行有個 bin ,倒數第二行也有個 bin ,那麼相同檔名可以同時存在嗎? 其實這兩個檔案是不同檔名的喔!因為兩者分別是:
檔案系統與目錄樹的關係(掛載)
我們知道 Windows 的分割槽是以 C, D...
等的方式來處理的,而這個 C, D... 則是掛在『我的電腦』底下,那 Linux 的目錄樹與分割槽的關係又如何?
圖二十、目錄樹與分割槽之間的相關性 如上圖,假設我的硬碟分為兩槽,由於根目錄一定要存在,所以我們可以將根目錄想成是一個『進入點』, 也就是說,所有的根目錄底下的檔案都是來自於 partition 1 的意思。因此,我們只要知道根目錄與 partition 1 之間的 inode 對應,那麼就能夠依序推出所有檔案的 inode 號碼了!因為每個目錄與檔案之間都有相關性嘛! 那如果你想要有第二個 partition 呢?如上圖所示,我將 /home 獨立出來另一個 partition 2 的分割槽, 那 /home 這個目錄又成為一個進入點了,所有在 /home 底下的資料都是放到 partition 2 當中的。 其實判斷某個檔案在那個 partition 底下是很簡單的,透過反向追蹤即可。以上圖二十來說, 當我想要知道 /home/vbird/test 這個檔案在那個 partition 時,由 test --> vbird --> home --> / , 看那個『進入點』先被查到,那就是使用的進入點了。所以 test 使用的是 /home 這個進入點而不是 / 喔! 在 Linux 的專業術語方面,我們將 / 與 partition 1 的關係稱為『掛載 (mount)』, 而根目錄就被稱為『掛載點』了。掛載點一定是目錄,這個不要忘記了。 現在讓我們來想一想,那我的電腦如何讀取光碟呢?這個很重要吧! 在 Windows 裡面使用的是『光碟機』的代號方式處理(假設為 E 槽時),但在 Linux 底下我們依舊使用目錄樹喔! 在預設的情況下, Linux 是將光碟機的資料放置到 /media/cdrom 裡頭去的,照這樣來說, 如果光碟片裡面有個檔案檔名為『我的檔案』時,那麼這個檔案是在哪裡?
參考資料
2007/07/02:真要命!一不小心又寫太多∼這樣怎麼符合『家長級』使用模式呢?真糟糕... 2007/07/03:不過,總算是寫完了!大家參考看看吧! 2007/07/xx 以來統計人數 |
|||||||||||||