2012年12月29日 星期六

讓VirtualBox的虛擬硬碟變小、縮小佔用空間

我的情況是這樣的:

*真正的作業系統是XP或Win7
*虛擬硬碟裡裝的是Ubuntu
*當初建立時是選擇動態配置大小(固定大小的就沒輒了)



事前準備:


(1)如果你虛擬硬碟的格式並非*.vdi
首先必須讓虛擬硬碟的格式轉為*.vdi
進入命令列到VirtualBox的資料夾去執行格式的轉換
VBoxManage.exe clonehd 虛擬硬碟名稱.vmdk 新虛擬硬碟名稱.vdi --format VDI


(2)如果你在Ubuntu上面還沒有root帳密
輸入
sudo passwd root
接下來會叫你輸入密碼來確認你夠格使用sudo
也有可能直接開始設定 root密碼
自己要看清楚


(3)在Ubuntu上安裝zerofree
sudo apt-get zerofree
我們需要它來將沒使用的空間資料歸零
如此外部程式才有辦法幫虛擬硬碟減肥


步驟:

(1)開啟進入虛擬硬碟然後執行一些清理行為
例如
sudo apt-get autoclean
sudo apt-get autoremove
之類的

(2)重開機進入grub menu
剛進入開機畫面就一直按shift(以前有按Esc的版本)
你可以左右shift交叉按來避免相黏鍵功能的出現
如果一直進不去可能要開啟/etc/default/grub文件
將下面這行的0換成比較大的正數(10應該已經夠了)
GRUB_HIDDEN_TIMEOUT=0


(3)掛載你的虛擬硬碟
進入grub menu之後選擇recovery mode
然後選擇root(如果沒看到就表示你沒設定root密碼)
用這指令確認你的虛擬硬碟名稱
df
我想大部分情況會是/dev/sda1
執行
mount -n -o remount,ro -t ext2 /dev/sda1 /
如果出現mount: / is busy訊息就輸入下面三行再試一次
service rsyslog stop
service network-manager stop
killall dhclient


(4)執行zerofree
zerofree /dev/sda1
這步會花滿多時間
甚至螢幕會全黑掉像當掉一樣
你可以按一下ctrl鍵確認一下zerofree完成工作了沒
完成之後將虛擬硬碟關機
poweroff


(5)最後一步
VBoxManage.exe modifyhd 虛擬硬碟名稱.vdi compact