无忧启动论坛

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

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

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

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

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

使用道具 举报

452#
 楼主| 发表于 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
回复

使用道具 举报

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

使用道具 举报

454#
发表于 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错误。




点评

你这个是我vhd有碎片时的错误, 没碎片时的错误不是这样的  详情 回复 发表于 2020-12-9 20:54
回复

使用道具 举报

455#
发表于 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

点评

弄了个3.9GB的vhd,winntsetup说空间太小了,装不上。 我不能用物理机装Win10。用虚拟机当然是为了测试。很多时候还必须得用 QEMU 开串口调试。  详情 回复 发表于 2020-12-9 19:02
你的网盘里没有这个文件啊  详情 回复 发表于 2020-12-9 10:34
回复

使用道具 举报

456#
 楼主| 发表于 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
回复

使用道具 举报

457#
发表于 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什么的,基本是玩玩,没怎么用。

点评

发我百度链接也可以。  详情 回复 发表于 2020-12-9 10:49
回复

使用道具 举报

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

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

点评

链接: https://pan.baidu.com/s/1tIgWYzxxuB5_9Se3T9SgrA 提取码: dggd  详情 回复 发表于 2020-12-9 10:57
回复

使用道具 举报

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

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

回复

使用道具 举报

460#
 楼主| 发表于 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 开串口调试。
回复

使用道具 举报

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

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

点评

这个我早就测试过可行了。  详情 回复 发表于 2020-12-9 19:56
回复

使用道具 举报

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

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

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

点评

同一个VHD,RUNTIME_SERVICES_DATA不行,RESERVED_MEMORY就可以。 哦,我那个帖子打错字了,不好意思。你看下yaya在714楼的那个帖子。 你有空的话更新grub2的map类型我来尝试下。另外发布grubx64.efi的时候,  详情 回复 发表于 2020-12-10 10:12
回复

使用道具 举报

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

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

使用道具 举报

464#
发表于 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解压缩模块内置到里面。

点评

改了之后,实体机测试可以了,已经推送到github了,可以直接从github上下载。 测试通过 测试通过 测试蓝屏 有啊。  详情 回复 发表于 2020-12-10 11:12
回复

使用道具 举报

465#
 楼主| 发表于 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, 下载次数: 18)
  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解压缩模块内置到里面。

有啊。

点评

再反馈个问题,UEFI-WIN7+SVBUS,加载vhd没问题,过了100%,也完成了加载进度,但直接返回到菜单了。  详情 回复 发表于 2020-12-10 13:24
测试过了,这个版本,可以成功启动UEFI-RAMOS. 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_  详情 回复 发表于 2020-12-10 12:24
回复

使用道具 举报

466#
发表于 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模块的确有,我的路径写错了。




回复

使用道具 举报

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

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

点评

VHD里面应该不需要FAT32分区吧,VHD外面可能需要FAT32分区,保存启动文件比如grubx64.efi  详情 回复 发表于 2020-12-10 13:39
回复

使用道具 举报

468#
发表于 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
}

点评

控制台输命令,看报错。  详情 回复 发表于 2020-12-10 13:25
回复

使用道具 举报

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

...

控制台输命令,看报错。

点评

只有晚上看看了。  详情 回复 发表于 2020-12-10 13:26
回复

使用道具 举报

470#
发表于 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模块。

点评

csm不开的话要有显卡驱动吧,不然貌似会黑屏 我纯uefi下启过wim格式的ramoswin7  详情 回复 发表于 2020-12-10 13:43
回复

使用道具 举报

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

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

点评

必须有/EFI/BOOT/BOOTX64.EFI,位于 UEFI 认可的分区里 (FAT)。 如果用 NTBOOT 的话可以不用。  详情 回复 发表于 2020-12-10 13:46
估计放一个启动比较省事,直接可以map后马上boot, 不放的话,还要手chainloader一下  详情 回复 发表于 2020-12-10 13:42
回复

使用道具 举报

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

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

点评

vhd单分区,也是直接map即可,不需要chainloader  详情 回复 发表于 2020-12-10 17:56
回复

使用道具 举报

473#
发表于 2020-12-10 13:43:21 | 只看该作者
liuzhaoyzz 发表于 2020-12-10 13:26
只有晚上看看了。
我很好奇,为什么WIN10+SVBUS就可以成功,为啥WIN7+SVBUS就不行?会不会与sunsea提到 ...

csm不开的话要有显卡驱动吧,不然貌似会黑屏
我纯uefi下启过wim格式的ramoswin7
回复

使用道具 举报

474#
 楼主| 发表于 2020-12-10 13:46:15 | 只看该作者
本帖最后由 wintoflash 于 2020-12-10 13:52 编辑
liuzhaoyzz 发表于 2020-12-10 13:39
VHD里面应该不需要FAT32分区吧,VHD外面可能需要FAT32分区,保存启动文件比如grubx64.efi

必须有/EFI/BOOT/BOOTX64.EFI,位于 UEFI 认可的分区里 (FAT)。
如果用 NTBOOT 启动VHD的话可以不需要这个。

点评

不是这样子的。 以我的笔记本为例,必须要一个FAT32分区用作UEFI启动才能添加UEFI序列,然后VHD之外有一个FAT32分区,VHD里面只需要一个MBR格式的NTFS分区即可。最主要的是主板→第一引导bootx64.efi要能够被识别,  详情 回复 发表于 2020-12-10 17:11
efiload那个 ntfs驱动后会不会可以认ntfs分区里的  详情 回复 发表于 2020-12-10 14:20
回复

使用道具 举报

475#
发表于 2020-12-10 14:20:52 来自手机 | 只看该作者
wintoflash 发表于 2020-12-10 13:46
必须有/EFI/BOOT/BOOTX64.EFI,位于 UEFI 认可的分区里 (FAT)。
如果用 NTBOOT 启动VHD的话可以不需要这 ...

efiload那个 ntfs驱动后会不会可以认ntfs分区里的

点评

intel 就是这么造的(我想开源后,也是这样的),只是没人用,(我这么用了一段时间了)  详情 回复 发表于 2020-12-11 11:35
可以。那ntfs里面也得有/efi/boot/bootx64.efi啊。  详情 回复 发表于 2020-12-10 14:35
回复

使用道具 举报

476#
 楼主| 发表于 2020-12-10 14:35:06 | 只看该作者
江南一根葱 发表于 2020-12-10 14:20
efiload那个 ntfs驱动后会不会可以认ntfs分区里的

可以。那ntfs里面也得有/efi/boot/bootx64.efi啊。

点评

直接上图8GBVHD, 20GB内存,WIN7X64 逆光拍摄的看不太清楚  详情 回复 发表于 2020-12-10 17:09
回复

使用道具 举报

477#
发表于 2020-12-10 17:09:42 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-10 19:43 编辑
wintoflash 发表于 2020-12-10 14:35
可以。那ntfs里面也得有/efi/boot/bootx64.efi啊。

直接上图8GBVHD, 20GB内存,WIN7X64
逆光拍摄的看不太清楚

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


手工输入的是:
map --mem --rt (hd1,msdos2)/VHD/SX70211.vhd
完了之后好像直接死机了。

刚才又试了win8.1.vhd,跟win7x64是类似的结果。

QQ图片20201210170926.jpg (56 KB, 下载次数: 117)

QQ图片20201210170926.jpg
回复

使用道具 举报

478#
发表于 2020-12-10 17:11:54 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-10 17:55 编辑
wintoflash 发表于 2020-12-10 13:46
必须有/EFI/BOOT/BOOTX64.EFI,位于 UEFI 认可的分区里 (FAT)。
如果用 NTBOOT 启动VHD的话可以不需要这 ...

不是这样子的。
以我的笔记本为例,必须要一个FAT32分区用作UEFI启动才能添加UEFI序列,然后VHD之外有一个FAT32分区,VHD里面只需要一个MBR格式的NTFS分区即可。最主要的是主板→第一引导bootmgfw.efi要能够被识别,识别之后,VHD里面是否有FAT32分区完全不影响启动,本人亲测。

其实想想也可以理解,VHD不过是以一种特殊的形式组织的“磁盘”,VHD之外已经有了FAT32启动分区了,VHD相当于第二个分区,VHD里面不要那么多分区。

点评

这和我说的 "NTBOOT" 方式一样。 你还是没有理解 map 到底做了什么。map 是创建了一整个虚拟的硬盘 (或光盘、软盘),并且模仿固件的启动方法,启动这个硬盘。 至于硬盘里面具体是什么系统,那不重要。你说要  详情 回复 发表于 2020-12-10 18:33
回复

使用道具 举报

479#
发表于 2020-12-10 17:56:28 来自手机 | 只看该作者
江南一根葱 发表于 2020-12-10 13:42
估计放一个启动比较省事,直接可以map后马上boot,
不放的话,还要手chainloader一下

vhd单分区,也是直接map即可,不需要chainloader
回复

使用道具 举报

480#
发表于 2020-12-10 18:19:31 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-11 14:07 编辑
wintoflash 发表于 2020-12-9 10:34
你的网盘里没有这个文件啊

1、
https://cloud.189.cn/t/vyA7vqeuYBNf微信扫描二维码即可下载。(免费的)

看起来你喜欢百度盘?链接: https://pan.baidu.com/s/11JDKTzBOJh84JapGwxDAcA 提取码: tcb4

分享个更小的442MB WIN8.1.ESD,飞天舞做的,当时也是我们为了测试UEFI-RAMOS制作的,C盘安装之后只有1.9GB!

       忘了说了,这个esd第一次部署的时候BCD必须选择文本模式才能正常部署,bootice倒数第二个选项哪里。 不要勾选启用WIN8 Metro启动界面.jpg





2、文件名称: SXWIN7X64_20180417_noNET.esd
文件大小: 387.19 MB (405,993,262 字节)
MD5: 9FAE30ED513E1230078BADF560060192
不带.net的安装后C盘已用空间1.8GB,精简了WINSXS和.net,不支持msu更新。下载地址1:https://cloud.189.cn/t/UvQF73QVbURz


回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-19 14:06

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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