无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 8470|回复: 10
打印 上一主题 下一主题

[求助] GRUB4DOS如何引導WIN7差分VHD 還有一個RAMOS的問題

[复制链接]
跳转到指定楼层
1#
发表于 2012-11-11 11:12:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我本身是使用 桌上型電腦 (主系統用的是WIN8 X64 企業版  6G RAM   只有一顆320HDD
分成 C:主分割 d:主分割 E:邏輯分割
VHD-WIN7.vhd和他的差分VHD-WIN7_CHILD.vhd都放在d:\  )

這幾天我也做了一個WIN7精簡版VHD(固定3G大小) 載入到RAM內使用
精簡版是 WIN7 X86旗艦版 我用了ReadyFor4GB_20090422破了核心 所以可以使用到6G RAM
載入到RAM開機後  可以使用記憶體是3G(沒破核心 進入RAM可以使用有256MB 剩餘20MB可用量)
激活也都沒問題 使用DISKGENIUS.exe 3.5.0免費版 熱備份(約30秒)和熱還原(約1分20秒)也都正常


我做了一各VHD-WIN7.vhd和他的差分VHD-WIN7_CHILD.vhd
我用WIN7自帶的管理器啟動 差分VHD-WIN7_CHILD.vhd完全正常
可是用GRUB4DOS方式引導 卻都出現 Error 5:Partition table invalid or corrupt
我在VHD-WIN7.vhd內已經安裝好FiraDisk 0.0.1.30

選單內容如下:
title         【6】    VHD-WIN7_CHILD.vhd(HHD) \n     啟動VHD Windows 7系統
find --set-root /VHD-WIN7_CHILD.vhd
map --heads=2 --sectors-per-track=18 --mem (md)0x800+4 (99)
map /VHD-WIN7_CHILD.vhd (hd0)
map (hd0) (hd1)
map --hook
write (99) [FiraDisk]\nStartOptions=disk,vmem=find:/VHD-WIN7_CHILD.vhd,boot;\n\0
rootnoverify (hd0,0)
chainloader +1




另外一個RAMOS的問題如下:

title         【6】    VHD-WIN7(HHD) \n     啟動VHD Windows 7系統
find --set-root /VHD-WIN7.vhd
map --heads=2 --sectors-per-track=18 --mem (md)0x800+4 (99)
map /VHD-WIN7.vhd (hd0)
map (hd0) (hd1)
map --hook
write (99) [FiraDisk]\nStartOptions=disk,vmem=find:/VHD-WIN7.vhd,boot;\n\0
rootnoverify (hd0,0)
chainloader /vhd7.bin

為什麼在map /VHD-WIN7.vhd (hd0)  改成map --mem /VHD-WIN7.vhd (hd0)
不是藍屏就是會開機到一半重新啟動 只要不加--mem 或 --mem--top 載入記憶體都能正常啟動成功



title         【7】    VHD-WIN7(RAM)\n     啟動VHD Windows 7系統(RAMOS)
find --set-root /VHD-WIN7.vhd
map --mem--top /VHD-WIN7.vhd (hd0)
map (hd0) (hd1)
map --hook
rootnoverify (hd0,0)
chainloader /vhd7.bin

而這個如果像 title         【6】    VHD-WIN7(HHD) 在相同位置 多了
map --heads=2 --sectors-per-track=18 --mem (md)0x800+4 (99)
write (99) [FiraDisk]\nStartOptions=disk,vmem=find:/VHD-WIN7.vhd,boot;\n\0
這2行 就會開機到一半重新啟動  不加就能正常成功啟動
這是為什麼?
推荐
 楼主| 发表于 2012-11-12 16:27:56 | 只看该作者
原帖由 2012wuzhong 於 2012-11-12 14:00 發表
差分vhd格式並不通用,屬於誰創建誰引導。
只有WIN7自帶的管理器才能啟動微軟自己的差分vhd,其它的引導器不認識這種格式!
vboot也只能引導它創建的差分vhd!
想要將差分vhd放入內存盤,可以參看http://bbs ...


我的差分是用VHD_OneKey_20121001做出來的
所以才會出錯對嗎?

目前看了一些VBOOT文章
如果以GRUB引導VBOOT
再用VBOOT來引導用他創建的差分vhd
可否引導到內存 因為我最終是要做成RAMOS
而且我還需要 破解激活WIN7

所以才一直執著於用GRUB4DSO引導
因為我對這個比較熟 其他方式不知道該如何用

你發表那篇文章太深奧複雜 小弟資質有限
所以一直在看看如何用一些簡單的來搞定這問題
回复

使用道具 举报

2#
发表于 2012-11-11 15:00:03 | 只看该作者

回复 #1 2012smallhaung 的帖子

g4d处理不了差分vhd。
write (99) [FiraDisk]\nStartOptions=disk,vmem=find:/VHD-WIN7.vhd,boot;\n\0
这是fira非内存载入镜像模式,再加上“--mem”内存载入的话,fira将设别出2个相同的虚拟盘,这个可能会导致宕机。
回复

使用道具 举报

3#
 楼主| 发表于 2012-11-12 13:19:09 | 只看该作者
我用WIN7自帶的管理器啟動 差分VHD-WIN7_CHILD.vhd完全正常
可是用GRUB4DOS方式引導 卻都出現 Error 5:Partition table invalid or corrupt
我在VHD-WIN7.vhd內已經安裝好FiraDisk 0.0.1.30

是否這個問題不能使用FiraDisk而要改用VBOOT 才能用GRUB來引導我的差分VHD呢
回复

使用道具 举报

4#
发表于 2012-11-12 14:00:41 | 只看该作者

回复 #3 2012smallhaung 的帖子

差分vhd格式并不通用,属于谁创建谁引导。
只有WIN7自帶的管理器才能啟動微软自己的差分vhd,其它的引导器不认识这种格式!
vboot也只能引导它创建的差分vhd!
想要将差分vhd放入内存盘,可以参看http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

6#
发表于 2012-11-12 16:54:42 | 只看该作者

回复 #5 2012smallhaung 的帖子

使用vboot可以简单一些,我曾经发过相关的帖子。
回复

使用道具 举报

7#
 楼主| 发表于 2012-11-12 19:25:57 | 只看该作者
原帖由 2012wuzhong 於 2012-11-12 16:54 發表
使用vboot可以簡單一些,我曾經發過相關的帖子。


爬文一些VBOOT文章
都是只有教如何 掛載 啟動 VHD或差分VHD
但是都沒有提到要如何用VBOOT把 差分VHD載入RAM內執行

我會發問這篇 就是看到http://bbs.wuyou.net/forum.php?mod=viewthread&tid=269143&;extra=&page=2
這篇的13樓 聯想到的 用他的方式  把母VHD改成差分VHD 依樣畫葫蘆 讓差分VHD載入RAM
可是實際操作卻發生問題



我做了一各VHD-WIN7.vhd和他的差分VHD-WIN7_CHILD.vhd
我用WIN7自帶的管理器啟動 差分VHD-WIN7_CHILD.vhd完全正常
可是用GRUB4DOS方式引導 卻都出現 Error 5:Partition table invalid or corrupt
我在VHD-WIN7.vhd內已經安裝好FiraDisk 0.0.1.30

title         【6】    VHD-WIN7_CHILD.vhd(HHD) \n     啟動VHD Windows 7系統
find --set-root /VHD-WIN7_CHILD.vhd
map --heads=2 --sectors-per-track=18 --mem (md)0x800+4 (99)
map /VHD-WIN7_CHILD.vhd (hd0)
map (hd0) (hd1)
map --hook
write (99) [FiraDisk]\nStartOptions=disk,vmem=find:/VHD-WIN7_CHILD.vhd,boot;\n\0
rootnoverify (hd0,0)
chainloader +1



我在http://bbs.wuyou.net/forum.php?m ... ;tid=269143&extra=&page=3  
22樓  也只利用母VHD試作 載入RAM  一樣發生問題

[ 本帖最后由 2012smallhaung 于 2012-11-12 19:29 编辑 ]
回复

使用道具 举报

8#
发表于 2012-11-12 19:36:31 | 只看该作者

vboot差分vhd-win7 ramos

主要原理:
使用一个启动镜像启动vboot,让vboot先从启动镜像上的子vhd文件中启动,当然母vhd文件通过uuid定位于硬盘上的某个分区。系统启动后primo驱动将加载镜像文件生成内存盘,此时,启动镜像分离,系统将从硬盘分区1继续加载子vhd,由于硬盘分区1相应目录被mklink到了内存盘,这样系统使用的子vhd文件实际上位于内存盘。

具体步骤如下:
1、首先需要一个基于vhd的win7系统,假设vhd文件位于硬盘分区1,具体路径为"g:\w7636\w7636.vhd"
2、安装vboot驱动,"g:\vboot\tools\x86\vbootctl.exe prepare current"
3、使用BOOTICE修改vhd引导,具体包括主引导记录为:"windows nt 6.x默认引导程序";分区引导记录为"BOOTMGR 引导程序";分区管理处于分区激活状态。
4、vhd根目录下需要有boot启动目录以及启动文件bootmgr,bootmgr文件不能压缩。
5、使用bootice处理boot目录中的bcd文件,需要有一个win7启动项,启动磁盘选"BOOT"
6、安装primo,生成一个直接io模式的内存盘(假设盘符为B),镜像文件可选智能镜像。加载模式先选“加载和保存”。
内存盘上建一个vhd目录,用vboot工具建立差分vhd,"g:\vboot\tools\x86\vbootctl.exe creatediff b:\vhd\w7636-s1.vhd g:\w7636\w7636.vhd"
保存内存盘上的内容到镜像文件。
删除内存盘,然后重新加载,加载模式选“仅加载”和“延时加载模式”
-----------------
7、这里需要借助硬盘分区1(假设盘符为G)作中介,使用mklink命令进行链接,(注意盘符B为内存盘)"mklink /j g:\vhd b:\vhd"

8、使用DiskGenius生成一个硬盘映像img文件(假设文件名为bootv2.img),大小选32M即可。建立ntfs分区并格式化。
用vdm工具加载bootv2.img文件,拷入内存盘B上的vhd目录(包含有w7636-s1.vhd),同时拷入vboot启动目录,以及放入根目录下的vbootldr和vbootldr.mbr两个文件
修改\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"
  }
}
注意:母盘需要使用硬盘分区1的uuid

9、需要使用grub4dos启动,编辑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启动到母盘进行更新。

[ 本帖最后由 2012wuzhong 于 2012-11-12 19:38 编辑 ]
回复

使用道具 举报

9#
 楼主| 发表于 2012-11-12 23:09:24 | 只看该作者
>>vboot差分vhd-win7 ramos

這篇文章之前小弟也看了很多次
(用GOOGLE找到http://www.360doc.com/content/12/0628/19/21412_221030351.shtml)
只是感覺很複雜 還沒去實作實驗

像小弟只有一個320G HDD  分割成 C:(主分割)15G  d:(主分割)75G  E:(邏輯分割)207G
我C:的主系統是 WIN8 X64


因為有些步驟不是很清楚
像2、安裝vboot驅動 <<   是安裝於C:的WIN8主系統下  還是在掛載VHD內的WIN7系統下
像7、這裡需要借助硬盤分區1(假設盤符為G)作中介 <<  以我的HDD為例 我的盤苻是d: 嗎?

[ 本帖最后由 2012smallhaung 于 2012-11-12 23:14 编辑 ]
回复

使用道具 举报

10#
发表于 2012-11-13 13:14:02 | 只看该作者

回复 #9 2012smallhaung 的帖子

在win8下也可以操作,vboot\tools\x86\vbootctl.exe prepare win7.vhd
分区1是指你的第一个分区C盘,不过在win7vhd系统下,该盘符可能不是c了。
回复

使用道具 举报

11#
发表于 2014-10-29 01:21:11 | 只看该作者
记录,正好遇上
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-7-24 09:34

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表