无忧启动论坛

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

[原创] GRUB2 UEFI 下的磁盘仿真

    [复制链接]
451#
发表于 2020-11-30 18:44:45 | 只看该作者
wintoflash 发表于 2020-11-30 09:49
以前的版本也可以这样吗?

找了一个老版本20201105,也可以这样。
结果相同:img可以成功启动,ISO进PE后出错。






点评

说明磁盘是虚拟成功了,但是里面的启动分区没有虚拟成功。 ISO启动报错,是因为微软傻逼,只从光盘上 Eltorito 软盘分区里面的 bootmgfw.efi 启动,否则读不了 bcd。  详情 回复 发表于 2020-11-30 19:35
回复

使用道具 举报

452#
发表于 2020-11-30 19:02:39 | 只看该作者
本帖最后由 2011whp 于 2020-11-30 19:19 编辑

映射vd    这下眼不花了
为什么要分开 提交启动。

g4e 那边 启动本地系统 :整体提交启动没事,分开启动bootmgfw.efi有问题

不过树个标的,搞清机制,也是好事。
回复

使用道具 举报

453#
 楼主| 发表于 2020-11-30 19:33:32 | 只看该作者
2011whp 发表于 2020-11-30 18:14
安装盘标准起动序:光盘挂的软盘内的 cdboot.efi(当然改名了)下来是  bootmgr.efi 下来是bcd

Pe盘  ...

你没搞清楚我们在讨论什么,请不要干扰讨论。
回复

使用道具 举报

454#
 楼主| 发表于 2020-11-30 19:35:37 | 只看该作者
本帖最后由 wintoflash 于 2020-11-30 19:37 编辑
wuwuzz 发表于 2020-11-30 18:44
找了一个老版本20201105,也可以这样。
结果相同:img可以成功启动,ISO进PE后出错。

说明磁盘是虚拟成功了,但是里面的启动分区没有虚拟成功。
ISO启动报错,是因为微软傻逼,只从光盘上 Eltorito 软盘分区里面的 bootmgfw.efi 启动,否则读不了 bcd。
能不能在光盘里面塞个 shell,进 shell 再研究一下?
比如把软盘里面的 bootx64.efi 换成 shell,看看 ventoy 启动这个 ISO 之后,shell 能不能正常读取软盘里面的内容。
回复

使用道具 举报

455#
发表于 2020-11-30 19:47:20 | 只看该作者
wintoflash 发表于 2020-11-30 19:35
说明磁盘是虚拟成功了,但是里面的启动分区没有虚拟成功。
ISO启动报错,是因为微软傻逼,只从光盘上 El ...

请等一会,我改造一下那个PE

回复

使用道具 举报

456#
发表于 2020-11-30 21:35:03 | 只看该作者
wintoflash 发表于 2020-11-30 19:35
说明磁盘是虚拟成功了,但是里面的启动分区没有虚拟成功。
ISO启动报错,是因为微软傻逼,只从光盘上 El ...

对UEFI ISO结构不熟悉,试着改了下。
原始ISO的引导扇区情况:
其中第2段导出后是个2880K的IMG,里面有bootx64.efi



将这个img改造替换shell,重新添加到ISO后,引导扇区情况:



grub2 map ventoy并引导ISO,可以进入shell,能读取
软盘内容。情况如下:






点评

fs3和fs4是什么关系?在grub2下直接map,路径是什么?  详情 回复 发表于 2020-11-30 21:43
回复

使用道具 举报

457#
 楼主| 发表于 2020-11-30 21:43:41 | 只看该作者
wuwuzz 发表于 2020-11-30 21:35
对UEFI ISO结构不熟悉,试着改了下。
原始ISO的引导扇区情况:
其中第2段导出后是个2880K的IMG,里面有bo ...

fs3和fs4是什么关系?在grub2下直接map,路径是什么?(用 map -a)
回复

使用道具 举报

458#
发表于 2020-11-30 22:07:18 | 只看该作者
wintoflash 发表于 2020-11-30 21:43
fs3和fs4是什么关系?在grub2下直接map,路径是什么?(用 map -a)

448#的前2张图涉及到这个,应该是制作上的问题。

原始ISO引导扇区有2段,导出后第1段是4字节文件;第2段是2880K img
修改后:第1段是我们改后的2880K img;第2段是原2880K img

fs3对应的是我们修改后的IMG;
fs4对应的是原始IMG。

map -a 如下:



点评

device path看起来没毛病,那真是奇怪了。 我再想想吧。  详情 回复 发表于 2020-11-30 22:09
回复

使用道具 举报

459#
 楼主| 发表于 2020-11-30 22:09:39 | 只看该作者
wuwuzz 发表于 2020-11-30 22:07
448#的前2张图涉及到这个,应该是制作上的问题。

原始ISO引导扇区有2段,导出后第1段是4字节文件;第2 ...

device path看起来没毛病,那真是奇怪了。
我再想想吧。
回复

使用道具 举报

460#
 楼主| 发表于 2020-12-8 17:52:26 | 只看该作者
测试:
grubx64.zip (637.85 KB, 下载次数: 20)
现在map时会创建类似 GRUB4DOS 的信息,以支持 SVBus。在 WinPE 下测试是可以认出 VHD 或 ISO 的。VHD 系统不会弄,没有测试。
命令:
  1. map --mem --rt /xxx.vhd
复制代码

点评

VHD系统非常简单啊,怎么不会弄呢?直接用winntsetup就可以创建vhd+安装系统一条龙服务啊。 需要注意的是,g4d,g4e,grub2似乎都支持固定大小的vhd的map --mem,不支持动态扩展的这种vhd的map --mem,创建vhd的  详情 回复 发表于 2020-12-9 07:36
等我试试看。  详情 回复 发表于 2020-12-8 18:50
回复

使用道具 举报

461#
发表于 2020-12-8 18:27:38 | 只看该作者
最后一贴了吧了吧。。。
回复

使用道具 举报

462#
发表于 2020-12-8 18:50:57 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-8 19:11 编辑
wintoflash 发表于 2020-12-8 17:52
测试:

现在map时会创建类似 GRUB4DOS 的信息,以支持 SVBus。在 WinPE 下测试是可以认出 VHD 或 ISO 的 ...

等我试试看。
I:\boot\grub\grub.cfg
set default=0
set fallback=1
set timeout=2
set pager=20
set grub_draw_border=1

#设定菜单字体及背景颜色
set menu_color_normal=white/black
set menu_color_highlight=white/blue

loopback -m ramdisk /boot/grub/unicode.xz
loadfont (ramdisk)/grub/fonts/unicode.pf2
set locale_dir=(ramdisk)/grub/locale
set lang=zh_CN
terminal_output gfxterm


menuentry "UEFIltsb-svbus.vhd" "/VHD/UEFIltsb-svbus.vhd" {
        search --no-floppy --set --file $2
        map --mem --rt $2
}


看到了成功加载vhd到0x100000000=4GB,百分比顺利达到100%,然后继续启动到时候0xc0000225错误。




回复

使用道具 举报

463#
发表于 2020-12-9 07:36:40 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-9 08:25 编辑
wintoflash 发表于 2020-12-8 17:52
测试:

现在map时会创建类似 GRUB4DOS 的信息,以支持 SVBus。在 WinPE 下测试是可以认出 VHD 或 ISO 的 ...
VHD 系统不会弄,没有测试。

VHD系统非常简单啊,怎么不会弄呢?直接用winntsetup就可以创建vhd+安装系统一条龙服务啊。
需要注意的是,g4d,g4e,grub2似乎都支持固定大小的vhd的map --mem,不支持动态扩展的这种vhd的map --mem,创建vhd的时候必须选择固定大小的。
询问你是否更新引导扇区,选择ALL即可,ALL=BIOS+UEFI。
WINNTSETUP安装系统教程(RAMOS新手入门帖) - RAMOS - 无忧启动论坛 - Powered by Discuz! http://wuyou.net/forum.php?mod=viewthread&tid=411864&extra=page%3D1

我分享个小点的WIN10X64,可用于测试。
1、文件名称: SXWIN10X64_20180609_LTSB2016_noNET.esd
文件大小: 736.77 MB (772,559,184 字节)
MD5: 0AA7F2965F7363859C5D3FB5BE3DD4DD
精简了.NET Framework2.0、3.0、3.5、4.6,需要的可以自己装。精简了WINSXS,因此不支持msu更新。安装后C盘已用3.2GB。
https://cloud.189.cn/t/vYnqAbEFB7Nz
回复

使用道具 举报

464#
 楼主| 发表于 2020-12-9 10:34:07 | 只看该作者
本帖最后由 wintoflash 于 2020-12-9 10:48 编辑
liuzhaoyzz 发表于 2020-12-9 07:36
VHD系统非常简单啊,怎么不会弄呢?直接用winntsetup就可以创建vhd+安装系统一条龙服务啊。
需要注意 ...
SXWIN10X64_20180609_LTSB2016_noNET.esd

你的网盘里没有这个文件啊

VHD系统非常简单啊,怎么不会弄呢?直接用winntsetup就可以创建vhd+安装系统一条龙服务啊。

主要是因为我的主系统是 Linux。弄这些东西只能到虚拟机,内存只有 8GB。

点评

https://cloud.189.cn/t/vyA7vqeuYBNf 分享个更小的WIN8.1.ESD,飞天舞做的,当时也是我们为了测试UEFI-RAMOS制作的,C盘安装之后只有1.9GB!  详情 回复 发表于 2020-12-10 18:19
哦,sorry,原来是上传到了百度云盘,我立刻上传到天翼云盘上面。  详情 回复 发表于 2020-12-9 10:48
回复

使用道具 举报

465#
发表于 2020-12-9 10:48:17 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-9 11:08 编辑
wintoflash 发表于 2020-12-9 10:34
你的网盘里没有这个文件啊

哦,sorry,原来是上传到了百度云盘,我立刻上传到天翼云盘上面。
vhd建议直接用物理机,主引导可以用bootmgfw.efi那一套文件,vhd不会影响你的linux系统,可以安装多个vhd系统,互相隔离,互不影响。

linux的话,直接用grub2引导,我想说的是,grub2x64.efi可以和bootmgfw.efi并列,是两个并列的启动项,互不影响,Bootice的引导序列可以创建的。

和你相反,我的主系统是WIN10,硬盘里面还有几个veket,puppy,你的porteus什么的,基本是玩玩,没怎么用。
回复

使用道具 举报

466#
 楼主| 发表于 2020-12-9 10:49:12 | 只看该作者
本帖最后由 wintoflash 于 2020-12-9 10:50 编辑
liuzhaoyzz 发表于 2020-12-9 10:48
哦,sorry,原来是上传到了百度云盘,我立刻上传到天翼云盘上面。

发我百度链接也可以。
另外 grub2 加上vhd 模块,理论上也是可以直接启动动态vhd的。不过没怎么测试。
回复

使用道具 举报

467#
发表于 2020-12-9 10:57:31 | 只看该作者
wintoflash 发表于 2020-12-9 10:49
发我百度链接也可以。
另外 grub2 加上vhd 模块,理论上也是可以直接启动动态vhd的。不过没怎么测试。

链接: https://pan.baidu.com/s/1tIgWYzxxuB5_9Se3T9SgrA 提取码: dggd

回复

使用道具 举报

468#
 楼主| 发表于 2020-12-9 19:02:21 | 只看该作者
liuzhaoyzz 发表于 2020-12-9 07:36
VHD系统非常简单啊,怎么不会弄呢?直接用winntsetup就可以创建vhd+安装系统一条龙服务啊。
需要注意 ...
安装后C盘已用3.2GB。

弄了个3.9GB的vhd,winntsetup说空间太小了,装不上。
vhd建议直接用物理机,主引导可以用bootmgfw.efi那一套文件,vhd不会影响你的linux系统,可以安装多个vhd系统,互相隔离,互不影响。
linux的话,直接用grub2引导,我想说的是,grub2x64.efi可以和bootmgfw.efi并列,是两个并列的启动项,互不影响,Bootice的引导序列可以创建的。

我不能用物理机装Win10。用虚拟机当然是为了测试。很多时候还必须得用 QEMU 开串口调试。
回复

使用道具 举报

469#
发表于 2020-12-9 19:53:16 | 只看该作者
SVbus认出了虚拟盘

注意  D盘  和  E盘  是  我建的  300MB的 img

回复

使用道具 举报

470#
 楼主| 发表于 2020-12-9 19:56:43 | 只看该作者
2011whp 发表于 2020-12-9 19:53
SVbus认出了虚拟盘

注意  D盘  和  E盘  是  我建的  300MB的 img

这个我早就测试过可行了。
回复

使用道具 举报

471#
发表于 2020-12-9 20:54:40 | 只看该作者
liuzhaoyzz 发表于 2020-12-8 18:50
等我试试看。
I:\boot\grub\grub.cfg
set default=0

你这个是我vhd有碎片时的错误,
没碎片时的错误不是这样的
回复

使用道具 举报

472#
发表于 2020-12-10 10:12:17 | 只看该作者
wintoflash 发表于 2020-12-9 19:56
这个我早就测试过可行了。

同一个VHD,RUNTIME_SERVICES_DATA不行,RESERVED_MEMORY就可以。

哦,我那个帖子打错字了,不好意思。你看下yaya在714楼的那个帖子。

你有空的话更新grub2的map类型我来尝试下。另外发布grubx64.efi的时候,麻烦请把xz解压缩模块内置到里面。
回复

使用道具 举报

473#
 楼主| 发表于 2020-12-10 11:12:49 | 只看该作者
liuzhaoyzz 发表于 2020-12-10 10:12
同一个VHD,RUNTIME_SERVICES_DATA不行,RESERVED_MEMORY就可以。

哦,我那个帖子打错字了,不好意思 ...

改了之后,实体机测试可以了,已经推送到github了,可以直接从github上下载。
grubx64.zip (637.84 KB, 下载次数: 19)
  1. map --mem --rt (hd0,2)/ramos.vhd
复制代码

测试通过
  1. map --mem --rt (hd1,4)/Downloads/ramos.vhd.xz
复制代码

测试通过
  1. map (hd0,2)/ramos.vhd
复制代码

测试蓝屏

麻烦请把xz解压缩模块内置到里面。

有啊。
回复

使用道具 举报

474#
发表于 2020-12-10 12:24:00 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-10 13:31 编辑
wintoflash 发表于 2020-12-10 11:12
改了之后,实体机测试可以了,已经推送到github了,可以直接从github上下载。

1、测试过了,这个版本,可以成功启动UEFI-RAMOS.
J:\boot\grub\grub.cfg

set default=0
set fallback=1
set timeout=2
set pager=20
set grub_draw_border=1

#设定菜单字体及背景颜色
set menu_color_normal=white/black
set menu_color_highlight=white/blue

loopback -m ramdisk /boot/grub/unicode.xz
loadfont (ramdisk)/grub2/fonts/unicode.pf2
set locale_dir=(ramdisk)/grub2/locale
set lang=zh_CN
terminal_output gfxterm

#loadfont /boot/grub/fonts/unicode.pf2
#set locale_dir=/boot/grub/locale
#set lang=zh_CN
#set gfxmode=auto,800x600,1024x768
#terminal_output gfxterm


menuentry "0.Windows" "/EFI/Microsoft/Boot/bootmgfw.efi" --hotkey=0 {
        search --no-floppy --set --file $2
        chainloader $2
}

menuentry "ltsb-svbus.vhd" "/VHD/ltsb-svbus.vhd" {
        search --no-floppy --set --file $2
        map --mem --rt $2
}

2、直接map的话,蓝屏,提示INACCESSIBLE BOOT DEVICE.
menuentry "ltsb-svbus.vhd" "/VHD/ltsb-svbus.vhd" {
        search --no-floppy --set --file $2
        map $2
}


3、哦,xz模块的确有,我的路径写错了。




回复

使用道具 举报

475#
发表于 2020-12-10 12:58:15 | 只看该作者

我tm才制作成功,才知道在前部调整分区的时候把vhd上的win10搞坏了,
在后部划出fat分区就成功了。
10真脆弱
回复

使用道具 举报

476#
发表于 2020-12-10 13:24:23 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-10 13:27 编辑
wintoflash 发表于 2020-12-10 11:12
改了之后,实体机测试可以了,已经推送到github了,可以直接从github上下载。

再反馈个问题,UEFI-WIN7+SVBUS,加载固定大小的vhd没问题,过了100%,也完成了加载进度,但直接返回到菜单了

menuentry "SXWIN7X64EN20181104.vhd" "/VHD/SXWIN7X64EN20181104.vhd" {
        search --no-floppy --set --file $2
        map --mem --rt $2
}
回复

使用道具 举报

477#
 楼主| 发表于 2020-12-10 13:25:19 | 只看该作者
liuzhaoyzz 发表于 2020-12-10 13:24
再反馈个问题,UEFI-WIN7+SVBUS,加载vhd没问题,过了100%,也完成了加载进度,但直接返回到菜单了。

...

控制台输命令,看报错。
回复

使用道具 举报

478#
发表于 2020-12-10 13:26:06 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-10 13:29 编辑
wintoflash 发表于 2020-12-10 13:25
控制台输命令,看报错。

只有晚上看看了。
我很好奇,为什么WIN10+SVBUS就可以成功,为啥WIN7+SVBUS就不行?会不会与sunsea提到的CSM有关?一般地来说,WIN7+UEFI必须要开启CSM模块。
回复

使用道具 举报

479#
发表于 2020-12-10 13:39:12 | 只看该作者
江南一根葱 发表于 2020-12-10 12:58
我tm才制作成功,才知道在前部调整分区的时候把vhd上的win10搞坏了,
在后部划出fat分区就成功了。
10 ...

VHD里面应该不需要FAT32分区吧,VHD外面可能需要FAT32分区,保存启动文件比如grubx64.efi
回复

使用道具 举报

480#
发表于 2020-12-10 13:42:10 | 只看该作者
liuzhaoyzz 发表于 2020-12-10 13:39
VHD里面应该不需要FAT32分区吧,VHD外面可能需要FAT32分区,保存启动文件比如grubx64.efi

估计放一个启动比较省事,直接可以map后马上boot,
不放的话,还要手chainloader一下
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-19 05:46

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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