1. 程式人生 > >Windows7下安裝Ubuntu雙系統遇到的坑:Ubuntu從安裝到解除安裝到重灌

Windows7下安裝Ubuntu雙系統遇到的坑:Ubuntu從安裝到解除安裝到重灌

安裝Win7+Ubuntu雙系統時遇到的問題

由於此前只在VMWare虛擬機器上安裝過Linux系統,而且當時實際使用比較少,因此安裝虛擬機器時並不覺得艱難,沒想到在安裝雙系統時卻遇到了那麼多問題,可以說是把所有的坑都踩了一遍,差點把實驗室電腦上的硬碟資料都給弄丟了,好在有驚無險,經過幾天的折騰,終於解決了所有問題,把坑都填上了。
之所以寫這篇部落格,是因為大部分文章都只有安裝系統的步驟,卻沒有告訴我們需要做哪些準備、會遇到什麼問題以及其解決方法,希望這篇文章能幫助一些想要安裝雙系統的同學。

安裝Ubuntu時不能顯示Windows中未分配空間:

將動態磁碟改為基本磁碟,因為動態盤是不能安裝雙系統的

。可以在計算機-管理-磁碟管理中檢視Windows分割槽是基本盤還是動態盤,關於基本盤和動態盤的更多內容可以看這個:基本盤和動態盤的區別
由於動態盤的卷在實體記憶體上可能不連續,因此直接將動態盤轉為基本盤時資料會被清空,需要使用分割槽助手DiskGenius來進行轉換,但是轉換到基本盤可能會導致下面這個問題。

安裝ubuntu時不能顯示Windows分割槽,只能看到dev/sda:

退出安裝,進入試用版Ubuntu,輸入sudo parted /dev/sda print,提示錯誤:分割槽表不能重疊。分割槽表重疊是分割槽助手在轉換到基本磁碟時造成的,需要使用DiskGenius重建分割槽,這裡有一篇

重建分割槽 的教程。按照教程一步一步操作,可以避免資料丟失,如果有條件,最好先備份硬盤裡的所有資料。

分割槽時提示無法再繼續分割槽:

這是因為MBR磁碟最多隻有4個主分割槽, 但是考慮到可能要裝雙系統,建議Windows中使用1個主分割槽+3個邏輯分割槽,這樣可以在剩下的邏輯分割槽裡選一個空閒的分割槽作為Ubuntu的主分割槽。
事實上只有MBR磁碟才有4個主分割槽的限制,GPT則沒有此限制,這篇教程說明了如何檢視電腦是GPT磁碟還是MBR磁碟。

在計算機-管理-磁碟管理中,如果未分配空間是綠色的,就會分成邏輯分割槽;如果未分配的空間是黑色的,那麼新建的卷就是主分割槽,這種情況下為Linux系統新建的分割槽都會成為主分割槽,因此會有很大概率超過4塊主分割槽而導致無法正常安裝Linux系統。

要使新建的分割槽為邏輯分割槽,則可以在cmd下使用如下命令:

diskpart        # 進入磁碟分割槽
list disk       # 磁碟列表
select disk 0   # 選擇需要修改分割槽的磁碟
                # 通常大部分電腦都只有一塊磁碟,因此0就是當前要分割槽的磁碟
                # 如果有多塊磁碟則需謹慎選擇
list partition  # 列出分割槽列表
create partition extended   # 回車後系統會把剩餘的未分配空間全部劃分為擴充套件分割槽
                            # 在磁碟管理中可以看到這部分是綠色的。

如果使用上述命令時提示“虛擬磁碟服務錯誤:分割槽數已經達到磁碟的限制”,則改為如下命令:

list volume     # 卷列表,找到和未分配空間相鄰的卷,例如F卷,其編號為4,則:
select volume 4 # 選中F卷
extend          # 擴充套件F卷,將未分配空間全部劃分到F卷
                # 由於F卷是邏輯分割槽,因此擴充套件F卷後,再將其壓縮
                # 即可變為綠色的邏輯分割槽

執行完上述命令後,可以看到黑色的未分配空間已經和其相鄰卷(例如F卷)合併了,此時右鍵該卷,選擇壓縮卷,輸入未分配空間的大小,確認壓縮後即可看到被壓縮出來的未分配空間已經變為綠色。

至於為什麼不直接先擴展卷再壓縮卷,是因為我在實際操作中發現,如果直接對黑色的未分配空間做以上操作,得到的未分配空間還是黑色的。

安裝完雙系統後出現grub rescue:

ls               # 列出所有分割槽資訊,例如有0-10共11個分割槽塊
ls (hd0,msdosX)  # X是分割槽的區號,將X改為從0到10的數
                 # 找到那個可顯示當前檔案系統的分割槽,例如區塊2

set root=(hd0,msdos2)/grub      # 區塊2是有檔案系統的分割槽
set prefix=(hd0,msdos2)/grub    
insmod normal
normal

解決之後下次開機還是會出現grub rescue,因此在正常進入Linux系統後需要更新grub:

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

這篇文章Grub Rescue修復方法給出了詳細的修復方法,並且區分了boot單獨分割槽和未分割槽時的不同操作,比我參考的其他文章都更好。

Ubuntu系統的重灌

為什麼解除安裝Ubuntu

之所以要解除安裝Ubuntu,是因為我參考了一篇如何安裝Linux的部落格,這篇部落格提到Linux分割槽的常規方法為:

/boot     # 引導分割槽,略大於200M即可
/swap     # 交換分割槽,大於或等於實體記憶體的大小
          # 早期電腦記憶體比較小,因此推薦設定為實體記憶體的兩倍左右
          # 現在電腦記憶體夠用,設定為略大於實體記憶體即可
/         # 主分割槽,夠用就行
/home     # 剩餘的都給home就行

這個教程唯一的問題在於,沒有說明根目錄/的大小,導致我以為主分割槽不需要多大空間,因此只給根目錄分了4G,而把剩餘分割槽全部劃分給了/home,其後果是在安裝了一些程式設計軟體後,系統便提示根目錄空間不足,使得Ubuntu系統無法正常使用,也使得我不得不重新安裝Ubuntu。

重新安裝Ubuntu系統時,我給Ubuntu預留了80多G的可用空間(原來為50G),其中home分割槽36G,主分割槽40G,其餘空間分給swap和boot分割槽。關於Linux分割槽的更多資訊,請參考這篇部落格:Ubuntu分割槽方案(菜鳥方案、常用方案和進階方案)

注:如果不想重新安裝系統,可以考慮使用lvm2來擴充套件根目錄空間,擴容教程見Linux下對lvm邏輯卷分割槽大小的調整(針對xfs和ext4不同檔案系統)。安裝lvm大約需要8M空間,如果根目錄已經完全被佔滿,則可能連lvm也安裝不了,使用如下命令可以擴充套件一些記憶體:

sudo apt-get clean#清理所有軟體的快取
sudo apt-get autoclean#清除舊版本的軟體快取
sudo apt-get autoremove#刪除系統不再使用的孤立軟體

執行完後可以使用df -h命令檢視磁碟使用空間大小。

Windows雙系統中解除安裝Ubuntu的方法

下載MbrFix軟體,解壓後將MbrFix.exe放到C盤根目錄下或者C:/Windows/System32目錄下。

以管理員身份開啟cmd,輸入命令MbrFix /drive 0 fixmbr再確認即可。

重啟時如果沒有雙系統的引導項而是直接進入Windows系統,則說明MBR引導已經修復,不再使用Ubuntu系統引導了,此時即可刪除Ubuntu系統,刪除方式很簡單,在計算機-管理-磁碟管理中,選中原先Linux系統的安裝分割槽,右擊刪除卷即可(Linux的安裝分割槽是那些不能被Windows系統識別的卷)。被刪除後剩餘的未分配空間應該是綠色的。
詳細內容可以參考這篇簡書文章:WIN7+ubuntu雙系統重灌ubuntu

製作Ubuntu最新版的U盤啟動盤

Ubuntu官網下載最新版Ubuntu的iso映象檔案,用於製作U盤啟動盤。

使用UltraISO製作U盤啟動盤無法進入啟動項,提示Failed to load ldlinux.c32,原因是UltraISO軟體不支援最新版的Ubuntu,USB Installer也出現同樣問題。

解決方法:格式化U盤,使用Win32DiskImager製作U盤啟動盤以重新安裝系統。

安裝系統的方法很簡單,將U盤啟動盤插入電腦後,重新啟動時按F12或F2,進入Ubuntu安裝引導介面一步一步來即可,詳細步驟請參考教程:Win7 下U盤安裝Ubuntu16.04 雙系統詳細圖文教程

注1:製作啟動盤的過程中會對U盤進行格式化,因此需要先進行資料備份

注2:只有在前面幾種工具無法使用時再使用Win32DiskImager,因為Win32DiskImager製作好啟動盤後會將啟動盤進行分割槽,導致可用的空間十分之少,只能進行格式化。

總結

1、安裝雙系統時,必須確保Windows的分割槽是基本盤而不是動態盤
2、在Windows下劃分出的用於安裝Linux的未分配空間必須是綠色的,如果是黑色的則需要將其轉換為綠色。未分配空間最好大於50G(Ubuntu官網建議不小於25G)。
3、給Linux系統分割槽時,必須保證根目錄也有足夠大的空間(大於20G),或者乾脆不分割槽,把所有空間都掛載到根目錄下。
4、遇到問題要及時解決,並記錄下來,以避免下次遇到時還要再搜一遍。