在Vmware 9.0下安裝了Ubuntu 14.04.2 Desktop LTS版本,接着下載了Ubuntu內核源碼樹並用該源碼編
譯了內核,完成後又想在Ubuntu系統下安裝源碼閱讀工具以及一些其他一些輔助工具,結果發現磁盤空間不
夠了,總不能重新安裝系統把這些動作重來一遍或者拷貝大量的數據吧?這實在是太浪費時間了。還好,
Vmware爲我們提供了便利。
這裏,其實我最終的目標是要達到擴大磁盤分區的容量。這要分兩步來走:
第一步,要擴大安裝Ubuntu系統時所創建的磁盤的容量。
這可以很方便的通過Vmware自身的工具來完成。操作步驟如下面兩圖:
填入自己最終想要的磁盤容量大小,這個操作步驟很容易也很快就完成了。更多關於Vmware磁盤操作的
細節可參考Vmware軟件help目錄下的文檔或Vmware官方網站文檔。
第二步,接下來使用工具GParted來擴展磁盤分區的容量。
到SourceForge去下載GParted的ISO鏡像、文件。配置Vmware的CD/DVD(IDE)項,載入該ISO鏡像文
件,並同時勾選上"Connect at power on"(這個很重要),否則即使Vmware BIOS裏設置了光盤引導,
也不會由GParted鏡像文件引導系統,後面的一切自然無法進行。
接下來配置Vmware BIOS的BOOT優先級,將CDROM設爲第一優先級。Vmware 9.0進入BIOS的快捷鍵是F2,
我瘋狂的按啊,也沒能進去,這是我暫時沒能搞明白的問題,有網上文章說這是啓動速度太快的原因,但事
實並非如此,因爲至少有2個事實做爲佐證來否認這個判斷:第一,我有過在Vmware 9.0按Esc鍵選擇啓動設
備成功的經驗,而這次無論怎麼按Esc鍵都無法成功;第二,通過修改.vmx配置文件加長啓動延時,仍然沒
能夠成功。我這裏是採用修改Vmware的配置文件的方法來進入Vmware BIOS的。打開Guest OS(我這裏是
Ubuntu 14.04.2)所在的目錄,找到後綴爲.vmx文件,用文本編輯器打開它,在其最後一行添加一句:
bios.forceSetupOnce="TRUE"
上面的可以強制啓動一次BIOS,之後再啓動系統不會再進入BIOS。事實上,Vmware是通過更新.vmx配置文件
將該配置項的值置爲FALSE來做到的。另外,在你添加上面的語句到.vmx配置文件之前,你需要先確認.vmx
文件中沒有bios.forceSetupOnce配置項,如果該配置項已經存在,將它的值直接修改爲TRUE就行了。如果
重複配置該項,啓動Guest OS時Vmware會報錯。
下面是配置Vmware BIOS的截圖,將CD-ROM Drive配置爲首選啓動設備。
接下來會進入到GParted進行最後的步驟:磁盤分區擴展。
根分區擴展前的截圖:
根分區擴展後,重建擴展、交換分區後的截圖:
上面的截圖顯示/dev/sda1分區已經被擴展爲36.48GiB。在進入上面的畫面前會有針對一些針對GParted的配
置或選擇,全部選擇默認的即可(就是直接敲回車鍵)。
我原本的磁盤分區非常簡單,只有一個位於主分區的根分區、一個位於擴展分區的交換分區。由於擴展
前兩個分區的空間都是緊挨着的,如果要擴展,需先將原來的擴展分區(包括其中的交換分區)刪除,然後
用Resize/Move菜單來擴展主分區從而擴展根分區的大小,剩下的空間分別用於建立新的擴展分區,並從擴
展分區中重新建立交換分區,最後用Apply菜單真正的將更改寫回磁盤,完成後退出GParted工具。
完成上面的兩步後,重啓系統,系統已經能夠工作了。但我們依然還有些收尾的工作要做,在啓動界面
的會看到一個提示信息,如下圖:
上面的提示信息是說有UUID=9f8f36cb-4a9f-4aab-97bd-b27b86f86f00磁盤驅動器沒有準備好或者根本不存
在。這樣的信息夠嚇人,但好在我們還能進入系統。UUID應用於磁盤管理,是爲了避免在多個磁盤或者其他
磁盤驅動器加載順序變動造成的混亂,將每個分區用唯一的UUID來標識,這樣可以避免這樣的問題。
回到我們的問題,到底是什麼造成了這個提示信息呢?因爲和磁盤驅動器加載有關,所以我先查看了配
置文件/etc/fstab,發現提示信息中UUID對應於swap分區的配置項;然後又用sudo blkid查看了重新調整了
分區後swap的UUID,發現swap分區的UUID已經發生了變化(這是必然的,因爲UUID是唯一的,UUID的生成規
律是根據系統時間等等等等結合產生的)。到此,問題明瞭了,提示信息裏UUID對應的舊的swap分區已經不
存在了,要解決這個問題,需要將/etc/fstab中的swap分區的UUID更改爲新的UUID。另外,由於Ubuntu系統
從休眠狀態喚醒也使用到了swap分區的UUID,所以還需要修改配置文件
/etc/initramfs-tools/conf.d/resume,否則系統將無法從休眠狀態正確恢復,系統會重啓。將該配置文件
中swap分區的UUID更新爲新的swap分區UUID,然後運行命令
sudo update-initramfs -u -k $(uname -r)
更新目錄/boot/下當前內核對應的initrd.img-xxx鏡像文件,如果你有多個內核鏡像在/boot目錄下,要用
-k參數指定你想要更新的內核版本,否則只會更新默認啓動的內核版本的對應文件,而不是更新你當前運行
內核的對應文件initrd.img文件。
至此,修改完成,重啓系統後,前面的提示信息不會再出現了。
至此,磁盤分區的擴展工作告一段落。當我們不能就此止步不前,是吧?學海無涯啊!除了上面提到的
磁盤工具外,Ubuntu另外還有些其他工具很是值得學習,如lsblk會打印磁盤block的一些信息,fdisk可以
查看磁盤掛載,使用狀況,磁盤分區等,mkfs在磁盤上建立Linux文件系統,tune2fs修改磁盤的文件系統信
息。另外一些關於和磁盤信息相關的文件,如/dev/disk/by-uuid,/proc/磁盤信息文件等等等等。