作者: 2010wuzhong
時(shí)間: 2012-6-24 22:38
標題: 差分vhd-win7 ramos
前言:
研究這個(gè)主要目的是,對于內存較小(4G以下)的機子,幾乎很難玩win7-ramos。目前普遍采用的是wim類(lèi)型。對此需要有一定的系統精簡(jiǎn)技術(shù),而且內存還是非常的吃緊。利用vhd差分技術(shù),僅將差分vhd放入內存中,這樣一方面不需要對系統進(jìn)行太多的精簡(jiǎn),另一方面內存的利用將達到最高。
之前已經(jīng)研究成功了一個(gè)基于primo原生態(tài)的差分vhd的另類(lèi)ramos了,不過(guò)原生態(tài)的差分vhd即使使用動(dòng)態(tài)模式,在使用的時(shí)候空間還是達到了最大,另外制作、更新比較復雜。因此想到了vboot。使用vboot的好處是:子、母vhd可以位于不同的分區;另外使用動(dòng)態(tài)模式的話(huà),子vhd在使用的時(shí)候不會(huì )占用最大空間。
vboot驅動(dòng)建議選2.0,能夠比較好的支持win7。具體下載可到vhd系統區,
http://bbs.wuyou.com/viewthread.php?tid=202450,不過(guò)已經(jīng)過(guò)期了,使用的時(shí)候需要調一下日期。
主要原理:
使用一個(gè)啟動(dòng)鏡像啟動(dòng)vboot,讓vboot先從啟動(dòng)鏡像上的子vhd文件中啟動(dòng),當然母vhd文件通過(guò)uuid定位于硬盤(pán)上的某個(gè)分區。系統啟動(dòng)后primo驅動(dòng)將加載鏡像文件生成內存盤(pán),此時(shí),啟動(dòng)鏡像分離,系統將從硬盤(pán)分區1繼續加載子vhd,由于硬盤(pán)分區1相應目錄被mklink到了內存盤(pán),這樣系統使用的子vhd文件實(shí)際上位于內存盤(pán)。
具體步驟如下:
1、首先需要一個(gè)基于vhd的win7系統,假設vhd文件位于硬盤(pán)分區1,具體路徑為"g:\w7636\w7636.vhd"
2、安裝vboot驅動(dòng),"g:\vboot\tools\x86\vbootctl.exe prepare current"
3、使用BOOTICE修改vhd引導,具體包括主引導記錄為:"windows nt 6.x默認引導程序";分區引導記錄為"BOOTMGR 引導程序";分區管理處于分區激活狀態(tài)。
4、vhd根目錄下需要有boot啟動(dòng)目錄以及啟動(dòng)文件bootmgr,bootmgr文件不能壓縮。
5、使用bootice處理boot目錄中的bcd文件,需要有一個(gè)win7啟動(dòng)項,啟動(dòng)磁盤(pán)選"BOOT"
6、安裝primo,生成一個(gè)直接io模式的內存盤(pán)(假設盤(pán)符為B),鏡像文件可選智能鏡像。加載模式先選“加載和保存”。
內存盤(pán)上建一個(gè)vhd目錄,用vboot工具建立差分vhd,"g:\vboot\tools\x86\vbootctl.exe creatediff b:\vhd\w7636-s1.vhd g:\w7636\w7636.vhd"
保存內存盤(pán)上的內容到鏡像文件。
刪除內存盤(pán),然后重新加載,加載模式選“僅加載”和“延時(shí)加載模式”
-----------------
7、這里需要借助硬盤(pán)分區1(假設盤(pán)符為G)作中介,使用mklink命令進(jìn)行鏈接,(注意盤(pán)符B為內存盤(pán))"mklink /j g:\vhd b:\vhd"
8、使用DiskGenius生成一個(gè)硬盤(pán)映像img文件(假設文件名為bootv2.img),大小選32M即可。建立ntfs分區并格式化。
用vdm工具加載bootv2.img文件,拷入內存盤(pán)B上的vhd目錄(包含有w7636-s1.vhd),同時(shí)拷入vboot啟動(dòng)目錄,以及放入根目錄下的vbootldr和vbootldr.mbr兩個(gè)文件
修改\vboot\grub目錄下的grub.cfg文件
menuentry "w7636 vhd " {
vboot harddisk="(UUID=48900232900226d2)/w7636/w7636.vhd"
snapshotentry "Snapshot 1" {
vboot harddisk="(hd0,1)/vhd/w7636-s1.vhd"
}
}
注意:母盤(pán)需要使用硬盤(pán)分區1的uuid
9、需要使用grub4dos啟動(dòng),編輯menu.lst文件如下:
title primo win7 bootv2.img
find --set-root /bootv2.img
map (hd0) (hd1)
map --read-only /bootv2.img (hd0)
map --hook
chainloader (hd0,0)/vbootldr.mbr
10、對于更新,建議vboot啟動(dòng)到母盤(pán)進(jìn)行更新。
[
本帖最后由 2010wuzhong 于 2012-6-26 06:29 編輯 ]
作者: nk0769
時(shí)間: 2012-6-25 00:58
vhd系統比起img系統容易增量備份嗎?
vhd速度比起微軟,firadisk速度如何?
作者: 2011ilbwn
時(shí)間: 2012-6-25 03:23
速度如何?
"用vdm工具加載bootv2.img文件,拷入內存盤(pán)B上的vhd目錄(包含有w7636-s1.vhd),同時(shí)拷入vboot啟動(dòng)目錄,以及放入根目錄下的vbootldr"
內存盤(pán)B上的VHD目錄是什么?望指點(diǎn)
作者: jyztl
時(shí)間: 2012-6-25 13:26
先學(xué)習一下,慢慢搞。
作者: 2010wuzhong
時(shí)間: 2012-6-25 18:41
標題: 回復 #2 nk0769 的帖子
增量備份,那正是差分vhd的特性了。不過(guò)建議使用多級子vhd,注意不要改動(dòng)最后1級,因為其牽涉到兩個(gè)地方:?jiǎn)?dòng)鏡像和實(shí)際鏡像,當然這兩個(gè)鏡像可以為同一個(gè),只不過(guò)不能用智能鏡像了。
關(guān)于速度是這樣的,由于母盤(pán)還是在硬盤(pán)上,因此,對于母盤(pán)的讀取速度可能很慢,子盤(pán)在直接io模式的內存盤(pán)上,讀寫(xiě)速度應該比較快。
vboot2.0的速度沒(méi)有實(shí)測過(guò),感覺(jué)還可以。
至于firadisk,單從ramdisk驅動(dòng)而言,primo應該優(yōu)于它。當然如果內存大,要追求速度,那就不要搞差分了,直接將母盤(pán)放到內存盤(pán)上得了。
[
本帖最后由 2010wuzhong 于 2012-6-26 06:38 編輯 ]
作者: 2010wuzhong
時(shí)間: 2012-6-25 18:46
標題: 回復 #3 2011ilbwn 的帖子
關(guān)于vhd目錄,應該是啟動(dòng)鏡像、分區1、內存盤(pán)的一個(gè)“交接點(diǎn)”,是為了讓系統在啟動(dòng)的不同階段加載不同的子vhd。
啟動(dòng)鏡像上建vhd目錄,是為了系統在剛啟動(dòng)的時(shí)候加載子vhd。
分區1上的vhd目錄,是一個(gè)鏈接目錄,它被鏈接到了內存盤(pán)。當啟動(dòng)鏡像分離后,系統需要從硬盤(pán)分區1的vhd目錄繼續加載和使用子vhd。
在內存盤(pán)上建vhd目錄,是為了給分區1上的vhd目錄提供子vhd文件實(shí)體。
[
本帖最后由 2010wuzhong 于 2012-6-26 06:54 編輯 ]
作者: haokai
時(shí)間: 2012-6-28 12:33
大內存用EWF一樣效果,WIN7 VHD和差分盤(pán)用EWF保護,