2006年(25)
分类: LINUX
2006-09-09 11:35:40
開機和關機誰不會哦﹖哈哈﹐不一定哦~~~
您或許會發現安裝完 Linux 之後﹐原來的 Windws 開機畫面不見了﹗那~~ 怎麼回去啊﹖
不知道不緊要啦。當機器開著之後﹐在您看到 RedHat 的開機選單﹐移動上下方向鍵選擇您要進入的系統就可以了﹔如果您這時候按 Ctl+X 鍵﹐則會得到 LILO Boot: 的提示(後面我們提到‘單人模式’的時候會用到)﹐然後按 Tab 鍵﹐也可以看到開機的各項選擇。假如您的系統是按照前面的例子進行安裝的話﹐應該會看到 Linux 和 win(您在安裝時所取的名稱) 這兩項。如果要進入 Linux﹐可以輸入 Linux 再 Enter﹐或直接按 Enter(因為此例中 Linux 被選擇為預設系統了)﹔如果您要進入 Windows﹐可以輸入 win 再按 Enter。
剛纔提到的 LILO﹐是 Linux 安裝在機器上面的系統載入程式﹐取名於 LInux LOader 的前兩個字母的組合。根據我們在安裝的時候所選擇﹐目前 LILO 安裝在系統的 MBR (Master Boot Record)﹐也就是開機磁碟的第一個 Cylinder 之第一個 Sector 之上。MBR 所存放的 loader﹐是用來告訴機器在啟動之後要載入那個系統﹐和到哪裡載入。除了 LILO 之外﹐其實我們也有許多其它 loader 可以選擇﹐例如 NT 的 NT Loader﹑System Commander﹑Boot Magic﹑以及國人所寫的 spfdisk﹑等等。假如您已經採用別的 loader 而不是 LILO﹐那您在安裝的時候﹐就要確定您的 LILO 是裝在 /boot partition (所謂的 super block)上面而不是 MBR (後面我會介紹用 NT loader 來載入 Linux 的方法)。無論您用哪個 loader﹐也不管 LILO 裝在 MBR 還是 supper block﹐在一些新的大容量硬碟上面(通常超過 8G)﹐要注意 /boot 分區所在位置不要超過 1024 磁柱的範圍。不過﹐新的 Linux 啟動程式都允許超出這個限制﹐只需確定磁碟使用 LBA 模式﹐以及在 LILO 上使用 lba32 選項就可以了(這個以後我們在談到 LILO 的設定時再說明)。
|
有些朋友﹐在碰到多重系統安裝的時候﹐會覺得有些疑惑﹐或許只是對 OS loader 不甚了解而已﹐單純將安裝順序換成﹕先 windows 後 linux 就可以了。
為什麼﹖那要知道各 OS 放在 MBR 裡面的 loader 能力了。一般的 OS loader﹐都會提供開機選單﹐讓您選擇用什麼系統開機﹐以及開機系統放在硬碟的什麼位置上。比如﹐linux 的 LILO 就有這個功能﹕它除了開 linux 之外﹐還提供一個選單﹐給您開Windows。但 windows 的 loader 卻不然﹐它的 loader 只能開 windows 而不讓您有選單開 linux。(真是不公平哦~~)
而 OS loader 一般都放在 MBR 位置上﹐也就是第一個 cylinder 的第一個 sector 上面﹐這樣﹐系統順利通過 BIOS 之後﹐就會到這裡讀入硬碟的開機資訊﹐也就是載入loader 。在 MBR 上面﹐每次只能放一個 loader﹐如果您先放 windows 的 loader﹐然後放 linux 的﹐MBR 的 loader 就變成是 LILO﹐那您就有一個選單來選擇開機系統。如果先灌 linux 再 windows﹐那 MBR 的 loader 是 windows 的﹐因而沒有選單選擇﹐只能進入 windows。
不過﹐Linux 的 LILO﹐除了放在 MBR 之外﹐還可以放在 boot 的 partition 上面的第一個 block﹐也就是所謂的 superblock是也。那您在安裝的時候﹐就要將 LILO 裝在 boot 的 partition 上面﹔或是修改 /etc/lilo.conf ﹐將 boot=hda 改成boot=hda2 (假設您的 boot partition 是在 hda2 上面)﹐然後再執行 lilo 命令就可以完成。
假如您真的將 LILO 裝在 superblock 上面﹐那您在 MBR 上面的 loader 必須有能力提供選單﹐而且能夠告訴系統到哪裡找到 LILO。抱歉﹐windows 的 loader 都沒有這個能力。其它諸如 partition magic 或 spfdisk 之類的 loader﹐則有這個功能﹐但前提條件是﹕您的 LILO 要裝在 superblock 上面。
當您在 LILO 選擇 Linux之後﹐您會看到一大堆開機過程的報告﹐有興趣可以逐行看看(假如您眼睛夠快的話)。如果開機過程卡在某些服務上面而等上好幾分鐘的話﹐可能您的網路設定不正確﹐最常見的問題是 /etc/hosts 或 DNS沒設定好。為避免這些情況﹐請確定機器在開機的時候﹐啟動程式能夠能連得上指定的伺服器地址。
最終﹐您會看到 Login: 的提示﹐如果您的 X window 在安裝的時候設定好了﹐那麼登錄畫面會是圖形界面的。這時候您可以用 ‘ root ’進行登錄﹐然後輸入您在安裝時設定的 root 密碼。之後﹐整個 Linux系統就是您的啦﹗
至於機器如何從啟動到成功載入﹐如果我們對這個過程了解的話﹐相信在日後的管理﹐或遇到問題的時候會非常有幫助。下面不妨讓我們看看 Linux 的開機過程和其中的一些選項。
系統的初始化步驟粗略如下﹕
"繼續頹廢" |
以上就是大致的開機流程﹐其中我省略了許多步驟﹐如果您有興趣研究的話﹐不妨深入追蹤一下 /etc/rc.d/rc.sysinit 這個檔案。
您要知道有問題的 partiton 是那一個(幾個)﹖比方說您現在碰到 / 有問題﹐假設它在 /dev/hda6 上面﹐那您就輸入﹕
fsck /dev/hda6 |
然後要回答許多問題﹐一直按 y 就是了﹔如果您不想按 y ﹐那就輸入﹕
fsck -y /dev/hda6 |
不過﹐小心哦﹕有時候第一個問題可能告訴您一些警告﹐然後說按 y 進行 cancel﹐那您就只好第一個按 n﹐然後逐個按 y 了。
假如您對上面的描述不是很理解﹐不用擔心﹐儘可略過您不懂的對方﹐等日後對系統有更充份的了解之後﹐再回來重拾靈感好了。不過﹐對開機過程的了解程度﹐會影像到您日後的系統管理和調整技巧﹐尤其是在進行除錯的時候。建議您最好將開機過程了解透切一些﹐是絕對有百利而無一害的。
好了﹐前面提到過 這個詞﹐究竟是什麼東東呢﹖嗯﹐如果您以前玩過 DOS﹐為不同游戲設定過不同的開機環境﹐或許比較容易了解。要不然﹐您可以簡單的認為﹕run level 就是不同的系統啟動配置﹐不同的 run level 會讓系統執行不同的服務和設定﹐最後獲得的環境和功能也不一樣。系統每次開機﹐只能進入其中一個 run level 而已﹐您可以在 LILO 提示的時候指定要進入哪個 level (或是在啟動時看到紅色的 RedHat 文字時按 i 鍵)﹐也可以調整 /etc/inittab 的設定來指定系統的預設 level (號碼)。不同的廠商﹐其 run leve 的號碼不太一樣﹐如果以 RedHat 為例﹐號碼所代表的 run level 如下﹕
以上這些號碼﹐分別對應不同的系統配置。在 /etc/inittab 檔案中﹐您會找到一行句子如﹕
id:5:initdefault: |
其中的數字 5 所代表的就是系統預設的 run level﹐這裡就是圖形界面﹐當您的系統完成啟動之後﹐您會看到 X window 的登錄畫面。如果您要將預設界面換成文字模式﹐那只要將 5 換為 3 就可以﹐這樣下次開機就會進入文字界面﹔當然﹐如果您換成 0 的話﹐那每次啟動完畢就會關機﹐這可不好玩哦~~~
有時候﹐因為系統的設定錯誤﹐或是檔案損壞﹐您可能必須進入單人模式進行一些維護工作。比方說﹐您的 root 密碼忘了﹐那您可以到 LILO 提示那裡(開機選單按 Ctl+X)﹐然後輸入﹕
linux -s |
這樣啟動完成後就會進入 run level 1﹐這裡您是無須登錄就具備 root 權限的了﹐然後您輸入 passwd root 就可以重新設定 root 的密碼了。不過﹐這個便利也變成一個系統的安全問題。此時﹐如何確保您的系統不被外人實體上接觸到就顯得非常重要了﹐否則﹐別人只要重新啟動機器就可以為所欲為了。小心小心﹗如果您想在單人模式中也需要密碼檢驗﹐那可以修改 /etc/inittab 這個檔案﹐在 si:: sysinit:... 那行句子後面另外增加一行設定﹕
修改前﹕ si::sysinit:/etc/rc.d/rc.sysinit 修改後﹕ si::sysinit:/etc/rc.d/rc.sysinit ~~:S:wait:/sbin/sulogin |
不過﹐這樣您就一定不能將 root 密碼忘記囉~~~ ^_^
另外﹐有些系統預設上並不使用 LILO 而使用另一套名為 GRUB 的開機管理程式來載入核心。要進入單人模式的方法和 LILO 有所不同﹐基本的步驟如下﹕
1﹐移動方向鍵選擇正確的 Linux 選單後 按"e" 2﹐再選擇以 kernel 開頭的句子(通常為二行)﹐再按"e" 3﹐並將游標移到該行行尾﹐並輸入一個空白鍵和" -s" 4﹐按Enter 5﹐按"b"就能進入單人模式
如果您已經在一個 run level 裡面了﹐這時候要換到另一個 level 去﹐除了重新開機之外﹐您也可以直接用 init 命令來轉換﹐如輸入 init 1 就會切換到單人模式去﹐然後再輸入 init 3 就回到多人文字模式去。有機會不妨玩玩看。
那麼﹐究竟不同的 run level 是如何為系統配置出不同的環境呢﹖如果您有興趣知道的話﹐請看看 /etc/rc.d/ 目錄下面﹐分別有著 rcX.d 的子目錄﹐其中的 X 就是不同 run level 的號碼了。然後再看看 rcX.d 目錄裡面的檔案﹐您會發現有兩類檔案﹕其一是以 S 開頭的﹐而另外則是以 K 開頭的。這些檔案都是一些 script﹐如果以 S 開頭的話﹐那是在進入(Startup)該 level 的時候要執行的﹐其執行順序是根據 S 後面的數字來決定﹐數值越小﹐越被優先執行。您千萬不要隨便亂改這些數字哦﹐因為有些 script 之間是有相依關係的﹐必須等前面的 script 執行妥當之後﹐才能執行後面的 script。而那些以 K 開頭呢﹖K 是 Kill 的意思﹐沒錯啦﹐就是在退出該 level 的時候要執行的﹐順序也是以數字為依據。
chkconfig --level 3 pcmcia on chkconfig --level 3 pcmcia off chkconfig --level 3 --del pcmcia |
第一個命令是在 run level 3 將 pcmcia 服務打開(也就是設定為 S 開頭的服務)﹔第二行則是關閉(也就手設定為 K 開頭)﹔第三行則將之刪除(沒有 S 也沒有 K )。透過靈活的組合﹐您可以輕鬆的控制各個 run level 所執行的服務程式。建議您 man chkconfig 詳細看看它的用法。
不過﹐並不是所有寫在 /etc/rc.d/init.d 的 deamon 都能使用 chkconfig 來設定哦﹐您必須包含如下兩個句子在檔案中(缺一不可)﹕
# chkconfig: 2345 80 20 # description: decsription about the daemon |
要注意﹕這兩句前面的 ‘ # ’符號不能拿掉哦﹗第一行的第一堆數字是說要作用於哪些 run level 上面﹔而中間的數字則是 link 到各 rcX.d 目錄後的以 " S " 開頭的數字﹔最後一組數字則是 " K " 開頭的數字。第二行可以隨便寫﹐關於 daemon 的說明文字就是了。
如果您仔細比較不同的 rcX.d 目錄﹐您會發現它們的 script 數目和順序都不太一樣﹗沒錯啦﹐就是這些不一樣才讓系統獲得不同的配置。不過﹐如果您再仔細檢查這些檔案﹐其實它們都是一些 links (這個我們在介紹檔案系統的時候再說)﹐歸跟結底﹐這些 script 都集中放在 /etc/rc.d/init.d/ 目錄裡面﹐然後根據不同的 level 而‘分身’在不同的 rcX.d 目錄中而已。這個﹐等我們日後對 script 和 links 有一定了解之後﹐就比較清楚了。如果您現在不大理解﹐那沒關係﹐知道不同的 run level 要對應到哪個 rcX.d 目錄就好。
除非您不想機器不用的時候還開著(如為了省電)﹐或是進行硬體更換﹐Linux 甚少需要關機的(有些 Linux 跑好幾年還好好的呢﹗)。不過﹐您知道怎樣關機嗎﹖
如果您在安裝過程中能夠正確設定好 XWindow﹐並且選擇了開機進入 X﹐或許您還能找到關機的門徑(和 windows 和像)。不過﹐通常來說﹐除非是天才﹐在第一次使用 Linux 的時候(之前也沒 Unix 或 Novell 經驗)﹐還真不知道怎麼關機哦﹗(哈哈﹐指我自己啦~~~ ^_^ 見笑見笑﹗)
不過﹐各位根據剛纔的 run level 和 init 命令﹐或許也不難找出關機的辦法吧﹖輸入 init 0 就可以了﹗不過﹐這其實不是一個正確的關機辦法﹐ 如果您輸入下面這個指令﹕
shutdown --help |
您會看到好些選項﹐請看看各項的意思。如果您要立即將機器關掉的話﹐建議您輸入﹕
shutdown -h now |
如果用 r 代替 h 的話﹐會進行重新啟動﹐不過﹐您可以用 reboot 這個指令代替﹐或可以按 ctl+alt+del (這個也不建議使用﹐更要注意所有資料已回存好和程式都關閉妥當)。
在某些舊系統中﹐您還必須執行 sync 命令多次﹐以確定所有資料都回存到硬碟中﹐才可以進行關機的動作。不過﹐如果您用 shutdown 或 reboot 命令的話﹐就不需擔心這個了。
From: "leo" |
等您已經會得正常的開機和關機之後﹐我才可以說﹕您可以放心進行學習了。