无忧启动论坛

 找回密码
 注册
搜索
一次装机 终生领工资最纯净的「微PE装机优盘」UEPON大师作品★IDC大全★服务器租赁、托管★优惠促销★
可防勒索的强大数据备份恢复软件卡瑞飞系统和装机二合一超级U盘广告联系 QQ:184822951 微信:wuyouceo
楼主: 不点

SVBus 取代 FiraDisk, WinVblock

    [复制链接]
发表于 2018-12-23 18:00:17 | 显示全部楼层
前面两个回复乱码了,重新回复。

暂时放弃U盘,回到本地硬盘测试。

在正常使用的300G本地硬盘上,在最前面调整出大约10G的未分区空白区域。然后IMG写入空白扇区。

这次碰到的问题都是硬盘错误不能启动。发现一些有趣的东西:

1.直接map的扇区,比启动后,用dg和bootice看到的扇区,总数量刚好多1个。

2.map --mem --top  'img文件' (hd0),后面增加直接map扇区,'map  (hdx)m+n (hd2)',然后从hd0启动,如果在Winxp启动后,热备份了,下次启动时,即使从启动菜单删掉直接map扇区这一行,启动后,winxp也可以在磁盘管理器看到(hd2)。所以可以假设,svbus不依赖g4d的map,用windows的注册表就可以虚拟成ram device和disk device,然后启动成功。

我做的img,map扇区启动总是磁盘错误。请问,做虚拟磁盘(而不仅是分区)img,有不有标准方法?
回复 支持 反对

使用道具 举报

发表于 2018-12-23 18:00:19 | 显示全部楼层
前面两个回复乱码了,重新回复。

暂时放弃U盘,回到本地硬盘测试。

在正常使用的300G本地硬盘上,在最前面调整出大约10G的未分区空白区域。然后IMG写入空白扇区。

这次碰到的问题都是硬盘错误不能启动。发现一些有趣的东西:

1.直接map的扇区,比启动后,用dg和bootice看到的扇区,总数量刚好多1个。

2.map --mem --top  'img文件' (hd0),后面增加直接map扇区,'map  (hdx)m+n (hd2)',然后从hd0启动,如果在Winxp启动后,热备份了,下次启动时,即使从启动菜单删掉直接map扇区这一行,启动后,winxp也可以在磁盘管理器看到(hd2)。所以可以假设,svbus不依赖g4d的map,用windows的注册表就可以虚拟成ram device和disk device,然后启动成功。

我做的img,map扇区启动总是磁盘错误。请问,做虚拟磁盘(而不仅是分区)img,有不有标准方法?

点评

用BOOTICE可以做磁盘img,很方便的 首先管理员命令行 长度是字节 得到一个定长空白文件 然后去下一个新版BOOTICE(http://wuyou.net/forum.php?mod=viewthread&tid=57675&extra=page%3D1这里有) 把你的img拖  详情 回复 发表于 2018-12-24 23:24
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-24 10:45:04 | 显示全部楼层
本帖最后由 不点 于 2018-12-24 10:49 编辑

做带有分区表的 img,也很容易。

你不是已经有个 “分区 img” 吗?在它开头增加 63 个扇区,并在增加后的 首扇区填上分区表信息,就成了。

如果你不会填,或懒得填,你可以让 grub4dos 替你做这事。方法大致如下:

首先明确一下,你的 disk.img 是由两部分组成的:开头是 63 个空白扇区(全是 00 字节),紧接着就是你的 partition.img 的内容。

首先,你用 hexedit 之类的工具,为 63 个空白扇区中的第一个空白扇区,填写 55 AA 字节。这两个字节是 MBR 合法标志,是放在首扇区的尾部。 其它的分区表信息,需要用别的方法来填。下面是采用 grub4dos 的方法。

1、你用 contig.exe 或 wincontig.exe 来整理 disk.img 的碎块,让它连续,以便下面用 map 命令。

2、开机进入 grub4dos,用 map 命令把 disk.img 加载为某个虚拟硬盘,比如 (hd9):

map --sectors-per-track=63 --heads=255 (...)/.../.../disk.img (hd9)

3、让 map 生效:

map --hook

4、现在虚拟硬盘 (hd9) 已经存在了。但它没有分区表。现在就为虚拟硬盘 (hd9) 增加分区表项:

可以用 help partnew 来查看 partnew 命令的语法。注意下面的命令有危险性。如果你弄错了,你会把你真实硬盘的分区表破坏掉。注意操作的盘应该是你的虚拟盘 (hd9),千万不要是真实盘 (hd0) 或 (hd1) !

partnew  --active  (hd9,0)  0  (hd9)63+LLLLLL



partnew  --active  (hd9,0)  0  63  LLLLLL


以上两条命令是等价的,其中 LLLLLL 代表你原先的 partition.img 的总扇区数(即,总长度,用扇区数为单位来计算)。

命令行中间的的那个 type 是 0,表示自动。如果你知道它是 NTFS,你可以用 7。如果你想用 FAT32,那就用 0x0B 或 0x0C。

完了之后,你用 cat --hex (hd9)+1 看看分区表信息是否已经填上了。如果没有填上,那就是因为 grub4dos 的 map 在默认时保护 MBR,而把写入的信息丢弃了。你重新做一遍,这次为 map 命令添加 --unsafe-boot 选项,这样应该就能成功了。

注意,partnew 命令不会自动添加 MBR 的启动代码(boot record code)。它仅仅只是填写分区表信息。

上述 partnew 命令写入的是虚拟盘 (hd9) 的第一扇区(即 MBR)。也就是写入了 disk.img 的第一扇区。现在你重启电脑,进入 Windows,用 hex 工具查看 disk.img,应该发现,它已经有分区表信息了。

以上使用 grub4dos 的方法,具有危险性。你可以尝试、寻找别的方法,比如挖掘一下 BootICE 或 diskgen,八成也能够填写分区表信息。
回复 支持 反对

使用道具 举报

发表于 2018-12-24 23:24:19 | 显示全部楼层
75344840 发表于 2018-12-23 18:00
前面两个回复乱码了,重新回复。

暂时放弃U盘,回到本地硬盘测试。

用BOOTICE可以做磁盘img,很方便的
首先管理员命令行
  1. fsutil file createNew <filename> <length>
复制代码

长度是字节
得到一个定长空白文件
然后去下一个新版BOOTICE(http://wuyou.net/forum.php?mod=v ... &extra=page%3D1这里有)
把你的img拖到磁盘镜像
按分区管理
然后按里面的重新分区,选USB-HDD
就ok
最后是用imdisk什么的挂载,把数据拷贝进去,或者你也可以让g4d的map来做这个事情
回复 支持 反对

使用道具 举报

发表于 2018-12-25 07:47:25 | 显示全部楼层
谢谢大佬们。我的碰到的磁盘错误,试过BOOTICE和DIKGEN,都没能解决。可能是XP系统没装好。以后在仔细学学这些方法。

我按SVBUS README 介绍的方法 ,全新安装了XP到2G的VHD。(VHD是纯粹的RAW格式吗?反正我把文件名改回IMG了)
下面是SVBUS RAMOS的测试情况。

在本地硬盘的前端,调整出10G 的未分区空白区域,将C盘上的IMG按扇区写入方式,写入硬盘的空白区域1285200+4096001。

测试9种情形全部成功。

  title WinXP_SVBUS - FILE  ##文件位于C盘
  find --set-root --ignore-floppies /WinXP_SVBUS.img
  map /WinXP_SVBUS.img (hd0)     ##此处再次启动时,分别增加--mem 和 --mem --top
  map --hook
  root (hd0,0)
  chainloader /ntldr


title WinXP_SVBUS map (hdx,y)m+n  ##分区里的扇区,就是上面菜单FILE所在的扇区
map (hd0,0)11788800+4096001 (hd0) ##此处再次启动时,分别增加--mem 和 --mem --top
map (hd0) (hd1)
map --hook
rootnoverify (hd0)
chainloader +1


title WinXP_SVBUS map (hdx)m+n  ##未分区空白区域里的扇区
map (hd0)1285200+4096001 (hd0)   ##此处再次启动时,分别增加--mem 和 --mem --top
map (hd0) (hd1)
map --hook
rootnoverify (hd0)
chainloader +1
回复 支持 反对

使用道具 举报

发表于 2019-1-10 23:36:35 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-1-11 14:13 编辑

抽空试了下,说下步骤:
1、用winntsetup安装个WIN10LTSB2016X64到固定大小的VHD,一定要固定大小的VHD,否则grub4dos加载的时候会出现error 5:partition table invalid or corrupt的错误,因为我很久没有接触firadisk/winvlbock这一类的驱动了,全忘了。16GB内存,建了个6.6GB的vhd安装。
2、安装svbus,有点曲折。直接右击安装svbus.inf,选择安装,提示“系统策略组禁止安装此设备”,百度了下,开始——运行 ,输入 gpedit.msc 确定——计算机配置——管理模板——系统——设备安装——设备安装限制——禁止安装未有其他策略组描述的设备(在右边),双击后设置为“未配置”或“禁用”——确定。重启了下,再安装16楼yamingw大神分享的已签名的svbusX64.用这个版本,不用开启测试模式。
3、原系统BCD中添加grub4dos,把grldr(0.4.6a)和menu.lst拷贝到C盘根目录,menu.lst:
#font (bd)/boot/grub/unifont.hex
#graphicsmode -1
color white/blue blue/yellow light-red/blue 10
foreground FFFFFF
background 0000AD
timeout 2
default 0

title WIN10X64-SVBUS (/VHD/ltsb-svbus.vhd)
find --ignore-floppies --ignore-cd --set-root /VHD/ltsb-svbus.vhd
map --mem --top /VHD/ltsb-svbus.vhd (hd0)
map (hd0) (hd1)
map --e820cycles=-1
map --hook
root (hd0,0)
chainloader (hd0,0)/bootmgr
4、重启选择grub4dos,进入WIN10-svbus的RAMOS。测速如下:跟primo简直没法比,惨不忍睹!而且不支持内存动态分配,C盘是固定死的,而primo的C盘剩余空间可以与内存互为转化。最后一个是primo-win7x64测得的。
svbus测速.jpg
svbus1.1驱动.jpg

WIN7X64-DDR31600-pimo

WIN7X64-DDR31600-pimo

点评

我在自己的机子上试了下,系统都是 win10x64 LTSB。 PRIMO用的是SCSI模式,SVBus用的是原版,BCD禁用数字签名,没开测试模式,相比你的差距没有那么大,并且是互有所长。 [attachimg]385502[/attachimg] [att  详情 回复 发表于 2019-1-11 16:24
回复 支持 反对

使用道具 举报

发表于 2019-1-11 16:24:14 | 显示全部楼层
本帖最后由 lingshao 于 2019-1-11 16:44 编辑
liuzhaoyzz 发表于 2019-1-10 23:36
抽空试了下,说下步骤:
1、用winntsetup安装个WIN10LTSB2016X64到固定大小的VHD,一定要固定大小的VHD, ...


我在自己的机子上试了下,系统都是 win10x64 LTSB。
PRIMO用的是SCSI模式,SVBus用的是原版,BCD禁用数字签名,没开测试模式,相比你的差距没有那么大,并且是互有所长。

2019-01-11_160154.jpg

2019-01-11_160755.jpg

刚刚再测了个 win7x64 Primo 的一并放上来吧

2019-01-11_163455.jpg
回复 支持 反对

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2019-1-20 14:50

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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