国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

Linux 開機(jī)流程分析

2024-07-21 02:36:07
字體:
供稿:網(wǎng)友

  開機(jī)流程分析
  開機(jī)不是只要按一下電源鈕而關(guān)機(jī)只要關(guān)掉電源鈕就可以了嗎?有何大學(xué)問? 話是這樣沒錯啦,但是由于 linux 是一套多人多任務(wù)的操作系統(tǒng),你難保你在關(guān)機(jī)時沒有人在線上,假如你關(guān)機(jī)的時候碰巧一大群人在線上工作,那會讓當(dāng)時在線上工作的人馬上斷線的!那不是害死人了!一些資料可以無價之寶哩!另外,與 DOS 環(huán)境不同的是, Linux 在執(zhí)行的時候,雖然你在畫面上只會看到黑壓壓的一片,完全沒有任何畫面,但其實他是有很多的程序在背景底下執(zhí)行的,例如郵件程序、瀏覽器主機(jī)程序等,你假如隨便關(guān)機(jī)的話,是很輕易傷害硬盤及數(shù)據(jù)傳輸?shù)膭幼鞯模∷栽?Linux 下關(guān)機(jī)可是一門大學(xué)問喔
  
  既然開機(jī)是很嚴(yán)厲的一件事,呵呵,那我們來了解一下整個開機(jī)的過程吧!好讓大家比較輕易發(fā)現(xiàn)開機(jī)過程里面發(fā)生錯誤的地方,與解決之道!不過,由于開機(jī)的過程中,那個 Boot Loader 使用的軟件可能不一樣,例如 Mandrake 9.0 已經(jīng)同時提供 Lilo 與 Grub 這兩個開機(jī)治理程序,雖然 lilo 與 grub 的激活過程或許有點(diǎn)不太相同,但是他的原理則都是一樣的哩!這里我們先介紹較老牌的 Lilo 啰! Lilo 是什么?!簡單的說,他是 LInux LOader 的縮寫,就是 Linux 開機(jī)時候加載的咚咚就對了!這東西可是控制了你的多重開機(jī)的命脈!底下的篇幅會再分別介紹這兩套開機(jī)治理程序!底下先開始來談?wù)?Linux 是如何開機(jī)的呢?基本的流程為:
  1. 加載 BIOS 的硬件信息;
  2. 讀取 MBR 的 Kernel Loader (亦即是 lilo, grub, spfdisk 等等)開機(jī)信息;
  3. 加載 Kernel 的操作系統(tǒng)核心信息;
  4. Kernel 執(zhí)行 init 程序并取得 run-level 信息;
  5. init 執(zhí)行 /etc/rc.d/rc.sysinit 檔案;
  6. 激活核心的外掛式模塊 (/etc/modules.conf);
  7. init 執(zhí)行 run-level 的各個批次檔( Scripts );
  8. init 執(zhí)行 /etc/rc.d/rc.local 檔案;
  9. 執(zhí)行 /bin/login 程序;
  10. 登入之后開始以 Shell 控管主機(jī)。
  大概的流程就是上面寫的那個樣子啦,而每一個程序的內(nèi)容主要是在干嘛呢?底下就分別來談一談吧!
  · 尋找 BIOS 加載硬件信息:
  稍微有 PC 硬件經(jīng)驗的人們大概都知道 BIOS ( Basic Input/Output Setup ) 的作用!他是第一個被加載計算機(jī)的資料!你主機(jī)的 CPU 資料、開機(jī)順序、硬盤大小、芯片組工作狀態(tài)、PnP 的開啟與否、內(nèi)存的時脈等等等...這都記錄在 BIOS 當(dāng)中!所以啦,開機(jī)之后,系統(tǒng)會先去找這個東西;
  · 可開機(jī)硬盤的 MBR 讀取 Kernel loader:
  再來呢?呵呵!當(dāng)然就是硬盤的開機(jī)資料啰!由于個人計算機(jī)的系統(tǒng)在讀完 BIOS 之后,會先去讀取第一個開機(jī)硬盤的第一個扇區(qū)(就是 master boot record, MBR 啰!),還記得這個 MBR 嗎?嗄!忘記了?趕緊回到第二篇好好的再復(fù)習(xí)一遍ㄋㄟ?。而這個扇區(qū)主要就是在記錄開機(jī)的信息!還記得上面提到的 Lilo 及 grub 吧?他的紀(jì)錄就是在這里啰!所以啰,這個時候 Lilo 紀(jì)錄的信息就會被讀出來,系統(tǒng)并依 Lilo 的信息去不同的系統(tǒng)開機(jī),這也就是多重開機(jī)設(shè)定的地方啦。
  
  好了,先再往返憶一下,假如你是以 grub 程序開機(jī)的話,那么在開機(jī)的時候會顯示什么資料呢?呵呵!會顯示蠻多的開機(jī)選單,沒錯?就是『選單』,然后選擇了你的選擇項目之后,系統(tǒng)就會跑到該扇區(qū)去讀取該操作系統(tǒng)的核心啰!呵呵!所以一個好的 boot loader 會具有兩個功能,就是:
  
  o 選單功能 ( menu )
  o 指向功能 ( pointer )
  
  那么為何要有 loader 呢?我想,我們得先來探討一下這個話題才行!要探討之前先來了解一下,曉不曉得 Windows 與 Linux 的檔案格式一不一樣?!呵呵!當(dāng)然不一樣對不對,好了,那么再來說一說,請問,你的計算機(jī)怎么知道你的硬盤的資料是什么系統(tǒng)?哈哈!那就是 loader 的主要功能啰!在你能使用系統(tǒng)之前,一定需要加載核心對吧!?但是怎樣讓你的硬件熟悉核心呢?那就是 kernel loader 的主要功能了!所以這里需要提出的是, Linux 的 loader ( lilo 或 grub ) 是可以熟悉 windows 的核心檔案的,但是 Windows 的 loader 卻不熟悉 Linux 的核心檔案,因此,作為一個多重開機(jī)的設(shè)定 loader ,就無法使用 Windows 所提供的 loader 啰!由于需要讓系統(tǒng)熟悉你的 kernel ,因此,就需要 kernel loader 啦!這樣想就對啦!
  
  這一部份的信息我們在后續(xù)的章節(jié)會再提及!
  · 加載核心( Kernel ):
  好了,等我們在 grub 的選單中選擇了 Linux 這個系統(tǒng),然后主機(jī)跑到 Linux 所在的硬盤之下,就開始將他的核心加載啰。
在 Linux 的系統(tǒng)下,通常開機(jī)的核心都擺在 /boot 底下,因此,這個時候的 boot loader 就會到 /boot 去尋找相關(guān)的核心。我們的 kernel 名稱通常就是 /boot/vmlinuz-xxxx 的格式,目前 Mandrake 9.0 的核心版本為 2.4.19,而 Mandrake 自行釋出的版本為 2.4.19-16mdk ,所以,使用 uname –r 會出現(xiàn) 2.4.19-16mdk 呦!然后 MDK 9.0 預(yù)設(shè)核心檔案就是: /boot/vmlinuz-2.4.19-16mdk 這一個!好了,加載這個檔案再往下繼續(xù)吧!
  · 核心執(zhí)行 init 并由 /etc/inittab 取得系統(tǒng)登入狀態(tài):
  核心加載之后,由核心執(zhí)行的第一個程序就是 /sbin/init 啰!而這個程序第一個目標(biāo)當(dāng)然就是確定主機(jī)是要以怎樣的情況登入!這個時候就必須要以 /sbin/init 來加載 /etc/inittab 的信息啦!而 Linux 共有幾種登入模式呢?嗯!這里似乎有需要說明一下 Linux 有哪些登入的狀態(tài)!假如你進(jìn)入 Linux 的 /etc/inittab 檔案的話( 可以使用 vi 啦 ),你應(yīng)該會看到如下的信息:
  
  [root @test /root]# vi /etc/inittab #  0 - halt (Do NOT set initdefault to this) 關(guān)機(jī) #  1 - Single user mode 單人使用(系統(tǒng)有問題時候的登入狀況) #  2 - Multiuser, without NFS (The same as 3, if you do not have networking) 多人但無網(wǎng)絡(luò) #  3 - Full multiuser mode 文字界面登入的多人系統(tǒng) #  4 - unused   系統(tǒng)保留 #  5 - X11      X-Windows 圖形界面登入的多人系統(tǒng) #  6 - reboot (Do NOT set initdefault to this) 重新開機(jī) # id:3:initdefault:
  ·  
  上面顯示的就是目前可以登入的狀態(tài)了(就是 run-level 啦!),共有 0?6 的登入狀態(tài),其中,我們比較常使用的是 3 與 5 , 因為我們需要 Linux 是多人多任務(wù)的情況,而較常登入的狀態(tài)就是文字與圖形界面啦!所以這里需要設(shè)定成 3 或者是 5 ,千萬不要設(shè)定成 0 或者是 6 喔!不然系統(tǒng)會一直直接重新開機(jī)或者是直接關(guān)機(jī)....預(yù)設(shè)的系統(tǒng)登入在上面這個表格的最底下一行紀(jì)錄著!就是『id:3:initdefault 』那一行!注重喔!因為 VBird 預(yù)設(shè)是以文字界面來登入,所以才會是 3 ,假如你要改成圖形界面登入的話(請確定你的 X-windows 沒有問題),那么就將 /etc/inittab 里面的上面那一行,將 3 改成 5 即可啰!
  
  那么什么是『單人維護(hù)模式 ( run-level 為 1 )』?假如你有玩過 Windows 的話,那么你在開機(jī)的時候假如按下 F8 時,不是會出現(xiàn)一些什么『安全模式』啦、『正常開機(jī)』啦或『 MS-DOS 模式』等等的進(jìn)入 Windows 的狀態(tài)嗎?尤其是當(dāng)你不正常關(guān)機(jī)的時候, Windows 預(yù)設(shè)就會以『安全模式』來激活 Windows 啰!Windows 的『安全模式』幾乎不加載一些復(fù)雜的模塊,讓你的 Windows 一定可以開機(jī)成功!那么 Linux 的維護(hù)模式狀態(tài)即是使用單人模式( 就是 run_level 為 1 啦!)所以說, Linux 的登入情況是如何呢?呵呵!沒錯,就是在這里加載的啦!
  · init 的第一個執(zhí)行內(nèi)容 /etc/rc.d/rc.sysinit :
  確定了登入狀態(tài)之后,再來當(dāng)然就是需要將主機(jī)的信息給他讀進(jìn)去 Linux 系統(tǒng)啰!而 Linux 系統(tǒng)的第一個資料內(nèi)容就是 /etc/rc.d/sysinit 這個檔案啦!假如你有空進(jìn)入這個檔案去看看的話,會發(fā)現(xiàn)這個檔案的內(nèi)容包括了==>設(shè)定預(yù)設(shè)路徑( PATH )、設(shè)定主機(jī)名稱、執(zhí)行 /etc/sysconfig/network 所記錄的網(wǎng)絡(luò)信息、掛載 /PRoc 這個保存在內(nèi)存當(dāng)中的主機(jī)基本訊息、以及其它幾個 Linux 操作系統(tǒng)最基本的幾個信息!大抵來說,他的基本工作是:
   
  1. 設(shè)定預(yù)設(shè)路徑:( PATH )
  2. 設(shè)定網(wǎng)絡(luò)狀態(tài):系統(tǒng)會再去讀取 /etc/sysconfig/network,并將該檔案內(nèi)的資料,如 NETWORKING, FORWARD_IPV4, HOSTNAME, DOMAINNAME, GATEWARY, GATEWAYDEV 等等的設(shè)定讀入系統(tǒng)中。
  3. 激活系統(tǒng)的置換空間(簡單的可以想成是虛擬內(nèi)存): swapping
  4. 檢查檔案系統(tǒng):這個時候系統(tǒng)會去檢查一些可能會存在的目錄,例如 /fsckoptions 與 /forcfsck 及 /fastboot 等等的目錄,當(dāng)你的系統(tǒng)有不正常關(guān)機(jī)的現(xiàn)象時(例如忽然的斷電等等),那么 Linux 將會自動的強(qiáng)制去檢查 root 的檔案系統(tǒng) ( checking root filesystems )。簡單的想一想,就好象是 Windows 系統(tǒng)下,當(dāng)你不正常關(guān)機(jī)時,在開機(jī)的過程中就會出現(xiàn)掃瞄硬盤的情況相同啦!
  5. 周邊設(shè)定與系統(tǒng)設(shè)定的參數(shù) ( /proc ):在 Linux 或者是 Unix 系統(tǒng)中,你會在根目錄中發(fā)現(xiàn)一個很希奇的扇區(qū),那就是 /proc 啰!其實這個目錄是記錄在內(nèi)存當(dāng)中的,每次開機(jī)的時候就會被建置起來。他的主要功能是記錄主機(jī)的一些接口設(shè)備的最新資料狀況!例如網(wǎng)絡(luò)周邊啦、輸入輸出周邊啦等等的。沒事的話,不要到里面亂砍喔!會有問題
  6. 設(shè)定 Plug and Play ( PNP )的一些參數(shù)資料;
  7. 清除 /etc/mtab ;
  8. mount root 及 /proc 檔案系統(tǒng) :好了,將一些資料都設(shè)定好之后,當(dāng)然就是需要將資料寫下來啰!這個時候就會將 root 與 /proc 資料給他 mount 上檔案系統(tǒng)啦!
  9. 決定是否使用模塊,
加載模塊
  10. 檢查檔案系統(tǒng) :與前面相同的,當(dāng)前面的 /fastboot 檢查的旗標(biāo)開啟之后,就會以 fsck 檢查你的

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 汤阴县| 施甸县| 西贡区| 南丰县| 无锡市| 尉犁县| 增城市| 迭部县| 育儿| 泗阳县| 奉新县| 武汉市| 弥渡县| 盐池县| 射洪县| 苍梧县| 固始县| 嘉定区| 游戏| 湘阴县| 开鲁县| 理塘县| 东乌珠穆沁旗| 长寿区| 富阳市| 平乐县| 满城县| 鹤壁市| 文成县| 长汀县| 宜春市| 嘉义市| 城固县| 甘泉县| 邻水| 平泉县| 临西县| 策勒县| 喀喇沁旗| 古丈县| 南溪县|