書名: Linux 作業系統之奧義

作者: 邱世華@著

內容與筆記

過去看過許多有關linux的書籍,但是發現其實大多的相關書籍都在強調系統的操作,但對於建立觀念上的書及其實並不常見,而本書就是幾乎完全以系統基礎概念為撰寫的主旨,滿適合已經有接觸過linux系統,但對觀念上模糊不清的學習者,這也是筆者購買及閱讀本書的目的,以下內容希望可以將linux的基礎做一完整記錄。

真的看不下去!! 今天已經是2008年5月30日,這本書有多難懂多煩瑣,必須看過才知道,筆者曾經以為,仔仔細細的重頭讀起,以自身對於linux的程度,應該可以看懂,不過證明本書對於目前的我而言,太過於想像,無法體會。所以筆者建議,讀本書時,不要急著立刻看懂所有敘述,而是重頭到最後先快速讀過,挑看得懂得先看,看不懂得先跳過,這樣讀過一遍後,大概可以對本書有一個初略的理解,然後再重看一下,並且同時配合上機操作,如此才能夠真正體會作者的用心。

so. 從今天起筆者打算重讀一次... 希望能有所突破。>< 

給個期限: two weeks (2008年6月14日!!)



BIOS

電腦一開機,電源剛從power從入主機板時,第一個啟動的軟體便是住機板上的BIOS,BIOS全名為基本輸入輸出系統(Basic Input Output System),要簡單認識BIOS首先要知道以下幾個名詞:

‧北橋、南橋

‧Flash Memory

‧CMOS

‧SMBIOS

南北橋是主機板上最重要的晶片組(目前AMD已經不再使用該架構),北橋主要控制CPU、記憶體,而南橋則是負責PCI、PCI─E、USB、VGA等所有周邊相關設備;而在南橋裡面有一個特殊區塊,是負責儲存CMOS的空白區域,用來讓BIOS儲存使用者設定的地方(在BIOS選單中可以設定的值都儲存在這一區域),主機板上的水銀電池主要目的便是提供CMOS的資料保存。

當BIOS啟動時會先去確認CMOS中的資料是否正確。如果正確將會把CMOS的資料加上已存在或找到的硬體資訊,整合成一個表格,寫到記憶體當中,也就是SMBIOS。如果發現有錯誤,則會自動以預設值取代掉原有的CMOS所提供的資料。所以這一份寫入記憶體的SMBIOS表格,就是使用者進入BIOS選單後,可以看到或選擇的所有資訊。

註:BIOS的廠商如:Phoenix Technologies或AMI,目前都有需多PC大廠使用,大部分一開機就可見到她們的logo,但有些PC大廠會將Logo換成自己的。

BIOS的作用主要有四點:

1.自動檢察及進行初始化

BIOS在開機時會針對主機板上的相關晶片進行測試動作,並通知各晶片開始工作。

2.記錄系統設定值

使用者可以透過設定BIOS來改變各種不同的設定,例如:onboard顯示卡上的記憶體大小。

3.中斷處理

主機板上的任何資源皆由BIOS來分配。

4.載入作業系統(OS)

使用者手上的作業系統,接是由BIOS轉交給開機軌,再由開機軌轉到各分割區所啟動的。

所有會在BIOS之前產生的動作,就是power on,也就是按下電腦開關的那一瞬間。在power on階段的一開始,會進入BIOS的啟動流程,當使用者按下電源開關,CPU會先去找主機板上的BIOS,接著BIOS會先在Flash Memory中開始執行,再加上CMOS中使用者所喜好的設定值,將自己壓縮到電腦的主記憶體中。此時若按下『DEL』,就會進入BIOS所提供的設定選單。而當使用者進入作業系統後,作業系統就可以參考記憶體中的BIOS的資料,讀取每一個硬體的位置。

Power On

在user按下電源開關那一瞬間到BIOS POST階段,稱之為Power On階段,也就是所謂啟動電源。在power on階段,BIOS的主要工作是檢查主機上某些硬體的狀態以及存在於CMOS的設定,看看哪些例行工作是要進行或無法執行,因此在這階段使用者不會在螢幕上看到任何訊息(要等硬體確認後才會啟動VGA)。所以當發生狀況而無法開機,是無法從螢幕上看到任何資訊,唯一可以抽絲剝繭排除問題的方式只有兩種:

‧看PORT 80訊息

Port 80的顯示有兩種:燈號或是數位。燈號顯示方式在主機板上以8個LED燈為一組訊號,以16進位來推算所顯示的意義,但因為主機板的價格越來越便宜許多板子,已經將port 80該裝置拿掉,不過式面上有在販售PCI卡上的Port 80。Port 80所顯示的訊息一般還是要對應BIOS廠商所提供的對應表,因各家廠商所設計顯示的意義會有所差異。

‧聽逼逼警示聲

逼逼聲則是BIOS透過主機板上的喇叭直接經由聲音的快、慢、次數,將開機遇到的問題反應出來,直接而有力,對一般使用者較為適合也較方便。由於各家BIOS的廠商所定義的聲音規則各有不同,發生問題時若要聽聲辨認問題,記得要先看一下主機板的說明書註明的BIOS廠商是哪一家,或直接參考說明書上所附的聲音代碼表,以免將問題複雜化。

POST(Power On Self Test)

BISO在啟動時,會先去確認南橋中的CMOS資料是否正確。如果正確將會把CMOS的資料加上已存在或找到的硬體資訊,整合成一個表格,寫到記憶體當中,也就是SMBIOS。如果發現有錯誤,則會自動以預設值取代掉原有的CMOS所提供的資料。當BIOS讀取完CMOS中使用者之前已經設定好的設定值後,接下來會有一連串的硬體檢測動作。一般來說,使用者一開基地一個看到的畫面便是檢測記憶體大小的階段,我們稱之開機自我測式(Power On Self Test:POST)。在POST中,BIOS會幫使用者檢查CPU、記憶體、顯示卡等相關周邊控制器是否達到就緒狀態,以及提供記憶體簡易的測試,只要測試沒問題,就會在POST階段顯示該硬體的基本資訊。

當POST完成後,會將所有臨時使用的硬體其相關資訊儲存在記憶體的SMBIOS的表格中,以供使用者或作業系統來對應使用,這部分的資訊是動態調整的。(例如:插上USB)

SMBIOS其實是一個不大的空間,主要是扮演如何讓主機板或系統廠商將x86架構的系統透過BIOS成現在使用用者的面前,並提供BIOS開發者足夠的資訊,讓BIOS和一些自定的硬體去溝通。我們可以將SMBIOS視為一個大表格,其中存在許多的Type,每個Type都存在著不一樣的資訊,像CPU的速度、cache size、記憶體大小等都各是一個Type。

有關SMNIOS細部介紹,於本書有較詳細說明,在此不贅述。另外一提BIOS發生錯誤比OS無法開機更為嚴重,因為這表示硬體無法使用,更何況是作業系統。

硬碟的第零軌(MBR)

當設定完成、硬碟驅動成功、應體測試都沒問題後,BIOS要退居幕後的辦法就試將載入作業系統的主控權交給硬碟內的主啟動磁區(Master Boot Record:MBR),也就是硬碟的第零軌,讓藏身在MBR中的開機管理程式可以將指標帶到系統核心的地方。

進入系統啟動的第一部是BIOS將硬碟的第一個磁區載入到記憶體當中後執行,再開始運作,這一塊空間就叫MBR,基本上,硬碟的每一個磁區都是512Bytes,故MBR的大小也就是512Byte。

為了有效使用這一區塊,MBR將此區拆成幾個部份,MBR中的各區分配如下:

‧446 bytes  ─  Bootloader

Bootloader是MBR用來儲存開機管理程式的地方,但注意,可存在bootloader之中的管理程式,同樣也可以存放到每一個分割區的boot sector,因為管理程式式由OS所產生的。一般linux最常使用GRUB套件,GRUB的開機管理程式就是放在這裡。Bootloader在開機時的功能主要兩個:

1.載入磁區

根據使用者的設定,MBR會將硬碟分成好幾個分割區,如何分割都放在Partition Table的欄位中,而在每個分割區中的第一個磁區(也就是每一個磁區的第一個512bytes)便稱之為開機磁區(boot sector),也就是之前提到可以用來存放OS產生的bootloader的地方。

圖示:

|分割區一........  .......|分割區二...........    ........|分割區三..........   ..........|分割區四...........    ........|

|MBR(512B)............|Boot sector(512B)......|Boot sector(512B)......|Boot sector(512B)......|

MBR中的Bootloader這區域與開機管理程式及每個分割區的boot sector,關係其實是交錯在一起的。

假設我們在某硬碟的第一個分割區中先安裝好一套Linux(Linux A),並安裝GRUB在MBR中。接著又在第二個分割區中安裝一個Linux(Linux B),但這次的GRUB選擇安裝在分割區二中。使用者將第二次安裝的GRUB位置告訴第一個GRUB(這時需要在第一個OS下變更GRUB的設定)。這三大步驟的結果,當一開機進入的GRUB選單是由MBR中的Bootloader程式,載入Linux A中的設定檔所產生的(GRUB 1);但因在分割區二安裝另一個GRUB,因此,在分割區二的boot sector同時也存在著另一套GRUB管理程式(GRUB 2)。此時,如果要進入GRUB 2,就必須透過GRUB1所看到的選單畫面,在連結到GRUB 2,而連結到GRUB 2的動作,這種各磁區的交換就是所謂的載入磁區。

使用者一開機便可以看到的開機選單,是MBR的Bootloader所儲存的開機管理程式產生的,Linux目前所使用的便是GRUB所提供的開機管理程式,相對要注意的,開機管理程式只是GRUB中的一部份。進入GRUB後接下來所見到的開機畫面、或第二層開機選單,則是個parition中的檔案或boot sector所提供的。

2.載入kernel

其二則是直接用來載入開機所需要使用的kernel。所謂的載入,就是直接透過分割區及設定檔的資料,找到某一個分割中指定的kernel檔案。

64 bytes  ─  Partition(1~4)

2 bytes  ─  Magic Number

 

待續~

sclin0323 發表在 痞客邦 PIXNET 留言(7) 人氣()


留言列表 (7)

發表留言
  • 悄悄話
  • 悄悄話
  • 悄悄話
  • 悄悄話
  • 悄悄話
  • 悄悄話
  • 悄悄話