歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

Linux 開機程序之研討

各位是否曾經對電腦整個開機的流程感到好奇呢 ? 這一次 , 我們所要討論的   主題 , 就是 Linux 從開機的一瞬間到 login 為止 , 到底發生了什麽事情 ?   想必各位都知道 , 在剛開機時 , 由於 80x86 的特性 , CS ( Code Segment )   這個暫存器中全部都放著 1 , 而 IP ( InstrUCtion Pointer ) 這個暫存器   中全部都放著 0 , 換句話說 , CS=FFFF 而 IP=0000 , 此時 , CPU 就依據   CS 及 IP 的值 , 到 FFFF0H 去執行那個地方所放的指令 . 這時候 , 由於   FFFF0H 已經到了高位址的頂端 , 所以 , FFFF0H 這個地方 , 總是會放一個   JMP 指令 , 跳到比較低的位址 . 接著 , ROM BIOS 就會作一些檢查的動作   像記憶體 , 鍵盤 等...... 並在我們俗稱的 UMB ( Upper Memory Block )   之中掃描 , 看看是否有合法的 ROM 存在 ( 比如 SCSI 卡上的 ROM ) .   假如有 , 就到裡面去執行一些東西 , 執行完之後再繼續剛才的行程 . 到了   最後 , 讀取磁碟機上的第一個 sector . 在這裡 , 我假設各位由硬碟啟動   因此 , 就硬碟的構造而言 , 它的第一個 sector 稱為 MBR ( Master Boot   Record ) . 因為一個 sector 是 512 bytes , 而 MBR 這 512 bytes 可分   為兩個部份 , 第一個部份為 Pre-Boot 區 , 占了 446 bytes ; 第二部份   是 Partition Table , 占了 66 bytes . Pre-Boot 區的作用之一 , 就是   去看看那個 Partition 被標成 Active , 然後去讀那個 Partition 的 Boot   區 .      在 Linux 的啟動方面 , 一般人最常把 LILO 放在 MBR 或 Superblock   假如你把 LILO 放在 MBR , 那很明顯的 , 當讀取到 MBR 的時候 , LILO   就被執行 , 此時 , 你的螢幕上會出現  boot: 接著 , 就進行 Load Kernel   的動作 . 在另一方面來說 , 假如你把 LILO 安裝在 Superblock , 通常你   還會有一個管理開機的程式 , 也許是住在 MBR ( 像 OSBS ) 或者是放在一   個單獨的 Partition ( 像 OS/2 的 Boot Manager ) . 再由這個管理開機   的程式去讀取 LILO , 進而做 Load Kernel 的動作 .   好了 , 到了目前為止 , 我們已經講到 Load Kernel 的動作 . Kernel 被   load 到 memory 中之後 , 接著進行一連串 probe 周邊的動作 , 像串聯埠   並聯埠 , 軟碟 , 音效卡 , 硬碟 , 光碟機 等 ...... 接著 mount root   partition . 在這之後 , kernel 會起動 init 這個 process . init 這   個 process 的 PID 為 1 , 它是所有 process 的祖先 .   接下來呢 ? 系統就開始執行  /rc.d/rc.S  , 在這裡 , 我們暫時打住 ,   先對大概的 initialization script 執行的順序作一個浏覽 , 請看下面   的流程 :            init



Copyright © Linux教程網 All Rights Reserved