1. 程式人生 > >WIN7和Ubuntu雙系統,Ubuntu正常,WIN7有問題

WIN7和Ubuntu雙系統,Ubuntu正常,WIN7有問題

1.碰到的問題:window7上安裝ubuntu16.04,重啟電腦,進入grup,Ubuntu可以正常進入,window7沒有辦法進入。
解決辦法:進入Ubuntu系統,Ctrl+Alt+T,進入終端,輸入:“sudo update-grub”;然後重啟電腦,grub介面會出現window7選項,點選進入,即可。

2.碰到的問題:在原有系統上重灌ubuntu系統,導致磁碟分割槽被破壞,重啟電腦,出現“error:unknow filesystem……”
解決辦法:如果電腦裡所有系統的資料不重要,直接重灌系統即可。
如果需要儲存原有系統,使用命令解決:

使用ls命令顯示出ubuntu分割槽的安裝資訊:

grub rescue>ls

一般會羅列出所有磁碟的分割槽資訊,比如(hd0,msdos1)(hd0,msdos4)(hd0,msdos5)(hd0,msdos6)(hd0,msdos7)等等

之後輸入:

grub rescue>set

會列出當前grub的設定,比如
prefix=(hd0,msdos6)/boot/grub,
root=hd0,msdos6,或者
prefix=(hd0,msdos6)/grub,
root=hd0,msdos6,
正是因為這些設定錯誤,才導致grub無法找到Ubuntu分割槽,之後是重新進行grub設定

如果你知道ubuntu是安裝在哪一個分割槽的,比如(hd0,msdos7),則分別輸入:

 grub rescue >set root=hd0,msdos7
 grub rescue> set prefix=(hd0,msdos7)/boot/grub
(有些情況下會是set prefix=(hd0,msdos7)/grub,以set之後顯示的grub設定為依據)

之後輸入:

 insmod normal 

如果仍然出現 error:unknown filesystem 則重新回到步驟2進行grub設定;如果出現的是

grub rescue>

表示分割槽設定正確了,之後再輸入

normal 

就又會看到我們那個熟悉的紫色介面了,不過到這裡還沒有結束,因為如果你再次重啟系統的話,依然會碰到error:unknown filesystem這個問題,然後你又要重複上訴步驟才能看到系統的選擇介面,因此還有一步需要完成,

選擇ubuntu,進入之後啟動終端,輸入如下命令

sudo  update-grub
sudo grub-install /dev/sda

修復grub分割槽資訊,這樣後就不會出現問題了

即使這樣,可能也還沒結束,最好切換一下系統,看是否每個系統都可以正常執行,我遇到的是W7又進不去了。選擇Windows 7啟動選單啟動Windows,毫無反映幾秒鐘後返回GRUB啟動選單

解決辦法:在保證Windows啟動器沒有被GRUB破壞,進入Ubuntu系統/boot/grub目錄,開啟grub.cfg檔案檢視,下面顯示的grub.cfg有關windows 7啟動的部分

### BEGIN /etc/grub.d/30_os-prober ###

 menuentry 'Windows 7 (loader) (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-F040DA6A40DA3756' {
        insmod part_msdos
        insmod ntfs
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
    search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  F040DA6A40DA3756
        else
            search --no-floppy --fs-uuid --set=root F040DA6A40DA3756
        fi
        parttool ${root} hidden-
                chainloader +1
 }
 set timeout_style=menu
 if [ "${timeout}" = 0 ]; then
   set timeout=10
 fi
 ### END /etc/grub.d/30_os-prober ###

其中

 chainloader +1

chainloader用於切換啟動器,+1是指定啟動器所在硬碟扇區塊位置。chainloader+1語句的含義是啟用在sda1的第一個塊的啟動器用於引導作業系統。此時sda1的第一個塊已經被GRUB所佔據,切換啟動器的結果就是再啟動一遍GRUB。因此當用戶在GRUB中選擇windows 7 loader後返回GRUB選單就以為怪了

解決辦法:將chainloader+1,替換成ntldr /bootmgr