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

Linux管理員手冊(5)--引導(dǎo)和關(guān)機(jī)

 更新時(shí)間:2006年10月24日 00:00:00   作者:  
本節(jié)說明當(dāng)Linux系統(tǒng)引導(dǎo)和關(guān)機(jī)時(shí)發(fā)生了什么,應(yīng)該任何正確完成. 如果沒有遵循正確的過程, 文件可能損壞或丟失.

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

  開啟計(jì)算機(jī)并導(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.
  啟動(dòng)過程中,計(jì)算機(jī)首先加載了一小段叫 bootstrap loader的程序,它依次加載和啟動(dòng)操作系統(tǒng), bootstrap loader通常存儲(chǔ)在硬盤或軟盤的固定的位置. 這2步過程的理由是操作系統(tǒng)大而復(fù)雜,而計(jì)算機(jī)加載的第一段代碼很小(幾百字節(jié)),以免使固件不必要地復(fù)雜化.

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

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

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

  近觀引導(dǎo)過程

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

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

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

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

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

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

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

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


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

  如果你有Linux可識(shí)別的super-VGA卡, 且支持一些特殊的文本模式(如100列40行), Linux會(huì)問你要用哪個(gè)模式. 編譯核心時(shí), 可能預(yù)定了一個(gè)視頻模式, 就不會(huì)問了. 這也可以用LILO或 rdev 完成.
  然后, 核心檢查還有什么其他硬件(硬盤, 軟盤, 網(wǎng)卡...), 并配置適當(dāng)?shù)脑O(shè)備驅(qū)動(dòng); 同時(shí), 輸出查找結(jié)果的信息. 例如, 我引導(dǎo)時(shí), 得到類似如下信息:

  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

  精確的文本在不同系統(tǒng)上不同, 依賴硬件, Linux版本, 及其配置.
  然后核心試圖mount根文件系統(tǒng). 位置可在編譯時(shí)設(shè)置, 或在任何時(shí)候使用 rdev 或LILO. 文件系統(tǒng)類型自動(dòng)檢測. 如果根文件系統(tǒng)mount 失敗, 例如因?yàn)槟阃嗽诤诵闹邪嚓P(guān)的文件系統(tǒng)驅(qū)動(dòng), 核心將失敗, 系統(tǒng)停止(此時(shí)沒什么可做了).

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

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

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

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

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

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

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

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

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

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

  # 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)閉前將自動(dòng)重復(fù)數(shù)遍,隨著時(shí)間流逝,間隔越來越短。

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

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

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

  重啟動(dòng)

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

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


  單用戶模式

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

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

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

  許多Linux distributions允許在安裝時(shí)產(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。有時(shí)這些程序是不夠的:例如你可能需要回存你的備份,而備份/回存軟件在Linux安裝盤里沒有。

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

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

相關(guān)文章

最新評(píng)論