Linux 管理員手冊(5)

來源:互聯網
上載者:User

本節說明當Linux系統引導和關機時發生了什麼,應該任何正確完成. 如果沒有遵循正確的過程, 檔案可能損壞或丟失.

引導和關機概述

  開啟電腦並導致其作業系統被載入的過程 叫引導. The name comes from an image 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 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其他盤了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.