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其他盤了。
引導(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其他盤了。
您可能感興趣的文章:
- PHP程序員玩轉(zhuǎn)Linux系列 nginx初學(xué)者引導(dǎo)
- nasm實(shí)現(xiàn)的用vmware運(yùn)行自做的linux啟動(dòng)盤的引導(dǎo)代碼
- Linux的引導(dǎo)過程剖析
- linux系統(tǒng)命令筆記整理
- Linux系統(tǒng)用戶管理命令小結(jié)
- Linux系統(tǒng)清除緩存的方法總結(jié)
- linux系統(tǒng)sudo命令詳解
- Linux系統(tǒng)刪除文件夾和文件的命令
- linux系統(tǒng)下dd命令的使用方法
- Linux系統(tǒng)中sudo命令的十個(gè)技巧總結(jié)
- linux引導(dǎo)系統(tǒng)的方法分析
相關(guān)文章
CentOS 7.0關(guān)閉默認(rèn)防火墻啟用iptables防火墻的設(shè)置方法
這篇文章主要介紹了CentOS 7.0關(guān)閉默認(rèn)防火墻啟用iptables防火墻的設(shè)置方法,需要的朋友可以參考下2017-11-11使用CentOS 7.5卸載自帶jdk安裝自己的JDK1.8的過程
這篇文章主要介紹了使用CentOS 7.5卸載自帶jdk安裝自己的JDK1.8 的過程,本文通過安裝步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11