无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: y7y007
打印 上一主题 下一主题

[教程] 【RAMOS一键批处理多合一 V4.0】在线制作内存系统工具(2021/11/14)

    [复制链接]
1#
发表于 2020-12-25 23:18:34 | 显示全部楼层
在批处理的这一段(针对XP系统的)
:XP03
echo ☆☆☆☆☆☆ 正在走调整vdf的引导文件及盘符流程☆☆☆☆☆☆
echo n|copy /-y NTLDR "%Addisk%\"
echo n|copy /-y NTDETECT.COM "%Addisk%\"
echo n|copy /-y bootfont.bin "%Addisk%\"
attrib -s -h -r "%Addisk%\boot.ini"
rem 如果vdf里面不存在boot.ini(比如windows安装在两个盘符导致引导文件没拷全),那就把当前目录bootbak.ini拷贝过去。
if not exist "%Addisk%\boot.ini" copy /y .\bootbak.ini "%Addisk%\boot.ini"
rem 以下语句替换引导分区为第一分区:
sed -i "s/partition(.*)/partition(1)/" "%Addisk%\boot.ini"
sed -i "s/$/\r/" "%Addisk%\boot.ini"
attrib +h "%Addisk%\boot.ini"
reg load hklm\sys %Addisk%\windows\system32\config\system
if "%errorlevel%" neq "0" pause
reg add "%srv%Fs_Rec" /f /v "Start" /t REG_DWORD /d 0
reg add "%srv%FancyRd" /f /v "Group" /t REG_SZ /d "Event Log"
for /f "tokens=3" %%D in ('REG QUERY HKLM\sys\MountedDevices /v \DosDevices\%systemdrive%') do (REG add HKLM\sys\MountedDevices /v \DosDevices\%Addisk% /t REG_BINARY /d %%D /f)
reg delete HKLM\sys\MountedDevices /f /v \DosDevices\%systemdrive%
reg unload hklm\sys
exit /b

其中:
for /f "tokens=3" %%D in ('REG QUERY HKLM\sys\MountedDevices /v \DosDevices\%systemdrive%') do (REG add HKLM\sys\MountedDevices /v \DosDevices\%Addisk% /t REG_BINARY /d %%D /f)
这一句我执行时出错,说是命令行参数无效。

我看了一下, 这个变量 %%D 在别的地方也没定义,也没用到,到底是个啥东东?

点评

不好意思,这几天在搞UEFI-PRIMO-RAMOS方案,没有看到你的回帖,你已经解决了就好。如果想要某个人回复,最好点那个帖子,对方会收到消息。  详情 回复 发表于 2020-12-30 10:14
回复

使用道具 举报

2#
发表于 2021-9-11 06:19:51 来自手机 | 显示全部楼层
唉,今天用4.0版想做一个win10的ramos,结果好几个地方出错了。
回复

使用道具 举报

3#
发表于 2021-9-11 06:31:58 来自手机 | 显示全部楼层
第一,会弹出bootice 的界面……不知道要不要手动关闭它。第二,会弹出snapshot的界面,也不知道要怎么处理。点击了获取权限的按钮,说是可以获取读写所有文件的权限,说关闭后自动会取消权限。后来点了离开,第三,cmd界面中也有几个地方提示出错。然后制作引导盘,备份引导盘的啥都过了,最后还是出错了。它在我的E盘上复制了部分文件,象boot,EFI,WINDOWS目录等。然后生成了一个1G的引导盘,真正系统盘没有正常生成。

点评

没有使用管理员模式运行一键?  详情 回复 发表于 2021-9-11 08:38
回复

使用道具 举报

4#
发表于 2021-9-11 15:40:01 | 显示全部楼层
xiaowu2000 发表于 2021-9-11 08:38
没有使用管理员模式运行一键?

不大可能啊~~~这种错误。
回复

使用道具 举报

5#
发表于 2021-9-11 16:03:42 | 显示全部楼层
注意:无论是什么操作系统,建议原系统不要有影响启动的隐藏分区,比如有些电脑引导分区(包含ntldr/bootmgr的分区)是隐藏的,操作系统安装在另一个分区,这种情况建议把引导分区与操作系统所在的分区合并,设置激活,并分配盘符,否则可能存在无法写入RAMOS引导的问题;

===========================================

上面的话有点没看懂啊。。。象现在大部分大容量硬盘不都是这个样子吗?
引导分区是隐藏的,(ESP分区本来就是隐藏的)和操作系统不在同一个分区里,(当然不在啊)

那需要把ESP分区和操作系统分区合并吗?不要吧??
以前都没有注意到这一条啊,也从来没按这一条做过啊。

为什么会注意到这一条,是因为上次失败的时候我看了一下我新建的VHD硬盘里居然是分为了两个区,一个是操作系统所在的分区,一个是ESP分区。(我创建VHD时选择了EFI引导?其实应该选MBR引导??)
然后我查看我以前做的VHD,都是一个分区,分区表类型都是MBR。。。
然后我又认真读了一遍制作工具4.0的说明文档,发现了上面的话,其中的“原系统”应该是指要做为RAMOS的母盘(我创建的VHD)吧,并不是指安装环境(指我现有的硬盘)吧?

点评

这是以前在BIOS下面的情况,以前担心不能较好地处理BIOS下面引导分区是没有分配盘符的隐藏分区,可能会有问题,现在问题应该不存在了。这个说的不是UEFI启动的场景,因此ESP分区,不存在这个问题,现在ESP分区也  详情 回复 发表于 2021-9-15 12:20
回复

使用道具 举报

6#
发表于 2021-9-11 16:48:49 | 显示全部楼层



回复

使用道具 举报

7#
发表于 2021-9-12 13:39:08 | 显示全部楼层


踩踩踩。又出错?!
这个出错信息也不太友好……我都不知道这个错误是哪条批处理命令出错了,只能勉强通过标题和下面的提示初步判断大体的位置。


对了,刚刚一开始选择硬盘分区的时候提示我说我选择的那个不太好,有啥啥问题,但是,它没有给我更改的机会!!!
这个程序这里我觉得应该改进一下,你既然说我选的分区不太理想,那好歹给我个重新选择的机会啊,或者也问问我是要重选还是一条路走到黑啊……



回复

使用道具 举报

8#
发表于 2021-9-12 17:45:21 | 显示全部楼层
好像 对WIN11来讲,这个工具不太适合。
那我整个win10来玩,应该不会出错吧?

可是,第一个地方就出错了!
没截图。就是一开始出现CMD窗口时就出了个错。然后才出来菜单。 菜单我选了0,然后选了存放VDF的盘符,路径,这些都没问题。
到70%时又出错了!

具体信息如图。而且 bootice出现过好几次了……
回复

使用道具 举报

9#
发表于 2021-9-13 21:30:12 | 显示全部楼层
在自己电脑上做的时候又没遇上啥问题。用的同样的母盘(win10)……做完进去后检测了一下磁盘速度,应该还行。

回复

使用道具 举报

10#
发表于 2021-9-14 10:22:58 | 显示全部楼层
liuzhaoyzz 发表于 2021-9-13 21:55
看截图有可能是文件读写权限问题,就是ACL问题。你懂得看批处理代码,可以自己排查下啊。

太高看我了……这密密麻麻的代码,隔了几个月不玩RAMOS了,记不得了。何况又更新了不少东西。
回复

使用道具 举报

11#
发表于 2021-9-14 11:13:20 | 显示全部楼层
本帖最后由 ko20010214 于 2021-9-14 17:26 编辑

这个ACL问题咋整啊?真是奇怪,我明明是用的administrator来登陆系统的,怎么还会权限不够呢?
那我要咋办?我要用什么用户登陆才能有权限呢。
还有,同样的系统,为啥家里那台电脑就没这个麻烦呢

点评

即使以administrator登录的系统,仍然有可能有ACL权限问题。 权限问题,你复制粘贴个文件到某个文件夹试试看,有些系统引导分区不能复制文件进去,ACL权限问题,网络上有很多图文啊。我自己曾经也在论坛发过帖子,  详情 回复 发表于 2021-9-15 12:33
回复

使用道具 举报

12#
发表于 2021-9-14 11:13:29 | 显示全部楼层
liuzhaoyzz 发表于 2021-9-13 21:50
RPIO模式,我已放弃维护,所有基于微软ramdisk.sys的模式,都放弃了维护,这个是中间产物,现在完全可以 ...

UEFI+GPT硬盘+64位系统大内存用户推荐用g4e/grub2_UEFI+Primo土豪双镜像模式,一般用户推荐用g4e/grub2_UEFI+Primo-SCSI双镜像制作。
=========================
我是按推荐的0模式做的,应该不是RPIO模式吧。电脑是UEFI启动的。但我装Primo后启动不了,会卡在LOGO里。同样的系统,同样的工具,在我自己电脑上就不会,在办公室电脑上就卡?所以我就是会看批处理也没用啊
回复

使用道具 举报

13#
发表于 2021-9-14 11:14:10 | 显示全部楼层
本帖最后由 ko20010214 于 2021-9-14 17:30 编辑

哈,我试着提升权限来运行那些不够权限的,可是太多参数了,而且驱动器顺序也不对,没法手工制作。
回复

使用道具 举报

14#
发表于 2021-9-14 20:39:07 | 显示全部楼层
本帖最后由 ko20010214 于 2021-9-21 16:30 编辑

怪事年年有。。。winntsetup.exe 安装系统时选引导盘不应该有三个绿灯吗?我这只有1个。
纯EFI下只有一个,有bootmgr的情况下有三个。好像是这样的。这个是正常的。我只是因为(一)对winntsetup不懂,(二)用一键制作RAMOS出错就疑神疑鬼 而已。



回复

使用道具 举报

15#
发表于 2021-9-16 22:54:45 来自手机 | 显示全部楼层
晕,现在装primo又没问题了……莫名其妙啊。只是权限问题还有。然后在生成内存盘时盘符居然不是Y,而是Z,这岂不是和esp分区冲突了吗?反正现在一团糟,而我反馈的情况也没有什么价值。只是随便记录一下我遇到的问题罢了。
回复

使用道具 举报

16#
发表于 2021-9-19 14:59:39 来自手机 | 显示全部楼层
liuzhaoyzz 发表于 2021-9-15 12:33
即使以administrator登录的系统,仍然有可能有ACL权限问题。
权限问题,你复制粘贴个文件到某个文件夹试 ...

这个批处理里面的 %Addisk%这个参数在哪里定义的啊? 我怎么没找到? 我在批处理里加入显示这个参数的语句,结果这个为空??
按说是上面那个“开始寻找空盘”里能把%%i赋值给Addisk的啊。

另,在最新的1.7.6版中,创建vhd时有一条语句出错。见截图。
然后我不知道为什么,显示esp分区时能找到是Z盘,可是创建ramdisk时盘符也是Z。

还有,我找不到 rxprd.txt这个文件。



IMG_20210919_144009.jpg (46.38 KB, 下载次数: 145)

IMG_20210919_144009.jpg
回复

使用道具 举报

17#
发表于 2021-9-21 01:30:23 来自手机 | 显示全部楼层
liuzhaoyzz 发表于 2021-9-19 20:43
1、982行有Addisk定义啊。



我修改了一下这一段,添加了显示 Addisk值的语句。
结果发现: 循环体内的语句并没有执行。
然后我把循环体内的语句改成三行,而不是用&&连结的一行,就正常了。
回复

使用道具 举报

18#
发表于 2021-9-21 16:21:46 | 显示全部楼层
本帖最后由 ko20010214 于 2021-9-21 16:27 编辑
liuzhaoyzz 发表于 2021-9-21 08:32
员外的代码,每动一处代码,就需要调试,有时候牵一发而动全身,所以员外的代码没有发现问题的,能不动我 ...

就代码实现的功能而言,很强大。
就代码的可读性来讲,有点不足。想调试代码时比较麻烦,幸好我以前看反汇编的代码看得多,里面本身也全是跳转和调用子程序的语句,对于流程还能顺藤摸瓜,找到出处。但是建议有些关键地方还是多放点提示,而且不同的case里的提示最好也有所区别,这样比较容易看清程序走到哪了……
就代码的容错性来讲,也有些处理得不全。就跟前面说的那样,你既然提醒我说放在后面的分区不太好,容易出问题,那你好歹给我个机会让我重新选择一个分区吧,或者让我确认是不是执意要放在那个分区里,默认个3秒5秒不回答就让流程自动走下去,如果回答重新选择一次就让人有机会再去选择一个分区。还有,象是检测空盘符那里,这种重要的参数如果检测到没有赋值就应该给出提示,然后转入出错处理的子程序中。
另外,真正完善的出错处理,应该做到:
1. 判断错误的严重性,不严重的,可以补救的,转入补救的子程序中。
2. 严重的,不可继续的,中断程序的流程,最好还能清除前面的程序对系统造成的影响,对前面的操作进行回滚,就象一些严谨的安装程序一样,一但检测到无法继续下去的错误,会对安装进行回滚。
3.对一些意想不到的错误,也应该全盘考虑进去,一旦捕捉到错误,能及时地转入出错处理中去。

感觉这个程序(姑且称之为程序吧),只做到了实现想要的功能,在万事顺利的情况下能做出想要的东西来,没做到出现意外的情况下,怎么让使用者得到有用的提示,并指导使用者如何去避免出错的发生。

总之,这个程序能让人在顺利的情况下做出RAMOS的成品,非常棒!已经是很了不起的工具了!只是希望它能变得更智能,更完美。

至于说上面的代码里为什么要 建立一个虚拟路径又删除,估计是测试这个盘符可不可用罢了。
我怀疑后面的 stdrive 之类的赋值也有问题,所以SNAPSHOT本来是静默完成的,结果也跳出个界面来(就象BootICE在Addisk没赋值的情况下也跳出界面来一样),我再去查查代码。
回复

使用道具 举报

19#
发表于 2021-9-21 16:38:42 | 显示全部楼层
本帖最后由 ko20010214 于 2021-9-21 16:45 编辑
liuzhaoyzz 发表于 2021-9-21 08:32
员外的代码,每动一处代码,就需要调试,有时候牵一发而动全身,所以员外的代码没有发现问题的,能不动我 ...

你修改的代码我单独测试了一下,可用。我怀疑员外的代码为什么要用subst呢,是测试盘符能不能正常使用,能用subst建立虚拟路径的话,才进行下一步(删除虚拟路径并赋值给Addisk)。
如果不能就跳出去了。下一步中能删除虚拟路径才赋值给Addisk,如果不能,也跳出去。 然后我的测试环境中估计是Subst出错,所以Addisk一直没有被赋值。(我的环境变量中的temp被更改到D盘的相应目录中了,而不是在系统盘里,不知道是不是这个原因让subst出错了)
回复

使用道具 举报

20#
发表于 2021-9-22 14:20:17 | 显示全部楼层
本帖最后由 ko20010214 于 2021-9-22 14:21 编辑

我在1.7.8.5预览版的基础上修改了某些地方,以便程序能正常走下去。
第一个地方,是


我怀疑程序漏写了这一段代码(其它地方都有它,唯独这里没有),造成stdrive没有赋值,就会造成 snapshot弹出窗口来。如下图:



为了调试方便,我把这里修改了一下:


然后程序走到这里时出了个错,说找不到注册表项之类的东东:



然后我在另一个CMD窗口把
reg load hklm\sys %Addisk%\windows\system32\config\system

改成
reg load hklm\sys    Y:\windows\system32\config\system

却成功执行。
(我也不知道是不是应该改成Y:, 因为好像当时会有两个虚拟硬盘,一个是X,ramdisk, 一个是Y,system)

最后提示完成将自动重启,我开机按F12选择进RAMOS时却出错。
回到正常系统里看生成的VDF文件好像大小不对,太小了,一个300M多点,一个100M多点。肯定哪里还是出问题了。







回复

使用道具 举报

21#
发表于 2021-9-22 14:53:39 | 显示全部楼层
本帖最后由 ko20010214 于 2021-9-22 21:44 编辑

找ESP分区的子程序 是不是也有问题?
我有三个硬盘,所以有三个ESP分区,加载为 X Y Z
我启动时其实应该是Y盘的BCD在起作用……如图:




但程序只找到了Z盘和C盘……
但是重启后再看,又是对的,只加载了一个ESP分区为Z盘,内容也是对的。这个好像没问题。




我知道为什么会在后面加载注册表项时会出错了。 因为目标盘符搞错了。



:win810
echo ☆☆☆☆☆☆ 正在走Win8/10流程(win810),如发生错误,请检查你的系统是否支持bcdedit ☆☆☆☆☆☆
bootmode C:|find /i "BIOS" || (
bcdboot %systemdrive%\Windows /s %Addisk% /f UEFI
rem UEFI模式,注意目录下bcd覆盖到RAMOS盘之后,guid是{default}
attrib -s -h -r "%Addisk%\EFI\Microsoft\Boot\bcd" 1>nul 2>nul
xcopy /yh "BCD" "%Addisk%\EFI\Microsoft\Boot\" 1>nul 2>nul
bcdedit /store %Addisk%\EFI\Microsoft\Boot\bcd /set {default} device partition=%Addisk%
bcdedit /store %Addisk%\EFI\Microsoft\Boot\bcd /set {default} osdevice partition=%Addisk%
bcdedit /store %Addisk%\EFI\Microsoft\Boot\bcd /set {default} path \windows\system32\winload.efi
)

if not exist "%Addisk%\boot" md "%Addisk%\boot"
copy /y "BCD" "%Addisk%\boot\bcd" 1>nul 2>nul
copy /y "bootmgr" "%Addisk%\bootmgr" 1>nul 2>nul
attrib +s +h "%Addisk%\boot\bcd" 1>nul 2>nul
attrib +s +h "%Addisk%\bootmgr" 1>nul 2>nul
bcdedit /store %Addisk%\boot\bcd /set {default} path \windows\system32\%winload%
if "%errorlevel%" neq "0" echo error0  
pause
reg load hklm\sys %Addisk%\windows\system32\config\system
if "%errorlevel%" neq "0" echo error1
echo Addisk=%Addisk%, stdrive=%Stdrive%
SET /P drive_letter=   请输入你要选择安装的分区
reg load hklm\sys %drive_letter%\windows\system32\config\system

程序走到这里时,全是对Addisk的操作,而Addisk此时值为X:,查看X盘里只有刚刚复制过来的boot和EFI的目录 ,并没有系统,当然找不到注册表项了。 stdrive的值为Y:, Y盘里倒是有系统。
我在出错后将Y盘里的内容复制到X盘(但有57个文件夹无法复制),再执行 reg load hklm\sys X:\windows\system32\config\system 就没问题了。
后续制作出来的VDF也是正常大小了,重启后进RAMOS也能进了,(就是提示回收站有问题,要我清空回收站),磁盘检测速度测试应该也算正常吧。


究其原因,大概是引入了临时虚拟盘这个东东,导致了SNA恢复系统到目标盘时盘符搞错了(我的环境下suvhd变量值为1)……
好像是又引入的tardisk这个参数没有赋值?
具体怎么搞错的,可能写程序的更清楚,更容易查到吧。
我得再做一遍才能搞清。



回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-10 06:32

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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