linux-鳥哥私房菜學習筆記

Mr.132發表於2018-08-07

linux-開機流程中的BIOS與UEFI開機自檢程式

作業系統會控制所有的硬體,並提供核心功能。

但是,作業系統也是軟體,我們的計算機是如何識別這個作業系統軟體,並執行它的呢?

明明開機時我的計算機還有沒任何軟體,它是如何識別作業系統的呢?

基本上,目前的主機系統在載入硬體驅動方面的程式,主要有早起的BIOS與新的UEFI兩種機制。

BIOS就是在開機時,計算機會區執行的第一個程式。BIOS去找到計算機裡能夠開機的硬碟,並且到該硬碟裡去讀取第一個扇區的MBR位置。這個MBR僅有446bytes的硬碟容量,裡面存放了最基本的開機管理程式。此時,BIOS工作完成,接下來。就是MBR裡的開機管理程式的工作了。

這個開機管理程式的目的是載入(load)核心檔案。開機管理程式是安裝的作業系統自帶的,當載入完核心檔案時,開機管理程式的任務也完成了。之後的工作就由作業系統來負責了!

簡單的說,整個開機流程為:

1. BIOS:開機主動執行的程式,會找到第一個可開機的裝置;

2. MBR:主要啟動記錄模組,位於第一個可開機裝置的第一個扇區內的,內含開機管理程式boot loader;

3. 開機管理程式(boot loader):一個可讀取核心檔案來執行的軟體;

4. 核心檔案:開始作業系統的功能...

boot loader 的幾個主要任務:

1. 提供選單:使用者可以選擇不同的開機專案,這也是多重引導的重要功能!

2.載入核心檔案:直接指向可開機的程式區段,來開始作業系統;

3.轉交其他loader:將開機管理功能轉交給其他loader負責。

分析第3點,也即是說,每個系統槽內都有一個loader,loader只認識本槽內的開即核心檔案其他loader。

假設你的個人計算機只有一個硬碟,裡面切成了四個分割槽槽。其中第一、第二分割槽槽分別安裝了Windowns和Linux系統,你要如何在開機的時候選擇用Windows還是用Linux開機呢?

MBR的開機管理程式,會提供幾個選項,比如,

選項1:載入Windows核心檔案來開機

選項2:將開機管理權交給另一個分割槽槽的啟動扇區(boot sector)

當使用者在開機時選擇選項2時,整個開機管理工作就交給第二分割槽槽的開機管理程式了!當第二個開機管理程式啟動後,該開機程式只有一個開機選項,因此,就會載入Linux的核心檔案開機了!

簡言之,記住兩點:

1:開機需要開機管理程式

2:開機管理程式可以安裝在MBR及Boot Sector兩個位置

 

UEFI

UEFI用來取代BIOS,常稱為UEFI BIOS。

但是UEFI好像也有好多不足。。。

 

檔案系統與目錄樹的關係(掛載)

所謂掛載,就是利用一個目錄作為進入點,將磁碟分割槽槽的資料存放在該目錄下;也就是說,進入該目錄就可以讀取該分割槽槽。這個動作,我們稱為掛載。那個進入點的目錄我們稱為掛載點。由於整個Linux最重要是根目錄,因此根目錄一定需要掛載到某個分割槽槽。其他目錄,可以根據使用者需求,掛載到不同的分割槽槽。

上圖中,假設我們的硬碟分為兩個槽,partition1是掛載到根目錄的,partition2是掛載到/home這個目錄。也就是說,當我的資料存放在/home內的各次目錄時,資料是存放在partition2的。如果資料放在根目錄/下的次目錄,資料就會被存放到partition1.

 

檔案擁有者

Linux的任何檔案都有owner、group、others三種身份的許可權

 

ls  [list]的意思,顯示檔案的檔名與相關屬性。

-al  表示累出所有的檔案詳細的許可權與屬性,包括隱藏檔案(第一個字元為[. ]的檔案)

 

第一個字元,代表這個檔案是[目錄、檔案、連結]等

d  表示目錄檔案

-  表示一般檔案

l  表示連結檔(link file)

b  表示為裝置檔案裡面的可供儲存的介面裝置

c  表示裝置檔案裡面的串列埠裝置,例如鍵盤、滑鼠

接下來,第一組為owner許可權,第二組為group許可權,第三組為others許可權

如何改變檔案的許可權與屬性

chgrp  : 改變檔案所屬組      change group

chown : 改變檔案擁有者

chmod : 改變檔案的許可權,SUID,SGID,SBIT等特性

 

改變所屬群組:chgrp  (change group)

注意:要被改變的組名必須要在/etc/group 檔案內才行,否則就會報錯。也就是說,組名都是放在/etc/group檔案裡的,要是這個檔案沒組名x,那組名x是不會被找到的,所以會報錯。

改變檔案擁有者,chown (change owner)

注意:使用者必須是已經存在系統中的賬號,也就是在/etc/passwd這個檔案中有記錄的使用者名稱才能改變。

-R 是進行遞迴的持續變換成變更,即連同次目錄下的所有檔案都變更。

 

那,什麼時候要用到chgrp和chown呢?

舉個例子:假如你要將mytext拷貝成text給Tim。

由於cp這個命令,會複製檔案的許可權和屬性,即檔案的所有者和群組還是你的。這時候,就要用chgrp和chownlai來改變檔案屬性了!

改變許可權,chmod

數字型別改變許可權

規定的許可權分數:

r:4

w:2

x:1

例如:owner=rwx=4+2+1=7

           group=rwx=4+2+1=7

            other=- - -=0+0+0=0

變更語法:

-R是遞迴,xyz是對應的owner、group、other的許可權得分

將.bashrc的所有許可權都設為啟用,命令為:

 

符號型別改變檔案許可權

u,g,o分別表示:user,group,others;    

a表示全部all

表示所有人,用寫的許可權!

 

目錄的許可權:如果你在某目錄下不具備x的許可權,那麼你就無法切換到該目錄下,也就無法執行該目錄下的任何指令,及時你具有該目錄的r或w的許可權。記住,對於目錄的許可權,x才是關鍵!

指令 cat 檔名      表示將某檔案內容讀出來

 

檔案種類

正規檔案 -

純文字檔案:ASCII

二進位制檔案:binary

資料格式檔案:data      這種檔案使用cat讀時,會亂碼

目錄檔案 d

連結檔 l (類似Windows的快捷方式)

裝置與裝置檔案  (通常在/dev目錄下)

    區塊(block)裝置檔: 第一個屬性為 b      硬碟、軟盤等

    字元裝置檔案:第一個屬性為 c         一些串列埠的介面裝置,如滑鼠、鍵盤等。

資料介面檔案(sockets):第一個屬性為 s

資料輸送檔案(FIFO,pipe):第一個屬性為 p

 

副檔名:只是讓你瞭解該檔案可能的用途,而已!

linux檔案雖然不需要副檔名。但有時候,我們也用適當的副檔名來表示該檔案的意義:

*.sh : 指令碼或批處理檔案,因為批處理檔案是使用shell寫的,所以,副檔名就寫成 .sh

*Z, *.tar ,*.tar.gz , *.zip, *.tgz :經過打包的壓縮檔案。

*.html ,*.php :網頁相關的檔案 , .html可以用瀏覽器直接開啟

 

Linux目錄配置--FHS

 

/根目錄的意義與內容

/(root,根目錄):與開機系統有關。由於根目錄很重要,所以FHS希望根目錄不要放在太大的分割槽槽,因為越大的分割槽槽,你會放入越多的資料,導致根目錄所在的分割槽槽就可能有較多發生錯誤的機會。

因此FHS標註建議是:根目錄(/)分割槽槽應該越小越好,且應用程式所安裝的軟體最好不要與根目錄放在同一個分割槽槽內,保持根目錄越小越好。這樣,不但效能交佳,根目錄所在的檔案系統也不容易發生問題。

鑑於上述說明,FHS定義出根目錄(/)底下應該要有以下這些此目錄,即使沒有實體目錄,FHS也希望至少有連結檔存在。

 

 

 

 

 

相關文章