Linux管理員手冊(5)--引導和關機

本節說明當Linux系統引導和關機時發生了什麼,應該任何正確完成. 若是沒有遵循正確的過程, 文件可能損壞或丟失.   引導和關機概述   開啓計算機並致使其操做系統被加載的過程 叫引導. The name comes from an p_w_picpath of the computer pulling itself up from its bootstraps, but the act itself slightly more realistic.   啓動過程當中,計算機首先加載了一小段叫 bootstrap loader的程序,它依次加載和啓動操做系統, bootstrap loader一般存儲在硬盤或軟盤的固定的位置. 這2步過程的理由是操做系統大而複雜,而計算機加載的第一段代碼很小(幾百字節),以避免使固件沒必要要地複雜化.   不一樣的計算機的bootstrap不一樣. 對於PC, 計算機(它的BIOS)讀軟盤或硬盤的第一個扇區(叫 引導扇). bootstrap loader包含在這個扇區中. 它加載位於磁盤(和其餘)的其餘地方的操做系統.   Linux加載後, 它創始化硬件和設備驅動, 而後運行 init . init 啓動其餘進程以容許用戶登陸和作其餘事情. 這部分的細節在下面討論.   爲了關閉一個Linux系統, 首先全部進程被告知結束(這使他們關閉全部文件, 完成必要的其餘事情, 使之整齊地結束), 而後unmount文件系統和對換區, 最後打印能夠關掉電源的信息到控制檯. 若是沒有遵循正確的過程, 可怕的事情可能發生. 最重要的, 文件系統緩衝cache可能沒有回寫, 這意味着其中的全部數據將丟失, 磁盤上的文件系統不完整, 並可能不可用.   近觀引導過程   能夠從軟盤或硬盤引導Linux. 安裝和開始指南的安裝一節 ([Wel]) 告訴你如何安裝Linux, 並按你但願的方式引導.   當PC引導後, BIOS作一些測試保證一切正常, 而後開始真正的引導. 它選擇一個磁盤(一般是第一個軟驅, 若是有軟盤的話, 不然就是第一個硬盤, 若是安裝了的話; 順序是可設置的). 而後讀第一個扇區, 這叫引導扇; 對於硬盤, 也叫主引導記錄, 由於硬盤能夠包含多個分區, 每一個分區都有本身的引導扇.   引導扇包含一個小程序(小到能夠存入一個扇區), 它的責任是從磁盤讀入真正的操做系統並啓動之. 從軟盤啓動Linux時, 引導扇包含的代碼只讀前數百個數據塊(固然, 依賴於核心的大小)到預約的內存位置. Linux引導軟盤上, 沒有文件系統, 核心存在連續的扇區中, 由於這樣簡化了引導過程. 固然, 使用LILO(LInux LOader)能夠從文件系統引導.   從硬盤引導, 主引導記錄的代碼檢查分區表(也在主引導記錄扇區中), 確認活動分區(標記爲可引導的分區), 從該分區讀引導扇區, 而後啓動該引導扇區的代碼. 該分區的引導扇區的代碼作與軟盤所作的相同: 從該分區讀入核心並啓動. 但細節不一樣, 由於通常只給核心映象作一個單獨的分區是沒什麼用的, 因此分區引導扇中的代碼不能只順序地讀磁盤, 它必須找到文件系統把它們放在哪些扇區中. 有幾個方法解決這個問題, 但最一般的方法是使用LILO. (關於如何作的細節與這裏的討論無關; 更多的信息請看LILO文檔, 它很全面)   用LILO引導時, 它讀入並引導缺省核心. 也能夠設置LILO, 使之能引導若干個核心之一, 甚至其餘操做系統, 也能夠在引導時讓用戶選擇引導哪一個核心或操做系統. LILO能夠設置爲若是有人在引導時按住 alt, shift, or ctrl鍵 (LILO啓動時), LILO將不當即引導缺省的而問用戶引導哪一個. LILO能夠設置爲帶一個timeout選項並詢問, 當超時時, 就引導缺省核心.   META: 除了LILO還有其餘的引導載入程序, 如loadlin, 它們的信息將在下一版本中給出.   從軟盤和硬盤啓動各有優點, 但一般從硬盤啓動更好, 由於這避免了關於軟盤的爭論. 並且快. 然而, 安裝相同從硬盤啓動可能有更多的麻煩, 所以不少人先用軟盤引導, 而後當相同工做很好後, 再安裝LILO從硬盤引導.   Linux核心被讀入內存後, 才真正啓動了, 概述以下:   Linux核心是被壓縮安裝的, 因此它首先得解壓本身. 核心映象開頭包括一個解壓的小程序.   若是你有Linux可識別的super-VGA卡, 且支持一些特殊的文本模式(如100列40行), Linux會問你要用哪一個模式. 編譯核心時, 可能預約了一個視頻模式, 就不會問了. 這也能夠用LILO或 rdev 完成.   而後, 核心檢查還有什麼其餘硬件(硬盤, 軟盤, 網卡...), 並配置適當的設備驅動; 同時, 輸出查找結果的信息. 例如, 我引導時, 獲得相似以下信息:   LILO boot:   Loading linux.   Console: colour EGA+ 80x25, 8 virtual consoles   Serial driver version 3.94 with no serial options enabled   tty00 at 0x03f8 (irq = 4) is a 16450   tty01 at 0x02f8 (irq = 3) is a 16450   lp_init: lp1 exists (0), using polling driver   Memory: 7332k/8192k available (300k kernel code, 384k reserved, 176k data)   Floppy drive(s): fd0 is 1.44M, fd1 is 1.2M   Loopback device init   Warning WD8013 board not found at i/o = 280.   Math coprocessor using irq13 error reporting.   Partition check:   hda: hda1 hda2 hda3   VFS: Mounted root (ext filesystem).   Linux version 0.99.pl9-1 (root@haven) 05/01/93 14:12:20   精確的文本在不一樣系統上不一樣, 依賴硬件, Linux版本, 及其配置.   而後核心試圖mount根文件系統. 位置可在編譯時設置, 或在任什麼時候候使用 rdev 或LILO. 文件系統類型自動檢測. 若是根文件系統mount 失敗, 例如由於你忘了在覈心中包含相關的文件系統驅動, 核心將失敗, 系統中止(此時沒什麼可作了).   根文件系統一般被只讀mount(這可用與位置相同的方法). 這可以使文件系統在mount上時檢查; 檢查一個可讀寫的已mount的文件系統可不是個好主意.   而後, 核心在後臺啓動程序 init (位於/sbin/init ) (它的進程號是1). init 作許多啓動工做. 確切的事依賴於設置; 參見章瞭解更多信息. 它至少要啓動一些必要的後臺守候程序.   init 而後切換到多用戶模式並啓動getty ,提供虛擬控制檯和串行線. getty 是一個讓用戶經過虛擬控制檯和串行終端登陸的程序. init 還可能啓動一些其餘程序, 基於設置.   至此, 引導完成, 系統啓動並正常運行.   關於關機的更多信息   關閉Linux系統時,遵循正確的過程是很重要的。不然,文件系統可能成爲廢物,文件可能變成雜亂的。這是由於Linux使用磁盤緩存,並不當即將數據寫到磁盤,而是間歇地回寫。這極大地改善了性能,但同時也意味着若是你只是關閉電源,cache可能保留着大量數據,而磁盤上的數據可能不是一個所有的正在工做的文件系統(由於有些數據已經回寫到硬盤,而有些沒有)。   另外一個不能直接關閉電源的緣由是:在多任務系統中,後臺可能運行着不少東西,關閉電源可能損失慘重。使用正確的關機順序,能夠保證全部的後臺進程得以保存他們的數據。   正常關閉Linux系統的命令是shutdown 。它一般使用2種方法之一。   若是系統只有你一個用戶,使用shutdown 的一般方法是退出全部運行程序,從全部虛擬控制檯註銷,用root登陸(若是你已是root,固然沒必要再註銷、登陸,但應該換到根目錄,以避免因爲unmount出現問題),而後運行命令shutdown -h now (雖然單用戶時通常沒必要要,但若是須要一個延時,用一個加號加一個表示分鐘的數目代替now)   若是系統是多用戶,使用命令shutdown -h +time message, time是到系統中止的分鐘數,message是告知全部用戶系統關機緣由的短信息。   # shutdown -h +10 'We will install a new disk. System should   〉 be back on-line in three hours.'   #   上面的命令警告全部用戶,系統將在10分鐘後關閉,他們最好保存信息,不然將丟失。警告將顯示在全部登陸的終端上,包括全部的xterm 上:   Broadcast message from root (ttyp0) Wed Aug 2 01:03:25 1995...   We will install a new disk. System should   be back on-line in three hours.   The system is going DOWN for system halt in 10 minutes !!   警告在系統關閉前將自動重複數遍,隨着時間流逝,間隔愈來愈短。   當延時以後關閉系統真正開始時,全部文件系統(除了根)被unmount,全部用戶進程(若是有人還未註銷)被終止,守侯進程被關閉,全部東西都停下來。此後,init 打印出一條信息告知你能夠關掉電源了。此時,也只有在此時,你才能夠關閉電源。   有時(雖然在任何好的系統上極少),系統可能不能正常關閉。例如,核心紊亂、崩潰等不正常狀況,可能沒法鍵入任何命令,所以正常關機可能有些困難,這是隻能直接關機。問題可能沒那麼嚴重,好比,有人誤動了你的鍵盤,核心和update 程序還在正常運行,等待一些時間多是個好建議,這能使update 有機會將緩衝cache 中的數據回存硬盤,而後再直接關機。   有人喜歡用sync 三遍來關閉系統,等到磁盤I/O中止,而後在關閉電源。若是沒有什麼程序運行着,這和用shutdown 等效。然而,它不unmount任何文件系統,可能致使ext2fs的"乾淨文件系統"標誌出問題。這種3遍sync的方法是不推薦使用的。   (In case you're wondering: the reason for three syncs is that in the early days of UNIX, when the commands were typed separately, that usually gave sufficient time for most disk I/O to be finished.)   重啓動   重啓動就是徹底關閉系統,關掉電源,而後再打開。簡單方法是用shutdown 重啓動系統而不是僅中止系統。這要使用shutdown的 -r選項,例如命令shutdown -r now。   許多Linux系統在按ctrl-alt-del鍵時運行shutdown -r now。這是可設置的,好比在多用戶系統中設置必定的延時也許更好。若是是誰都能接觸到的系統,那麼最好設置爲按ctrl-alt-del什麼也不幹。   單用戶模式   shutdown命令也可用於切換到單用戶模式,這種模式誰也不能登陸,只有root可使用控制檯。這對系統通常運行時不能作的系統管理任務頗有用。單用戶模式將在章詳細討論。   緊急引導(軟)盤   並不是總能夠從硬盤引導。例如,LILO設錯了,系統可能就沒法引導。這時,須要另外一個總能引導的方法。對於典型的PC,多是軟驅。   許多Linux distributions容許在安裝時產生一張緊急引導盤emergency boot floppy。應該作。然而,有些這樣的引導盤只包含核心,and assume you will be using the programs on the distribution's installation disks to fix whatever problem you have。有時這些程序是不夠的:例如你可能須要回存你的備份,而備份/回存軟件在Linux安裝盤裏沒有。   所以,可能須要本身產生root盤。 Graham Chapman寫的Bootdisk HOWTO([Cha]) 包含關於此的指導。固然,你必須記得使你的緊急引導盤和root盤最新。   root盤被mount上時,不能用軟驅幹其餘任何事,所以若是你只有一個軟驅可能不太方便。然而,若是你有足夠的內存,能夠設置引導盤將root盤加載到RAM盤上(爲此,引導盤的核心須要特殊設置)。一旦root盤被加載到RAM盤中,軟驅就能夠用於mount其餘盤了。
相關文章
相關標籤/搜索