window linux雙系統啟動問題
如果你安裝了Windows,然後又安裝了Linux,並且把grub安裝到mbr,然後在非順利關機(有時重啟也會)後無法進入任何一個系統只顯示一個"grub>_"提示符。
這是由於你的mbr損壞造成的,mbr錯誤之後無法進入任何一個系統,只顯示一個"grub>_"提示符。
讓我們輸入root分區。在提示中輸入root,但不要按 Enter 鍵:
grub> root (
現在,按一次 Tab 鍵。如果系統中有多個硬碟,GRUB將顯示可能完成的列表,從 "hd0"開始。如果只有一個硬碟,GRUB 將插入 "hd0,"。如果有多個硬碟,繼續進行,在 ("hd2") 中輸入名稱並在名稱後緊跟著輸入逗號,但不要按 Enter 鍵。部分完成的 root 命令看起來如下:
grub> root (hd0,
現在,繼續操作,再按一次 Tab 鍵。GRUB 將顯示特定硬碟上所有分區的列表,以及它們的檔案系統類型。在我的系統中,按 Tab 鍵時得到以下列表:
grub> root (hd0, (tab)
Possible partitions are:
Partition num: 0, Filesystem type is ext2fs, partition type 0x83
Partition num: 1, Filesystem type unknown, partition type 0x82
Partition num: 2, Filesystem type unknown, partition type 0x7
Partition num: 4, Filesystem type is reiserfs, partition type 0x83
Partition num: 5, Filesystem type is reiserfs, partition type 0x83
如您所見,GRUB 的互動式硬碟和分區名稱實現功能非常有條理。這些,只需要好好理解 GRUB 新奇的硬碟和分區命名文法,然後就可以繼續操作了。
裝入核心
grub>
要啟動一個作業系統,首先指定引導哪個分區上的系統,例如要引導指第一個硬碟上的第一個分區的作業系統,先鍵入
grub>root (hd0,0)
接著如果要啟動的是Windows系統,鍵入
grub>chainloader (hd0,0)+1
注意(hd0,0)要隨著硬碟和分區的不同而改變數字。 如果要引導Linux或其他系統,應鍵入
grub>kernel (hd0,0)/boot/vmlinuz root=/dev/hda1
注意hda1參數也要隨著硬碟和分區的不同而改變,如從第二個硬碟的第一個分區引導則用hdb1。
最後敲入boot就可以啟動系統了。
在任何時候不能確定命令或者命令的參數都可以按Tab獲得相關的協助。用上下鍵可以獲得命令的記錄。 其實這些命令就是menu.lst的啟動描述,您也可以根據那些描述來自己鍵入啟動命令,最後敲入boot就可以引導系統了。
我們這是需要進入Linux,進入之後,使用root登陸,進入之後開啟終端
命令如下(藍色為命令):
[root@localhost ~]# cd /boot/
[root@localhost boot]# grub
Probing devices to guess BIOS drives. This may take a long time.
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]
grub> root (hd0,0) 【這裡的(hd0,0)是我的Linux分區,你自己的要看Linux下的那個grub.conf檔案裡面root後面的】
root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 23 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 d (hd0) (hd0)1+23 p (hd0,0)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
Done.
grub> quit
quit
[root@localhost boot]#
重新啟動後就可以進入圖形化的grub了,至此完成mbr修複。
另註:修複之後不要急於重啟,現在我們來看看grub.conf(menu.lst)內容是否有問題一般有些小問題就是分區順序變了,所以要在grub.conf(menu.lst)改成對應的。
$ sudo grub
grub> root (hd0,0)
grub> setup (hd0)
grub> setup (hd1)
http://forum.ubuntu.org.cn/viewtopic.php?f=42&t=274182&start=30
安裝體驗,補充一下LZ的安裝方法,硬體環境Gateway p-79 raid0,硬碟上原有WIN7分區
Ubuntu 10.04對fakeraid安裝程式支援不好主要在兩個方面:1、無法對raid部分進行格式化(可以識別);2、grub 2 對fakeraid支援存在一定問題
是否使用LiveDVD並不是很重要,因為在可以在執行安裝前在LiveCD環境通過網路安裝"磁碟工具 + 生產力",Ubuntu 10.04對大部分的網卡或者無線網卡支援還是不錯的。
在安裝完磁碟工具 + 生產力後,對磁碟進行分區和格式化,之後執行安裝程式。安裝時不對分區進行格式化。安裝過程中無論怎麼對grub進行設定grub安裝均會失敗,需要結束後手動安裝grub。
之後按照LZ的方法,同樣也碰到了36樓的問題,在這種情況下,雖然會產生grub.cfg但grub安裝並未成功。折騰了一陣後採用安裝grub 1的方式解決。
幾個關鍵點如下(以下指令均需root許可權):
1、在chroot之後,重裝grub取代grub2
# apt-get install --purge grub
# cp /usr/lib/grub/i386/* /boot/grub/
2、將grub安裝在MBR上
# fdisk -l /dev/mapper/isw_xxxx // 查看當前RAID磁碟的物理資訊,注意這裡的isw_xxxx是raid array裝置映射,而不是具體的raid邏輯分區
查看類似“255 heads, 63 sectors/track, 19458 cylinders” 這樣的資訊,用筆記下。這段資訊比較重要,否則可能導致後面grub設定時發生問題
接下進入grub shell
# grub --no-curses
grub> device (hd0) /dev/mapper/isw_xxxx // 指定將grub安裝到MBR,這裡的isw_xxxx同上為裝置映射
grub> geometry (hd0) 19458 255 63 // 設定RAID磁碟的物理資訊,這裡如果資料不對,命令將不會有傳回值,否則將正確顯示邏輯分區情況。注意參數格式是C H S
grub> find /boot/grub/stage1 // 尋找Linux開機磁碟分割,記下傳回值,應該是類似(hd0,x)這樣表示邏輯分區的位置
grub> root (hd0,2) // 設定grub開機磁碟分割
grub> setup (hd0) // 將grub安裝於MBR上
grub> quit // 退出 grub shell
接下來配置menu.lst:
# update-grub // 產生grub設定檔
用nano編輯/boot/grub/menu.lst
尋找
# groot=(hd0,0)
改為
# groot=(hd0,2) // 就是find的執行結果,表示grub的開機磁碟分割
之後,對於多系統的使用者,還需要增加對其他系統的啟動選項
繼續尋找,“### BEGIN AUTOMAGIC KERNELS LIST”,在此之前加入其他系統的資訊,例如:
title Windows 7
rootnoverify (hd0,1) # use the correct partition for Windows!!!
makeactive
chainloader +1
注意,windows 7的開機磁碟分割為(hd0,1),如果是XP,應該是(hd0,0)
退出nano後繼續更新grub設定檔:
# update-grub
3.接下來對dmraid進行配置,產生新的initramfs,並在系統啟動時載入dmraid
# echo dm-raid4-5 >> /etc/initramfs-tools/modules
# update-initramfs -u
# echo dm-raid4-5 >> /etc/modules
之後需要注意的是,在chroot後,由於/的位置變更,導致需要對許可權進行重新設定,有耐心的可以分別設定,這裡用的是比較偷懶的辦法
chmod 775 /
chmod 775 /home/username
chown username /home/username
之後logout重啟,grub應可以正常運行了
在執行grub shell命令grub> find /boot/grub/stage1的時候,如果沒有傳回值,說明該命令不成功。這很可能是由於geometry的參數不正確,需要重複執行前面的操作。如果find命令依然不成功,那麼也可能是由於fdisk返回的參數不正確。如果你很清楚/或者/boot安裝在哪個分區,那麼可以通過直接執行root (hd0,x)這步來指定grub的位置,注意在grub中x是從0開始的計數的。
在某些情況下windows7可能會不正常,這個時候可以用windows7的安裝盤執行修複,可能需要修複兩次,才能Windows7的BOOTMGR恢複正常。我在安裝過程中並沒有碰到上述問題。另外,如果出現Ubuntu無法啟動的情況,很可能是檔案使用權限設定不對,可以先進recovery mode,使用root許可權重新設定許可權。
以上方法也適用於linuxmint