開機流程與關機、檔案系統

來源:互聯網
上載者:User
開機流程
  重要性:
  開機不是只要按一下電源鈕而關機只要關掉電源鈕就可以了嗎?有何大學問?話是這樣沒錯啦,但是由於 Linux 是一套多人多工的作業系統,你難保你在關機時沒有人線上上,如果你關機的時候碰巧一大群人線上上工作,那會讓當時線上上工作的人馬上斷線的!那不是害死人 了!一些資料可以無價之寶哩!另外,與 DOS 環境不同的是, Linux 在執行的時候,雖然你在畫面上只會看到黑壓壓的一片,完全沒有任何畫面,但其實他是有很多的程式在背景底下執行的,例如郵件程式、瀏覽器主機程式等,你如 果隨便關機的話,是很容易傷害硬碟及資料傳輸的動作的!所以在 Linux 下關機可是一門大學問喔!
  流程分析:
  既然開機是很 嚴肅的一件事,呵呵,那我們來瞭解一下整個開機的過程吧!好讓大家比較容易發現開機過程裡面發生錯誤的地方,與解決之道!不過,由於開機的過程中,那個 Boot Loader 使用的軟體可能不一樣,例如 Red Hat 7.2 以後已經同時提供 Lilo 與 Grub 這兩個開機驅動軟體,所以過程或許有點不太相同。在這個網頁當中,由於 VBird 比較熟悉 Lilo ,所以未來提到的 Boot Loader 都以 Lilo 為主要依據。那麼 Lilo 是什嗎?!簡單的說,他是 LInux LOader 的縮寫,就是 Linux 開機時候載入的咚咚就對了!這東西可是控制了你的多重開機的命脈!不過,這一篇先不跟你講怎麼作好多重開機,你應該先將前面這幾篇文章看完,對於 Linux 的指令有點概念之後,然後再來設定你的多重開機,會比較容易一些!並且,當你重新編譯核心完畢之後,一定得需要重新安裝一次 Lilo 的,那個時候在跟你說說吧 ^_^!因此,這裡先不跟你說明啦!底下開始來談談 Linux 是如何開機的呢?基本的流程為:
  1.載入 BIOS 的硬體資訊;
  2.讀取 MBR 的 Kernel Loader (亦即是 lilo, grub, spfdisk 等等)開機資訊;
  3.載入 Kernel 的作業系統核心資訊;
  4.Kernel 執行 init 程式並取得 run-level 資訊;
  5.init 執行 /etc/rc.d/rc.sysinit 檔案;
  6.啟動核心的外掛式模組 (/etc/modules.conf);
  7.init 執行 run-level 的各個批次檔( Scripts );
  8.init 執行 /etc/rc.d/rc.local 檔案;
  9.執行 /bin/login 程式;
  10.登入之後開始以 Shell 控管主機。
  大概的流程就是上面寫的那個樣子啦,而每一個程式的內容主要是在幹嘛呢?底下就分別來談一談吧!
   1. 尋找 BIOS 載入硬體資訊:稍微有 PC 硬體經驗的人們大概都知道 BIOS ( Basic Input/Output Setup ) 的作用!他是第一個被載入電腦的資料!你主機的 CPU 資料、開機順序、硬碟大小、晶片組工作狀態、PnP 的開啟與否、記憶體的時脈等等等...這都記錄在 BIOS 當中!所以啦,開機之後,系統會先去找這個東西;
  
  2. 可開機硬碟的 MBR 讀取 Kernel loader:再來呢?呵呵!當然就是硬碟的開機資料囉!由於個人電腦的系統在讀完 BIOS 之後,會先去讀取第一個開機硬碟的第一個磁區(就是 master boot record, MBR 囉!),而這個磁區主要就是在記錄開機的資訊!還記得上面提到的 Lilo 吧?他的紀錄就是在這裡囉!所以囉,這個時候 Lilo 紀錄的資訊就會被讀出來,系統並依 Lilo 的資訊去不同的系統開機,這也就是多重開機設定的地方啦;
  
  VBird 觀點通常我們知道的多重開機軟體都是將他們的多重開機資訊寫在這裡( MBR ),然後在開機時,系統會先找到這個地方,然後再去找相關的開機的設定檔啦!例如 Linux 就會去找 /boot 的檔案, Windows 就會去找 /boot.ini 等等的!而如果要將這個地方殺掉的話,由於 DOS 的 format 也沒有辦法將這個資料殺掉的!因此,如果你要將 MBR 的資料去除的話,那麼就需要使用 DOS 系統的『 fdisk /mbr 』才行囉!基本上是不建議將 Linux 殺掉啦!因為他的功能很不錯耶!為何需要有 loader ?我想,我們得先來探討一下這個話題才行!要探討之前先來瞭解一下,曉不曉得 Windows 與 Linux 的檔案格式一不一樣?!呵呵!當然不一樣對不對,好了,那麼再來說一說,請問,你的電腦怎麼知道你的硬碟的資料是什麼系統?哈哈!那就是 loader 的主要功能囉!在你能使用系統之前,一定需要載入核心對吧!?但是怎樣讓你的硬體認識核心呢?那就是 kernel loader 的主要功能了!所以這裡需要提出的是, Linux 的 loader 是可以認識 windows 的核心檔案的,但是 Windows 卻不認識 Linux 的核心檔案,因此,作為一個多重開機的設定 loader ,就無法使用 Windows 所提供的 loader 囉!由於需要讓系統認識你的 kernel ,因此,就需要 kernel loader 啦!這樣想就對啦!
  3. 
  4. 載入核心( Kernel ):好了,既然知道要使用哪一個作業系統開機了,那麼主機就會到該作業系統的磁區之下,將他的核心載入。在 Linux 的系統下,通常開機的核心都擺在 /boot 底下,因此,這個時候的系統就會到 /boot 去尋找相關的核心囉(未來還會再提到這一個地方地!)我們的 kernel 名稱通常就是 /boot/vmlinuz-xxxx 的格式!;
  
   5. 核心執行 init 並由 /etc/inittab 取得系統登入狀態:核心載入之後,由核心執行的第一個程式就是 /sbin/init 囉!而這個程式第一個目標當然就是確定主機是要以怎樣的情況登入!這個時候就必須要以 /sbin/init 來載入 /etc/inittab 的資訊啦!而 Linux 共有幾種登入模式呢?嗯!這裡似乎有需要說明一下 Linux 有哪些登入的狀態!如果你進入 Red Hat 的 /etc/inittab 檔案的話( 可以使用 vi 啦 ),你應該會看到如下的資訊:
   
   1. 上面顯示的就是目前可以登入的狀態了(就是 run-level 啦!),共有 0~6 的登入狀態,其中,我們比較常使用的是 3 與 5 , 因為我們需要 Linux 是多人多工的情況,而較常登入的狀態就是文字與圖形介面啦!所以這裡需要設定成 3 或者是 5 ,千萬不要設定成 0 或者是 6 喔!不然系統會一直直接重新開機或者是直接關機....預設的系統登入在上面這個表格的最底下一行紀錄著!就是『id:3:initdefault 』那一行!注意喔!因為 VBird 預設是以文字介面來登入,所以才會是 3 ,如果你要改成圖形介面登入的話(請確定你的 X-windows 沒有問題),那麼就將 /etc/inittab 裡面的上面那一行,將 3 改成 5 即可囉!
  
  VBird 觀點如果你有玩過 Windows 的話,那麼你在開機的時候如果按下 F8 時,不是會出現一些什麼『安全模式』啦、『正常開機』啦或『 MS-DOS 模式』等等的進入 Windows 的狀態嗎?尤其是當你不順利關機的時候, Windows 預設就會以『安全模式』來啟動 Windows 囉!Windows 的『安全模式』幾乎不載入一些複雜的模組,讓你的 Windows 一定可以開機成功!那麼 Linux 的維護模式狀態即是使用單人模式( 就是 run_level 為 1 啦!)所以說, Linux 的登入情況是如何呢?呵呵!沒錯,就是在這裡載入的啦!
  2. 
  3. init 的第一個執行內容 /etc/rc.d/rc.sysinit :確定了登入狀態之後,再來當然就是需要將主機的資訊給他讀進去 Linux 系統囉!而 Linux 系統的第一個資料內容就是 /etc/rc.d/sysinit 這個檔案啦!如果你有空進入這個檔案去看看的話,會發現這個檔案的內容包括了==>設定預設路徑( PATH )、設定主機名稱、執行 /etc/sysconfig/network 所記錄的網路資訊、掛載 /proc 這個儲存在記憶體當中的主機基本訊息、以及其他幾個 Linux 作業系統最基本的幾個資訊!他的基本工作是:
  
  o設定預設路徑:( PATH )
  o 設定網路狀態:系統會再去讀取 /etc/sysconfig/network,並將該檔案內的資料,如 NETWORKING, FORWARD_IPV4, HOSTNAME, DOMAINNAME, GATEWARY, GATEWAYDEV 等等的設定讀入系統中。
  o啟動系統的置換空間(簡單的可以想成是虛擬記憶體): swapping
   o 檢查檔案系統:這個時候系統會去檢查一些可能會存在的目錄,例如 /fsckoptions 與 /forcfsck 及 /fastboot 等等的目錄,當你的系統有不順利關機的現象時(例如突然的斷電等等),那麼 Linux 將會自動的強制去檢查 root 的檔案系統 ( checking root filesystems )。簡單的想一想,就好象是 Windows 系統下,當你不順利關機時,在開機的過程中就會出現掃瞄硬碟的情況相同啦!
  o 周邊設定與系統設定的參數 ( /proc ):在 Linux 或者是 Unix 系統中,你會在根目錄中發現一個很奇怪的磁區,那就是 /proc 囉!其實這個目錄是記錄在記憶體當中的,每次開機的時候就會被建置起來。他的主要功能是記錄主機的一些周邊裝置的最新資料狀況!例如網路周邊啦、輸入輸出 周邊啦等等的。這個目錄下的東西蠻好玩的!不過 VBird 也不是很熟悉就是了!沒事的話,不要到裡面亂砍喔!會有問題
  o設定 Plug and Play ( PNP )的一些參數資料;
  o清除 /etc/mtab ;
  omount root 及 /proc 檔案系統 :好了,將一些資料都設定好之後,當然就是需要將資料寫下來囉!這個時候就會將 root 與 /proc 資料給他 mount 上檔案系統啦!
  o決定是否使用模組, 載入模組
  o檢查檔案系統 :與前面相同的,當前面的 /fastboot 檢查的旗標開啟之後,就會以 fsck 檢查你的其他磁區囉! ( 使用 fsck )
  o掛上其它檔案系統
  o設定 console 字型
  o開啟 quota
  o清除不必要的檔案, 如 lock, pid
  o設定 clock
  oserial port 初始化
  o將開機訊息經由 dmesg 放入 /var/log/dmesg 中
  
  如此一來,在 /etc/rc.d/rc.sysinit 就已經將基本的系統設定資料都寫好了,也將系統的資料設定完整!而如果你想要知道到底開機的過程中發生了什麼事情呢?那麼就使用 dmesg 就可以知道囉!
  
  4.啟動 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.