欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux 管理員手冊(5)

 更新時間:2006年10月24日 00:00:00   作者:  

    本節(jié)說明當Linux系統(tǒng)引導(dǎo)和關(guān)機時發(fā)生了什么,應(yīng)該任何正確完成. 如果沒有遵循正確的過程, 文件可能損壞或丟失.

    引導(dǎo)和關(guān)機概述

  開啟計算機并導(dǎo)致其操作系統(tǒng)被加載的過程 叫引導(dǎo). The name comes from an image of the computer pulling itself up from its bootstraps, but the act itself slightly more realistic.
啟動過程中,計算機首先加載了一小段叫 bootstrap loader的程序,它依次加載和啟動操作系統(tǒng), bootstrap loader通常存儲在硬盤或軟盤的固定的位置. 這2步過程的理由是操作系統(tǒng)大而復(fù)雜,而計算機加載的第一段代碼很小(幾百字節(jié)),以免使固件不必要地復(fù)雜化.

  不同的計算機的bootstrap不同. 對于PC, 計算機(它的BIOS)讀軟盤或硬盤的第一個扇區(qū)(叫 引導(dǎo)扇). bootstrap loader包含在這個扇區(qū)中. 它加載位于磁盤(和其他)的其他地方的操作系統(tǒng).

  Linux加載后, 它創(chuàng)始化硬件和設(shè)備驅(qū)動, 然后運行 init . init 啟動其他進程以允許用戶登錄和做其他事情. 這部分的細節(jié)在下面討論.

  為了關(guān)閉一個Linux系統(tǒng), 首先所有進程被告知結(jié)束(這使他們關(guān)閉所有文件, 完成必要的其他事情, 使之整齊地結(jié)束), 然后unmount文件系統(tǒng)和對換區(qū), 最后打印可以關(guān)掉電源的信息到控制臺. 如果沒有遵循正確的過程, 可怕的事情可能發(fā)生. 最重要的, 文件系統(tǒng)緩沖cache可能沒有回寫, 這意味著其中的所有數(shù)據(jù)將丟失, 磁盤上的文件系統(tǒng)不完整, 并可能不可用.

    近觀引導(dǎo)過程

  可以從軟盤或硬盤引導(dǎo)Linux. 安裝和開始指南的安裝一節(jié) ([Wel]) 告訴你如何安裝Linux, 并按你希望的方式引導(dǎo).

  當PC引導(dǎo)后, BIOS做一些測試保證一切正常, 然后開始真正的引導(dǎo). 它選擇一個磁盤(通常是第一個軟驅(qū), 如果有軟盤的話, 否則就是第一個硬盤, 如果安裝了的話; 順序是可設(shè)置的). 然后讀第一個扇區(qū), 這叫引導(dǎo)扇; 對于硬盤, 也叫主引導(dǎo)記錄, 因為硬盤可以包含多個分區(qū), 每個分區(qū)都有自己的引導(dǎo)扇.

  引導(dǎo)扇包含一個小程序(小到可以存入一個扇區(qū)), 它的責任是從磁盤讀入真正的操作系統(tǒng)并啟動之. 從軟盤啟動Linux時, 引導(dǎo)扇包含的代碼只讀前數(shù)百個數(shù)據(jù)塊(當然, 依賴于核心的大小)到預(yù)定的內(nèi)存位置. Linux引導(dǎo)軟盤上, 沒有文件系統(tǒng), 核心存在連續(xù)的扇區(qū)中, 因為這樣簡化了引導(dǎo)過程. 當然, 使用LILO(LInux LOader)可以從文件系統(tǒng)引導(dǎo).

  從硬盤引導(dǎo), 主引導(dǎo)記錄的代碼檢查分區(qū)表(也在主引導(dǎo)記錄扇區(qū)中), 確認活動分區(qū)(標記為可引導(dǎo)的分區(qū)), 從該分區(qū)讀引導(dǎo)扇區(qū), 然后啟動該引導(dǎo)扇區(qū)的代碼. 該分區(qū)的引導(dǎo)扇區(qū)的代碼做與軟盤所做的相同: 從該分區(qū)讀入核心并啟動. 但細節(jié)不同, 因為一般只給核心映象做一個單獨的分區(qū)是沒什么用的, 所以分區(qū)引導(dǎo)扇中的代碼不能只順序地讀磁盤, 它必須找到文件系統(tǒng)把它們放在哪些扇區(qū)中. 有幾個方法解決這個問題, 但最通常的方法是使用LILO. (關(guān)于如何做的細節(jié)與這里的討論無關(guān); 更多的信息請看LILO文檔, 它很全面)

  用LILO引導(dǎo)時, 它讀入并引導(dǎo)缺省核心. 也可以設(shè)置LILO, 使之能引導(dǎo)若干個核心之一, 甚至其他操作系統(tǒng), 也可以在引導(dǎo)時讓用戶選擇引導(dǎo)哪個核心或操作系統(tǒng). LILO可以設(shè)置為如果有人在引導(dǎo)時按住 alt, shift, or ctrl鍵 (LILO啟動時), LILO將不立即引導(dǎo)缺省的而問用戶引導(dǎo)哪個. LILO可以設(shè)置為帶一個timeout選項并詢問, 當超時時, 就引導(dǎo)缺省核心.

  META: 除了LILO還有其他的引導(dǎo)載入程序, 如loadlin, 它們的信息將在下一版本中給出.

  從軟盤和硬盤啟動各有優(yōu)勢, 但通常從硬盤啟動更好, 因為這避免了關(guān)于軟盤的爭論. 而且快. 然而, 安裝相同從硬盤啟動可能有更多的麻煩, 因此很多人先用軟盤引導(dǎo), 然后當相同工作很好后, 再安裝LILO從硬盤引導(dǎo).

  Linux核心被讀入內(nèi)存后, 才真正啟動了, 概述如下:


  Linux核心是被壓縮安裝的, 所以它首先得解壓自己. 核心映象開頭包括一個解壓的小程序.

  如果你有Linux可識別的super-VGA卡, 且支持一些特殊的文本模式(如100列40行), Linux會問你要用哪個模式. 編譯核心時, 可能預(yù)定了一個視頻模式, 就不會問了. 這也可以用LILO或 rdev 完成.

    然后, 核心檢查還有什么其他硬件(硬盤, 軟盤, 網(wǎng)卡...), 并配置適當?shù)脑O(shè)備驅(qū)動; 同時, 輸出查找結(jié)果的信息. 例如, 我引導(dǎo)時, 得到類似如下信息:

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 05/01/93 14:12:20

  精確的文本在不同系統(tǒng)上不同, 依賴硬件, Linux版本, 及其配置.
然后核心試圖mount根文件系統(tǒng). 位置可在編譯時設(shè)置, 或在任何時候使用 rdev 或LILO. 文件系統(tǒng)類型自動檢測. 如果根文件系統(tǒng)mount 失敗, 例如因為你忘了在核心中包含相關(guān)的文件系統(tǒng)驅(qū)動, 核心將失敗, 系統(tǒng)停止(此時沒什么可做了).

  根文件系統(tǒng)通常被只讀mount(這可用與位置相同的方法). 這可使文件系統(tǒng)在mount上時檢查; 檢查一個可讀寫的已mount的文件系統(tǒng)可不是個好主意.

  然后, 核心在后臺啟動程序 init (位于/sbin/init ) (它的進程號是1). init 做許多啟動工作. 確切的事依賴于設(shè)置; 參見章了解更多信息. 它至少要啟動一些必要的后臺守候程序.

  init 然后切換到多用戶模式并啟動getty ,提供虛擬控制臺和串行線. getty 是一個讓用戶通過虛擬控制臺和串行終端登錄的程序. init 還可能啟動一些其他程序, 基于設(shè)置.

  至此, 引導(dǎo)完成, 系統(tǒng)啟動并正常運行.

關(guān)于關(guān)機的更多信息

  關(guān)閉Linux系統(tǒng)時,遵循正確的過程是很重要的。否則,文件系統(tǒng)可能成為廢物,文件可能變成雜亂的。這是因為Linux使用磁盤緩存,并不立即將數(shù)據(jù)寫到磁盤,而是間歇地回寫。這極大地改善了性能,但同時也意味著如果你只是關(guān)閉電源,cache可能保留著大量數(shù)據(jù),而磁盤上的數(shù)據(jù)可能不是一個全部的正在工作的文件系統(tǒng)(因為有些數(shù)據(jù)已經(jīng)回寫到硬盤,而有些沒有)。

  另一個不能直接關(guān)閉電源的原因是:在多任務(wù)系統(tǒng)中,后臺可能運行著很多東西,關(guān)閉電源可能損失慘重。使用正確的關(guān)機順序,可以保證所有的后臺進程得以保存他們的數(shù)據(jù)。

  正常關(guān)閉Linux系統(tǒng)的命令是shutdown 。它通常使用2種方法之一。

  如果系統(tǒng)只有你一個用戶,使用shutdown 的通常方法是退出所有運行程序,從所有虛擬控制臺注銷,用root登錄(如果你已經(jīng)是root,當然不必再注銷、登錄,但應(yīng)該換到根目錄,以免由于unmount出現(xiàn)問題),然后運行命令shutdown -h now (雖然單用戶時一般不必要,但如果需要一個延時,用一個加號加一個表示分鐘的數(shù)目代替now)

  如果系統(tǒng)是多用戶,使用命令shutdown -h +time message, time是到系統(tǒng)停止的分鐘數(shù),message是告知所有用戶系統(tǒng)關(guān)機原因的短信息。

# shutdown -h +10 'We will install a new disk. System should
> be back on-line in three hours.'
#

  上面的命令警告所有用戶,系統(tǒng)將在10分鐘后關(guān)閉,他們最好保存信息,否則將丟失。警告將顯示在所有登錄的終端上,包括所有的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 !!

  警告在系統(tǒng)關(guān)閉前將自動重復(fù)數(shù)遍,隨著時間流逝,間隔越來越短。

  當延時之后關(guān)閉系統(tǒng)真正開始時,所有文件系統(tǒng)(除了根)被unmount,所有用戶進程(如果有人還未注銷)被終止,守侯進程被關(guān)閉,所有東西都停下來。此后,init 打印出一條信息告知你可以關(guān)掉電源了。此時,也只有在此時,你才可以關(guān)閉電源。

  有時(雖然在任何好的系統(tǒng)上極少),系統(tǒng)可能不能正常關(guān)閉。例如,核心紊亂、崩潰等不正常情況,可能無法鍵入任何命令,因此正常關(guān)機可能有些困難,這是只能直接關(guān)機。問題可能沒那么嚴重,比如,有人誤動了你的鍵盤,核心和update 程序還在正常運行,等待一些時間可能是個好建議,這能使update 有機會將緩沖cache 中的數(shù)據(jù)回存硬盤,然后再直接關(guān)機。

  有人喜歡用sync 三遍來關(guān)閉系統(tǒng),等到磁盤I/O停止,然后在關(guān)閉電源。如果沒有什么程序運行著,這和用shutdown 等效。然而,它不unmount任何文件系統(tǒng),可能導(dǎo)致ext2fs的"干凈文件系統(tǒng)"標志出問題。這種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.)

    重啟動

  重啟動就是完全關(guān)閉系統(tǒng),關(guān)掉電源,然后再打開。簡單方法是用shutdown 重啟動系統(tǒng)而不是僅停止系統(tǒng)。這要使用shutdown的 -r選項,例如命令shutdown -r now。

  許多Linux系統(tǒng)在按ctrl-alt-del鍵時運行shutdown -r now。這是可設(shè)置的,比如在多用戶系統(tǒng)中設(shè)置一定的延時也許更好。如果是誰都能接觸到的系統(tǒng),那么最好設(shè)置為按ctrl-alt-del什么也不干。


    單用戶模式

  shutdown命令也可用于切換到單用戶模式,這種模式誰也不能登錄,只有root可以使用控制臺。這對系統(tǒng)一般運行時不能做的系統(tǒng)管理任務(wù)很有用。單用戶模式將在章詳細討論。

    緊急引導(dǎo)(軟)盤

  并非總可以從硬盤引導(dǎo)。例如,LILO設(shè)錯了,系統(tǒng)可能就無法引導(dǎo)。這時,需要另一個總能引導(dǎo)的方法。對于典型的PC,可能是軟驅(qū)。

  許多Linux distributions允許在安裝時產(chǎn)生一張緊急引導(dǎo)盤emergency boot floppy。應(yīng)該做。然而,有些這樣的引導(dǎo)盤只包含核心,and assume you will be using the programs on the distribution's installation disks to fix whatever problem you have。有時這些程序是不夠的:例如你可能需要回存你的備份,而備份/回存軟件在Linux安裝盤里沒有。

  因此,可能需要自己產(chǎn)生root盤。 Graham Chapman寫的Bootdisk HOWTO([Cha]) 包含關(guān)于此的指導(dǎo)。當然,你必須記得使你的緊急引導(dǎo)盤和root盤最新。

  root盤被mount上時,不能用軟驅(qū)干其他任何事,因此如果你只有一個軟驅(qū)可能不太方便。然而,如果你有足夠的內(nèi)存,可以設(shè)置引導(dǎo)盤將root盤加載到RAM盤上(為此,引導(dǎo)盤的核心需要特殊設(shè)置)。一旦root盤被加載到RAM盤中,軟驅(qū)就可以用于mount其他盤了。

 

 

相關(guān)文章

最新評論