直接加載是指操作系統啟動時控制權交給開機管理程序時,立即加載操作系統的內容的加載方式。這種加載方式的基本流程是開機管理程序、操作系統內核。也就是說中間沒有多余的環節,在加載過程中,沒有中間步驟介于開機管理程序與操作系統內核之中。為此就被叫做直接加載。
間接加載則與直接加載不同。間接加載是指開機管理程序僅單的指到存放操作系統分區上的第一個扇區,然后由第一個扇區內的程序代碼去加載操作系統內和。其流程為開機管理程序、操作系統上的第一個扇區上的代碼、操作系統內核。與直接加載模式的流程進行比較,就可以發現其中間多了一個環節,即執行操作系統上的第一個扇區上的代碼。
雖然這看起來只是一個很小的差異,但是對于雙系統安裝來說有很大的影響。因為微軟的操作系統只支持間接加載模式。在安裝微軟操作系統時,Windows操作系統會完全覆蓋MBR引導記錄,并破壞現有的開機程序。為此如果先安裝Linux操作系統,然后再安裝Windows操作系統,則就會破壞原有的開機程序,導致Linux操作系統無法啟動,更嚴重者兩個操作系統都將無法啟動。為此在安裝多個操作系統的時候,最好能夠先安裝Windows操作系統,然后再安裝Linux操作系統。因為Linux操作系統其支持直接加載和間接加載兩種開機方式。當在部署有Windwos操作系統的時候,系統會自動采用間接加載模式,其與Windows操作系統兼容。而在沒有Windows操作系統的時候,其默認會采用直接加載方式,以提高系統開機的效率。
一、修復Linux的開機引導程序。
如果先安裝Linux操作系統,然后再按照Windows操作系統,導致Linux操作系統無法啟動(或者兩者都無法啟動),此時需要重新安裝操作系統來解決問題呢?答案是否定的。可以有許多方式來修復Linux操作系統的開機引導程序。不過開機程序的種類不同,其修復的方式略有差異。筆者這里以Linux操作系統上最有名的GRUB開機管理程序為例,談談如何進行修復。
為了讓操作系統內核能夠順利加載到內存中,就需要有一個開機管理程序來進行加載與初始化。Grub在其中就是起到這個作用。通過GRUB的操作界面,可以選取加載一種操作系統或者Linux操作系統內核,以及傳遞或者查看操作系統參數到內核中。當GURB開機管理程序決定啟動的操作系統時,這個操作系統開機管理程序就會將其加載到內存,并將機器控制權交給被其啟動的操作系統。
為此如果操作系統無法正常啟動,如果排除硬件方面的故障原因之外,則最大的可能就是由于開機管理程序中的MBR開機記錄損壞所致。很多原因都可能導致這個記錄被損壞或者覆蓋。如病毒的原因,意外死機等等。不過大部分情況下,這都是由于人為的因數所造成的。如在安裝操作系統時,選擇的順序不對或者安裝的方式不對,從而導致原有的MBR引導記錄被不小心覆蓋。通常情況下,如果先安裝Linux操作系統,然后再安裝Windows操作系統,都會遇到這種故障。因為在安裝Windows操作系統的過程中,會將原有的MBR記錄覆蓋掉,從而導致系統無法啟動。
遇到這種情況時,最簡單的方式就是利用應急軟盤來修復故障。如在安裝完Linux操作系統后,系統都會提醒系統管理員建立一張系統啟動盤。通過這張軟件可以修復大部分的啟動錯誤。如發生這種MBR引導記錄被覆蓋而無法啟動的情況,則可以插入這張啟動啟動盤,然后執行grub-install /dev/hda命令,系統就會自動重新安裝MBR程序代買,從而讓操作系統能夠在不重新安裝的情況下恢復正常啟動。
二、其他原因導致的Linux操作系統無法啟動問題的解決方法。
除了由于雙系統安裝順序選擇不當,導致操作系統無法啟動之外,還有很多原因也會導致操作系統無法啟動。筆者這里就舉一些簡單的例子,給大家解決問題出一個思路。
如由于丟失initrd目錄而導致操作系統無法啟動。有時候Linux操作系統啟動過程中,會提示一個錯誤信息:umount /initrd/proc failed(不能夠掛載initrd目錄),然后操作系統就無法正常啟動了。發生這種啟動錯誤的原因主要是在系統根目錄下由于某些錯誤的操作導致initrd目錄的丟失。只要這個目錄被不小心刪除了,則此時系統已經無法正常啟動。遇到這種情況時,我們系統管理員不需要重新安裝操作系統,可以使用安裝盤或者引導盤進入linux操作系統的恢復模式下。如使用的是redhat操作系統,則就可以直接F5,然后在命令行窗口中輸入linux rescue命令,即可以進入rescue(修復)模式。進入到修復模式后,系統管理員需要輸入命令:chroot /mnt/sysimage,,以進入原系統目錄。然后在根目錄下新建一個目錄initrd(注意必需全部都是小些,字母一個都不能夠差),然后重新啟動操作系統,就可以順利啟動了。其實這個Linux操作系統的修復模式跟微軟操作系統的修復控制臺類似,都可以用來解決操作系統無法啟動的問題。 #p#分頁標題#e#
另外有些Linux操作系統安裝程序存在著一定的Bug,即使先安裝Windows操作系統,然后再安裝Linux操作系統,安裝成功后仍然會遇到Windows操作系統無法啟動的問題。此時通常情況下,Linux操作系統仍然會正常啟動。遇到這種情況時,該如何處理呢?這往往需要根據錯誤提示來判斷到底問題出在哪里,然后再有針對性的采取解決措施。如有時候,部署完雙系統后,啟動Windows操作系統時,會出現“/system32/hal.dll損壞或失敗,清重新安裝拷貝”等類似的錯誤信息。其實,如果遇到這個錯誤信息的話,并不是Linux操作系統的錯。這主要是微軟的采用的開機管理程序靈活性不強所導致的,也就是說,并不是Linux操作程序引起的問題。導致這個問題的主要原因是硬盤分區數變動后(安裝Linux操作系統可能需要刪除原有的分區并進行格式化歸Linux操作系統使用),引導分區號發生了變化。而此時Windows操作系統的啟動配置文件boot.int 中使用ARC法表示分區。這種標示方法是一種基于編號的磁盤表示方法。為此,當分區號發生了變化之后,開啟管理程序就無法識別這個配置分區所表示的內容,從而導致Windows操作系統無法啟動。通常情況下,如果部署的是多個版本的Linux操作系統的話,就不會發生這個問題。
遇到這個問題該如何解決呢?解鈴人還須系鈴人,此時還需要Windows啟動盤的幫助。如可以在控制臺下修復boot.int文件;也可以通過覆蓋安裝來修復啟動配置文件;也可以利用Windows操作系統的安裝CD來啟動操作系統進行修復。如利用CD啟動進入到DOS模式,然后使用map arc命令得到正確的磁盤映射關系。再根據這個信息來修改boot.ini配置文件即可。在解決這個問題的過程中,基本上沒有多Linux操作系統的內容進行更改。可見,這主要是Windwos操作系統的問題所引起的。所以根據系統啟動的錯誤提示,然后來判斷問題到底出在哪里,在采取對應的措施來進行解決。如此才能夠對癥下藥,解決系統啟動錯誤問題。