无忧启动论坛

标题: 基于svbus驱动+grub4dos或grub2制作的UEFI-RAMOS和BIOS-RAMOS教程 [打印本页]

作者: liuzhaoyzz    时间: 2020-12-11 12:05
标题: 基于svbus驱动+grub4dos或grub2制作的UEFI-RAMOS和BIOS-RAMOS教程
本帖最后由 liuzhaoyzz 于 2020-12-31 08:42 编辑

基于svbus驱动+grub4dosgrub2制作的UEFI-RAMOSBIOS-RAMOS教程
用grub4dosUEFI或grub22020-12-10版本搭配svbus驱动,在wintoflash、2011yaya2007777 、sunsea等诸位大神的努力下,终于攻克了UEFI-RAMOS制作,这是不依赖于微软的ramdisk.sys驱动的全内存的UEFI-RAMOS全新方案,其实制作方法很简单,就是安装驱动+写引导菜单而已,只是还有很多方面没有进行具体验证,有待通过大家的讨论和实战进一步验证其稳定性、兼容性等各个方面,同时期待这个帖子的发布能够进一步引领大家研究基于primo驱动的全内存UEFI-RAMOS方案,起到一个抛砖引玉的作用。本文同时附带地讲了下BIOS-RAMOS下面的引导菜单。
1、软硬件要求
UEFI启动,现在的UEFI固件一般都是64位的,一般需要64位的WIN7、8、10操作系统,目前我成功地制作了基于svbusWIN7、WIN8、WIN10X64-RAMOS(注意WIN7企业版和旗舰版原生支持VHD启动,WIN7家庭版和专业版原生不支持VHD启动;WIN8专业版以上似乎都是原生支持VHD启动)推荐用WINNTSETUP安装在固定大小的VHD中,安装的时候优化设置中建议勾选关闭虚拟内存和休眠,物理内存≥VHD盘总空间的50%~70%+4GB,物理内存推荐8G或以上(越大越好),推荐用精简系统。
BIOS启动,WIN7企业版和旗舰版以上因为原生支持VHD启动,制作起来较为方便;XP/2003因为原生不支持VHD启动,需要离线注入svbus驱动才可以(这个我没有尝试),或者在线安装驱动之后拷贝到VHD中(这个我没有尝试),BIOS-RAMOS制作,还是推荐大家直接用芈员外的《RAMOS一键批处理多合一V3.8.7》的方案更好。
2、可能用到的工具和软件
grub4dos UEFI2020-12-15之后的版本或grub22020-12-15之后的版本,bootice,WINPE,WINNTSETUP单文件版,Windows安装包(可能是iso、esd、wim格式)、double drive或者驱动精灵,对于WIN7可能需要红毛樱木的ceomsx或者sinoxer的usb3驱动注入工具备用(WIN8以上不需要)。
我把部分工具分享到网盘里。https://cloud.189.cn/t/m6J3EvFnmIvu
微信扫描二维码登录即可下载。(免费的)
3VHD系统安装
WINNTSETUP安装系统教程(RAMOS新手入门帖) - RAMOS - 无忧启动论坛http://wuyou.net/forum.php?mod=viewthread&tid=411864&extra=page%3D1
需要注意:建议采用固定大小的VHD。
3.1如果VHD内部采用MBR分区表,只有一个NTFS分区方案(推荐)
对于g4e2020-12-15以后版本,需要用load/EFI/grub/ntfs_x64.efi加载ntfs_x64.efi驱动,否则g4e会出现” boot_image_handle notfound”的错误。
对于grub2,需要加载grub2-latest2020-12-17\arch\x64\builtin.txt最后加上 efiload模块,用build_grub.bat定制得到grubx64.efi,然后用efiload/EFI/grub/ntfs_x64.efi加载ntfs_x64.efi驱动,否则g4e在加载vhd镜像到内存之后会跳转回菜单。
3.2如果VHD内部采用MBR分区表,一个激活的FAT32分区+NTFS分区方案(不推荐)
(1)WIN7、WIN8的VHD内部要用FAT32+NTFS双分区,WIN10的VHD我测试了NTFS单分区也可以,分区格式我用的是MBR,这样子可以确保BIOS/UEFI双启动。(2)采用FAT32+NTFS双分区VHD内部的BCD和VHD外部的BCD都需要做相应调整,否则VHD和RAMOS无法启动。具体如下:
1)如果原来VHD内部是单分区,可以进入PE,挂载该VHD,用傲梅分区助手在硬盘前部划分出一个分区出来,创建一个新的FAT32分区,然后格式化,然后用bcdboot修复引导,bcdboot%windisk%:\windows /s %bootdisk%: /l zh-CN /f %bootmode%,注意windows所在的盘符,要选择VHD的NTFS所在分区的那个盘符。批处理网盘里面有。
然后删除NTFS分区里面的EFI和boot目录,(改个名字也可以),否则对于WIN7、WIN8,grub4dos UEFI版本加载的时候仍然会出现” boot_image_handlenot found”的错误。
2)分区调整好之后,还要调整VHD内部的BCD,(VHD的FAT32/ESP)\EFI\Microsoft\Boot\BCD,手工选择启动磁盘和启动分区,启动分区就是VHD内部的那个NTFS分区:
vhd内部的启动分区手工选择.jpg
(3)VHD内部的启动分区调整好之后,还要调整VHD外部的BCD,否则用bootmgfw.efi启动vhd的时候会提示0xc000000f错误,(主硬盘FAT32/ESP)\EFI\Microsoft\Boot\BCD:
VHD双分区-要引导分区选择.png

如果你原来的VHD系统是BIOS模式启动的,想增加UEFI启动模式,可以挂载VHD之后,用bcdboot命令一键修复引导,因为我记住不命令参数,为了方便,我提供一个《一键修复引导.bat》的批处理。
bcdboot %windisk%:\windows/s %bootdisk%: /l zh-CN /f %bootmode%

4svbus驱动安装
VHD系统安装好之后,进入VHD系统,安装svbus驱动,因为WIN10有比较严格的驱动签名机制,关闭BCD中驱动签名验证实测无效(可能需要按F8关闭签名验证吧,没有实际测试),开源的原版svbus没有通过win10的签名,我联系了朱玛,给svbus驱动添加了HT Srl证书签名。
(1)首先双击EVRootCA.reg注册表文件导入到注册表,否则svbus安装的时候可能会出现“试图将驱动程序添加到存储区时遇到问题”的错误。
image2.png    
(2) 直接右击安装svbus.inf,选择安装,可能会提示“系统策略组禁止安装此设备”,百度了下,开始——运行 ,输入 gpedit.msc 确定——计算机配置——管理模板——系统——设备安装——设备安装限制——禁止安装未有其他策略组描述的设备(在右边),双击后设置为“未配置”或“禁用”——确定。重启下电脑再次安装签名的svbus驱动。
    image3.png
(3)如果上面的方法安装失败,用添加过时硬件的方法添加,右击我的电脑→属性→设备管理器→选择本机→操作→添加过时硬件→安装我手动从列表选择的硬件(高级)→从磁盘安装→选择svbus.inf,信任HT Srl证书确认即可。
image4.png   
【温馨提示】svbus安装好之后最好重启下电脑,以确保驱动生效。
5VHD碎片消除(不一定必须)
VHD安装好之后可能有碎片,BIOS下启动如果碎片超过32个可能不行;UEFI下未验证,消除碎片的办法,不要挂载VHD,在PE中:
方法一,复制粘贴该vhd,副本就是没有碎片的,前提是需要硬盘有足够的剩余空间用于腾挪。
方法二,直接用wincontig分析并整理文件。前提也是需要硬盘有足够的剩余空间。
一般地来说,上面的方法对于机械硬盘很有效。对于ssd不一定有效果,因为ssd有FTL逻辑转换电路中间层,ssd直接格盘拷贝文件进去,应该就是连续的吧。
6、复制引导文件并建立引导菜单
上面的网盘里面有grub4dos和grub2引导器目录结构及其引导菜单示例.rar,解压缩到ESP或者FAT32引导分区,然后对照着自己vhd的路径作相应修改既可,grub4dos、grub2引导器最新版可以从官网下载更新。
(1)  UEFI可以用grub4dosUEFI来作为主引导。从grub4dosUEFI官网:http://grub4dos.chenall.net/categories/0-4-6a-for-UEFI/,下载grub4dos UEFI2020-12-09之后的版本,把bootx64.efi放到(ESP或者FAT32引导分区)\EFI\boot\目录下面,并用Bootice添加UEFI引导序列,指向(ESP或者FAT32引导分区)\EFI\boot\bootx64.efi,(有些主板能够自动添加这个UEFI引导序列)。
image5.jpg

grub4dos UEFI默认引导菜单是\EFI\grub\menu.lst文件,文件要用utf-8编码,示例如下:
timeout 5
default 0
graphicsmode -1 800
#graphicsmode -1 -1 -1 24:32
#graphicsmode -1 640:800 480:600 24:32 || graphicsmode -1 -1 -1 24:32
find --ignore-floppies --set-root /efi/grub/unifont.hex.gz
font /efi/grub/unifont.hex.gz
#splashimage /efi/grub/lt.jpg
color normal=0x55ffff highlight=0xff00ff helptext=0xffff55 standard=0x55ffff border=0xaaaaaa
#color normal=0x07 highlight=0xE1 helptext=0x07 heading=0x02
setmenu --box x=4 w=60 y=6 h=9 l=2
setmenu --keyhelp=1 --lang=zh
setmenu --auto-num-on
setmenu --keyhelp=1=0x66ff00
setmenu --string=m=2=0x0000000000ffff="G4D维护菜单"
setmenu --string=s=1=0x8800000000ffff="date&time=yyyy-MM-dd  HH:mm:ss"
setmenu --timeout=90=2=0x88000000ffff
setmenu --hotkey -A [F4] commandline

title WIN7X64-SVBUS (/VHD/SX70211.vhd)
find --ignore-floppies --ignore-cd --set-root /EFI/grub/ntfs_x64.efi
load /EFI/grub/ntfs_x64.efi
find --ignore-floppies --ignore-cd --set-root /VHD/SX70211.vhd
map --mem --top /VHD/SX70211.vhd (hd)
chainloader (hd-1)

(2)UEFI也可以用grub2来引导,wintoflash大神在官方的grub2.04的基础上做了大量的修改,使之支持map,代码已开源https://github.com/a1ive/grub/releases/tag/latest,若下载慢可用 http://gitd.cc/ 下载。把grubx64.efi放到(ESP或者FAT32引导分区)\EFI\boot\目录下面,并用Bootice添加UEFI引导序列,指向(ESP或者FAT32引导分区)\EFI\boot\grubx64.efi。
image6.jpg

grub2默认引导菜单是\boot\grub\grub.cfg文件,文件要用utf-8编码,示例如下:
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 "SX70211.vhd-svbus" "/VHD/SX70211.vhd" {
search --no-floppy --set=ntfs --file /EFI/grub/ntfs_x64.efi
efiload ($ntfs)/EFI/grub/ntfs_x64.efi
search --no-floppy --set --file $2
map --mem --rt -l $2
}

menuentry "SX70211.vhd-svbus-ntboot" "/VHD/SX70211.vhd" {
search --no-floppy --set --file $2
map --mem --rt -l $2
ntboot --win --highest=no --efi=(vd0,1)/EFI/boot/bootx64.efi --winload=\\Windows\\System32\\winload.efi (vd0,1)
}


(3)BIOS下可以用grub4dosBIOS版本来引导。Grub4dosBIOS版本下载地址:http://grub4dos.chenall.net/categories/0-4-6a/,以常用的引导流程为例,一般是windows的bootmgr→BCD→grldr→menu.lst,从压缩包提取到任意分区根目录,推荐直接放到引导分区根目录下面,用bootice编辑\boot\bcd,添加“实模式启动项grub”,如下图所示。
   image7.png

grldr会依次查找\menu.lst→\boot\menu.lst→\boot\grub\menu.lst文件并加载,\menu.lst文件推荐用utf-8编码,菜单示例如下:
graphicsmode-1 640:800 480:600 24:32 || graphicsmode -1 -1 -1 24:32
#foregroundFFFFFF
#background0000AD
find--ignore-floppies --set-root /EFI/grub/unifont.hex.gz
font/EFI/grub/unifont.hex.gz
#colorwhite/blue blue/yellow light-red/blue 10
#colornormal=0x07 highlight=0xF1 helptext=0x07 heading=0x02 standard=0x07 border=0x09
colornormal=0x07 highlight=0xE1 helptext=0x07 heading=0x02
timeout5
default0

title0 boot Windows by zhaohj
find--set-root --devices=h /ntldr || find --set-root --devices=h /bootmgr
map() (hd0)
map(hd0) ()
map--rehook
find--set-root --devices=h /ntldr || find --set-root --devices=h /bootmgr
#rootnoverify(hd0,0)
chainloader/ntldr || chainloader /bootmgr

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

7BIOS设置
前面我们安装系统都是用的windows的bootmgr/bootmgfw.efi作为主引导,微软的引导体系能够过“安全启动”,“安全启动”实质是微软为了加强其垄断地位打压linux,收取保护费的肮脏手段,grub4dos/grub2没有给微软交保护费,因此不能直接通过安全启动,一般地建议在BIOS设置中关闭安全启动,我随便从论坛找了个截图设置来说明问题。启动→安全启动→操作系统类型选择OtherOS。有的BIOS直接有Secure Boot的disable选项更直接。
论坛里面有绕过安全启动的方法,我感觉被微软封杀只是早晚的事情,我没什么研究,在此略过不表(惭愧)。
image8.jpeg


8、重启进入RAMOS
开机出现logo的时候按F12/F8/F9/F10启动快捷键选择从bootx64.efi或者grubx64.efi启动,然后选择想要启动的VHD-RAMOS即可。
image9.jpeg

不同品牌电脑的 U盘启动项快捷键http://wuyou.net/forum.php?mod=viewthread&tid=410907
   image10.png

  Svbus-UEFI-WIN10-RAMOS测速:
image11.jpeg

g4e+UEFI-WIN7-RAMOS
svbus-WIN7X64-UEFI-RAMOS.jpg

g4e/grub2+svbus+win8.1RAMOS
32GB内存=vhd占用6GB+Windows使用了1.6GB+剩余可用24.3GB
svbus-uefi-win8.1-ramos.jpg

9UEFI-RAMOS未来的技术展望
基于svbus的UEFI-RAMOS启动原理是,grub4dos_UEFI或者grub2_UEFI用EFI_RESERVED_MEMORY类型的map --mem –top xxx.vhd (hd0)加载vhd到内存,配合svbus驱动,让windows识别这个内存盘,并从这个内存盘上面启动。这个启动流程类似于grub4dos_BIOS的map--mem+firadisk/winvblock/svbus磁盘仿真启动。
(1)svbus驱动速度的优化和提升还有一定的空间,svbus内存盘连续读写我测试大概4~5GB/S,而primo6.3.1驱动可以达到16GB/S,是svbus的4倍。
(2)基于svbus制作的RAMOS把物理内存分成了三部分:第一部分是grub4dos/grub2仿真到内存盘;第二部分是windows本身及其应用程序占用的内存;第三部分是剩余可用内存。第一部分内存盘中剩余部分只能用来安装程序,不能转化为第三部分剩余可用内存,造成浪费;而第三部分剩余可用内存也不能转化为第一部分内存盘空间,想安装程序在RAMOS_C盘,剩余空间又太小。
对比下BIOS下primo驱动制作的RAMOS,第一部分和第三部分内存可以互为转化,内存即硬盘,硬盘即内存,你有多大的内存就可以建立多大的内存盘,比如你有32GB内存,就可以建立32GB的内存盘,扣除windows本身运行所需的1.5GB内存之后,RAMOS的C盘空间可以和剩余可用内存在保持总和32-1.5=30.5GB不变的情况下,可以互为转化,C盘大可以安装测试很多软件,充分利用内存。
未来展望(已实现):grub4dos_UEFI或者grub2_UEFI的map xxx.vdf (hd0)加载vdf到虚拟磁盘C:盘,windows从这个虚拟磁盘C:盘接着启动,加载,比如primo内存盘驱动,由primo驱动把xxx.vdf加载到内存盘比如R:盘,这个xxx.vdf里面互换了C:盘和R:盘的mounteddevice,windows可以从这个内存盘C:盘继续启动,这个primo驱动是现成的,速度很快。
Svbus驱动方案,内存盘是由grub4dos/grub2创建的,而primo驱动方案内存盘则是由primo驱动创建的,这是这两个方案的区别。

10、特别鸣谢
不点——grub4dos项目发起人
Bean——grub4dos开发者
Chenall——grub4dos开发者
2011yaya2007777——grub4dos开发者
Wintoflash——grub2开发者
Pauly——bootice作者
Kai Schtrom——开源SVBus驱动作者,来自德国。
Sunsea——超版,svbus源代码级别的解读支持。
朱玛12345678——超版,给svbus驱动制作了签名,确保顺利安装。
Sinoxer——USB3_Drivers_Smart_Install_For_Win7
红毛樱木——ceomsx(USB3及NVME等驱动注入工具)
xyzy1008——飞天舞,1.9GB WIN8.1极限精简版,用于测试。
alacran——svbus-UEFI-RAMOS大量测试和反馈,来自墨西哥。
Liuzhaoyzz——超版,grub4dos/grub2+svbus-UEFI-RAMOS大量测试和反馈。
Wuwuzz——grub4dos/grub2问题反馈。
Xianglang——NTFS_x64.efi驱动加载测试和反馈。
t5481194版主——不同品牌电脑启动热键。
等等等等……



作者: liuzhaoyzz    时间: 2020-12-11 12:05
本帖最后由 liuzhaoyzz 于 2021-1-15 10:00 编辑

二楼备用
推荐用WINNTSETUP安装在固定大小的VHD中
推荐用WINNTSETUP安装在固定大小的VHD中
推荐用WINNTSETUP安装在固定大小的VHD中


RAMOS Win7企业版启动后出现重启电脑提示 - RAMOS - 无忧启动论坛 - Powered by Discuz! http://bbs.wuyou.net/forum.php?m ... &extra=page%3D9

作者: liuzhaoyzz    时间: 2020-12-11 12:05
本帖最后由 liuzhaoyzz 于 2020-12-13 14:17 编辑

三楼备用
大家可以尝试下,安装vhd的时候,用wimboot压缩模式,或者compact lzx形式,或者NTFS压缩形式安装系统,这样子RAMOS的C盘剩余空间能够大点,理论上来说NTFS压缩模式最稳定。

基于svbus驱动制作的RAMOS,windows开始菜单左键和右键都可以正常点开,系统托盘区的音量、WIFI也可以正常点开,基于微软的ramdisk.sys驱动的RAMOS则存在点击无效的问题。

svbus驱动制作的RAMOS可以看做是vhd系统的一个副本,这个副本直接运行于高位内存中,原系统是什么样子的,副本就是什么样子的。



作者: wilot    时间: 2020-12-11 12:48
非常好
作者: 朱玛12345678    时间: 2020-12-11 13:04
前排支持!
作者: sairen139    时间: 2020-12-11 13:44
p驱也行
作者: liuzhaoyzz    时间: 2020-12-11 13:50
sairen139 发表于 2020-12-11 13:44
p驱也行

你试过了吗?来个教程
作者: sairen139    时间: 2020-12-11 13:55
liuzhaoyzz 发表于 2020-12-11 13:50
你试过了吗?来个教程

推测的
作者: xianglang    时间: 2020-12-11 14:47
BOOTICE 禁止签名是无用的,按 F8 选择禁止签名,只能当次有效。

至于 BIOS 下的 2003 安装,还是使用安装时选择软盘安装驱动比较好,而安装后注入驱动,无论是 2003 还是 7/10,我从来就没有成功过。

作者: liuzhaoyzz    时间: 2020-12-11 14:57
xianglang 发表于 2020-12-11 14:47
BOOTICE 禁止签名是无用的,按 F8 选择禁止签名,只能当次有效。

至于 BIOS 下的 2003 安装,还是使用安 ...

F8还是太麻烦了,还是朱玛制作的带签名的驱动好啊!

作者: wintoflash    时间: 2020-12-11 17:17
BOOTICE 禁止签名是无用的,按 F8 选择禁止签名,只能当次有效。
至于 BIOS 下的 2003 安装,还是使用安装时选择软盘安装驱动比较好,而安装后注入驱动,无论是 2003 还是 7/10,我从来就没有成功过。

越南的一个朋友跟我提过,BOOTICE 智能模式编辑 BCD 时"禁用签名验证"这个项目放的地方不对。
1.png
2.png
图1是错误的,图2是正确的。
作者: pcfan120    时间: 2020-12-11 17:37
多谢liuzhaoyzz版主总结的真详细……等电脑好了又可以折腾了……
作者: luohanqing    时间: 2020-12-11 17:38
本帖最后由 luohanqing 于 2020-12-11 17:49 编辑

      老虎看铜车似地看了一遍,学习了。
BIOS-RAMOS制作,还是推荐大家直接用芈员外的《RAMOS一键批处理多合一V3.8.7》的方案更好。V3.8.7在哪里下载?

作者: sunsea    时间: 2020-12-11 19:03
wintoflash 发表于 2020-12-11 17:17
越南的一个朋友跟我提过,BOOTICE 智能模式编辑 BCD 时"禁用签名验证"这个项目放的地方不对。



其实一半是对的,第一个适用于修改了bootmgr的情况,比如说替换bcd名字。第二个适用于装未签名驱动。
作者: y7y007    时间: 2020-12-11 19:55
厉害厉害!老心在ramos道路上越走越远了,强烈支持!继续发扬这种研究精神!
作者: liuzhaoyzz    时间: 2020-12-11 21:52
sunsea 发表于 2020-12-11 19:03
其实一半是对的,第一个适用于修改了bootmgr的情况,比如说替换bcd名字。第二个适用于装未签名驱动。

        svbus驱动速度能看下还有提升的空间吗?
作者: sunsea    时间: 2020-12-11 22:30
liuzhaoyzz 发表于 2020-12-11 21:52
svbus驱动速度能看下还有提升的空间吗?

应该还有,它用DO_DIRECT_IO的,如果用NETHEIR_IO的话应该能更快(少了处理内存映射的时间),但是代价就是蓝屏率更高……
作者: yizhen    时间: 2020-12-12 00:35
大神威武!敬仰不止!
作者: 2011whp    时间: 2020-12-12 10:41
本帖最后由 2011whp 于 2020-12-12 14:10 编辑

两个U盘:
   一个盘:为 svbus imgpe  实体的
   一个盘:为 g4e    里边存一个 img (我试的是 500M 两分区),确保 img 无碎片

启动过程:
   1.  启动 g4e盘  map  /img.img  (hd)
   2.  转到  shell下   启动  svbus imgpe  实体的  (或  chainloader  (实体svbus pe盘)  )
   
结论:  挂的那img 是可写的。重启后不会丢失




作者: liujun2000    时间: 2020-12-12 12:50
经典文谢谢
作者: liuzhaoyzz    时间: 2020-12-12 13:50
本帖最后由 liuzhaoyzz 于 2020-12-12 17:58 编辑
y7y007 发表于 2020-12-11 19:55
厉害厉害!老心在ramos道路上越走越远了,强烈支持!继续发扬这种研究精神!

羋员外经常来论坛看看,回回帖子啊,很多问题我回答不了,我有成功的经验,但是没什么失败的教训。前期都是你从众多失败的路上一路摸索过来的。
作者: liuzhaoyzz    时间: 2020-12-12 13:51
sunsea 发表于 2020-12-11 22:30
应该还有,它用DO_DIRECT_IO的,如果用NETHEIR_IO的话应该能更快(少了处理内存映射的时间),但是代价就 ...

如果你有兴趣,有时间的话,改下看看。
作者: xman00    时间: 2020-12-12 17:34
期待早日技术成熟
作者: xlt    时间: 2020-12-12 19:39
谢谢楼主的无私奉献,学习了。
作者: 2012wuzhong    时间: 2020-12-12 20:39
本帖最后由 2012wuzhong 于 2020-12-12 20:41 编辑

如果g4d-uefi能支持非mem仿真硬盘,p驱就能实现了,
map /VHD/SX10090329.vhd (hd)
作者: xianglang    时间: 2020-12-13 13:28
2012wuzhong 发表于 2020-12-12 20:39
如果g4d-uefi能支持非mem仿真硬盘,p驱就能实现了,
map /VHD/SX10090329.vhd (hd)

G4E支持这样 MAP 啊,不是非得映射到内存的。

作者: liuzhaoyzz    时间: 2020-12-13 16:52
xianglang 发表于 2020-12-13 13:28
G4E支持这样 MAP 啊,不是非得映射到内存的。

       g4e确实支持直接map vhd启动,不带--mem的那种。reboot.pro似乎归类为“filedisk” 类别。
作者: liuzhaoyzz    时间: 2020-12-14 20:05
本帖最后由 liuzhaoyzz 于 2020-12-22 20:40 编辑

来自墨西哥的alacran朋友,把这篇教程翻译成了英文版,在此表示感谢!
我上传上来。
170楼:http://reboot.pro/topic/22400-grub4dos-for-uefi/?p=217354
220楼最新:http://reboot.pro/topic/22400-grub4dos-for-uefi/?p=217444

Turorial-2 docx.7z

922.63 KB, 下载次数: 7, 下载积分: 无忧币 -2

Turorial-2 PDF.7z

903.84 KB, 下载次数: 9, 下载积分: 无忧币 -2


作者: 2012wuzhong    时间: 2020-12-15 08:15
不好意思,g4e还没有用过,如果能直接
作者: 2012wuzhong    时间: 2020-12-15 08:17
map的话,p驱应该是可以的,现在不行可能是由于fat分区的缘故,如果将fat分区放在后面,或许就行了
作者: wzq2002    时间: 2020-12-16 17:47
其实内存利用率的问题可以用fbwf解决掉,vhd尽量塞满,然后fbwf扩容就行了
顺便提下,fbwf在win10 v2004下是不会引发win32kbase.sys蓝屏的,至少我这里正常,v1803-1909只要不启用中文输入法也可以用
作者: liuzhaoyzz    时间: 2020-12-17 07:42
本帖最后由 liuzhaoyzz 于 2020-12-17 07:43 编辑

现在可以使用MBR + NTFS单个活动分区来引导svbus RAMOS

1、g4e 2020-12-15版或更高版本
需要用load /EFI/grub/ntfs_x64.efi加载ntfs_x64.efi驱动,否则g4e会得到“boot_image_handle not found”的错误。
title WIN7X64-SVBUS (/VHD/SX70211.vhd)
load /EFI/grub/ntfs_x64.efi
find --ignore-floppies --ignore-cd --set-root /VHD/SX70211.vhd
map --mem --top /VHD/SX70211.vhd (hd)
chainloader (hd-1)

2、grub2 2020-12-17版本
你需要编辑grub 2-latest 2020-12-17 \ arch \ x64 \ builtin . txt,添加efload模块,用build_grub.bat自定义grubx64.efi,然后用efload/EFI/grub/ntfs_x64.efi加载NTFS _ x64 . EFI驱动程序,否则g4e加载时会返回菜单。
menuentry "SX70211.vhd" "/VHD/SX70211.vhd" {
        efiload /EFI/grub/ntfs_x64.efi
        search --no-floppy --set --file $2
        map --mem --rt $2
}


感谢wintoflash、2011yaya2007777、xianglang!
ntfs_x64.efi等文件详见827楼:
http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=422652&pid=4195636&fromuid=298214
作者: 282198284    时间: 2020-12-17 20:53
2012wuzhong 发表于 2020-12-15 08:17
map的话,p驱应该是可以的,现在不行可能是由于fat分区的缘故,如果将fat分区放在后面,或许就行了

虎哥,要加fat只能放前面,不然动态不了,放后面镜像就过不了底位内存了,这样就出问题了
作者: 2012wuzhong    时间: 2020-12-17 20:58
跟心心版主讨论之后,应该是p驱识别不了p镜像所在的盘,导致p不能及时加载镜像生成内存盘
作者: 282198284    时间: 2020-12-17 21:03
2012wuzhong 发表于 2020-12-17 20:58
跟心心版主讨论之后,应该是p驱识别不了p镜像所在的盘,导致p不能及时加载镜像生成内存盘

不能吧,怎么会p驱找不到镜像所在的盘,先说说是什么环境,什么系统
作者: 2012wuzhong    时间: 2020-12-17 21:04
可能是g4e map机制,导致p无法识别
作者: 282198284    时间: 2020-12-17 21:07
2012wuzhong 发表于 2020-12-17 21:04
可能是g4e map机制,导致p无法识别

不会吧,我之前有试过的啊,也是最开始的时候也是加fat分驱的,能正常的啊,难道g4e改了什么
作者: 2012wuzhong    时间: 2020-12-17 21:22
我怀疑map了一个虚拟盘后,p镜像所在的硬盘被屏蔽了
作者: 282198284    时间: 2020-12-17 21:27
2012wuzhong 发表于 2020-12-17 21:22
我怀疑map了一个虚拟盘后,p镜像所在的硬盘被屏蔽了

如果屏蔽了那,svbus怎么能找到镜像所在的盘,说不通啊,现在是能启动到那个地步了,出旗子了?
作者: 2012wuzhong    时间: 2020-12-17 21:29
这也许就是p和svbus之间的区别
作者: 282198284    时间: 2020-12-17 21:30
2012wuzhong 发表于 2020-12-17 21:29
这也许就是p和svbus之间的区别

难道svbus是认MBR的
作者: 282198284    时间: 2020-12-17 21:33
2012wuzhong 发表于 2020-12-17 21:29
这也许就是p和svbus之间的区别

我想应该是,在进系统时g4d没有把内存盘去掉,就和这样w大那个一样的结果
作者: xban    时间: 2020-12-17 22:21
谢谢分享
作者: xhan    时间: 2020-12-17 22:24
谢谢分享
作者: xuxuezeng    时间: 2020-12-19 14:37
楼主,你那个工具是天翼网盘,能不能分享一个百度网盘的啊?
作者: liuzhaoyzz    时间: 2020-12-19 14:51
xuxuezeng 发表于 2020-12-19 14:37
楼主,你那个工具是天翼网盘,能不能分享一个百度网盘的啊?

        天翼云盘直接用微信扫码即可免费满速下载,为什么不用?分享的网盘太多了,更新资料的时候太麻烦,多了容易乱。
作者: ko20010214    时间: 2020-12-19 19:25
本帖最后由 ko20010214 于 2020-12-19 21:07 编辑

find --ignore-floppies --ignore-cd --set-root/VHD/SX10090329.vhd  这一句应该是寻找VHD文件来着的,那是不是这个VHD文件随便放在哪个分区里的VHD目录下都可以?
我启动后说找不到文件,晕……
如果要指定是哪个分区,要怎么写菜单(这是基础知识,基础不牢,到处抓瞎)

应该这样写:
find --ignore-floppies --ignore-cd --set-root/(hd0,4)/VHD/Win81nv.vhdx


整个应该这样写:title WIN81X64-SVBUS (/VHD/win81nv.vhdx)
load /EFI/grub/ntfs_x64.efi
find --ignore-floppies --ignore-cd --set-root/(hd0,4)/VHD/Win81nv.vhdx
map --mem --top (hd0,4)/VHD/Win81nv.vhdx (hd)
chainloader (hd-1)



作者: liuzhaoyzz    时间: 2020-12-19 21:48
本帖最后由 liuzhaoyzz 于 2020-12-19 22:15 编辑
ko20010214 发表于 2020-12-19 19:25
find --ignore-floppies --ignore-cd --set-root/VHD/SX10090329.vhd  这一句应该是寻找VHD文件来着的,那 ...


       照着葫芦还不会画个瓢了?!只需要把你的vhd那个路径和名字换下即可,可以放在任意一个FAT32/NTFS盘符。其他的不需要画蛇添足!你加个(hd0,4)倒底是几个意思?!

哦,说问题不讲透彻似乎不地道。find --set-root就是把找到的文件所在的盘符设置为“缺省”盘符,如果后面root不改变的话,只要以"/"开头的路径,都是这个“缺省”盘符,都不需要再次指明“root”了,这是g4d和g4e最最基本的用法了。

哦,linux必须要注意大小写,g4d,g4e,grub2都与linux有一定的渊源,你说找不到文件,是不是路径和文件名大小写有错误?

实在不会搞的话,网盘里面不是有范例吗?复制粘贴过去看看撒。

另外,vhdx格式我没试过,你成功了的话,正好做了个验证 ,填补了一项空白,呵呵。

作者: wintoflash    时间: 2020-12-19 21:58
ko20010214 发表于 2020-12-19 19:25
find --ignore-floppies --ignore-cd --set-root/VHD/SX10090329.vhd  这一句应该是寻找VHD文件来着的,那 ...

grub不支持vhdx。
find那句命令,--set-root后面少了个空格。
find 后面的路径加磁盘分区号是错误的。
作者: 2013llss    时间: 2020-12-20 19:18
牛B心心,向心心学习
作者: 2012ccharles    时间: 2020-12-23 21:54
非常感谢楼主的分享!在我的联想R7000(固态+机械双硬盘)固态硬盘上制作成功win10 1903,前段时间通过各种工具都无法成功自作ramos。启动及运行速度都很快。grub4dos-efi无法引导,找不到文件,我将vhd文件拷到两块硬盘的每一个分区,都找不到文件。Grub2成功引导加载。只有一个问题,通过电话激活的vhd系统变成了没有激活。
作者: liuzhaoyzz    时间: 2020-12-24 08:22
本帖最后由 liuzhaoyzz 于 2020-12-24 08:28 编辑
2012ccharles 发表于 2020-12-23 21:54
非常感谢楼主的分享!在我的联想R7000(固态+机械双硬盘)固态硬盘上制作成功win10 1903,前段时间通过各种 ...

很好的启动成功的反馈!
g4e找不到文件,指的是找不到什么文件?vdf还是ntfs_x64.efi文件?ntfs_64.efi要放在(启动分区)\EFI\grub\目录下面,试试加一句find --ignore-floppies --ignore-cd --set-root /EFI/grub/ntfs_x64.efi看看:


title WIN7X64-SVBUS (/VHD/SX70211.vhd)
find --ignore-floppies --ignore-cd --set-root /EFI/grub/ntfs_x64.efi
load /EFI/grub/ntfs_x64.efi
find --ignore-floppies --ignore-cd --set-root /VHD/SX70211.vhd
map --mem --top /VHD/SX70211.vhd (hd)
chainloader (hd-1)


你把load /EFI/grub/ntfs_x64.efi这一句加上或者删除,看下提示找不到文件的,倒底是哪一句出的找不到文件的问题。

激活的问题,应该难不倒中国人吧。
        



作者: 2012ccharles    时间: 2020-12-24 12:05
liuzhaoyzz 发表于 2020-12-24 08:22
很好的启动成功的反馈!
g4e找不到文件,指的是找不到什么文件?vdf还是ntfs_x64.efi文件?ntfs_64.efi ...

谢谢!显示“file not found”。现在grub2引导挺好用,今后有时间再按您的建议折腾,太费精力了。再一次感谢!
作者: 2012ccharles    时间: 2020-12-29 12:52
本帖最后由 2012ccharles 于 2020-12-29 13:04 编辑

今天折腾g4e,按照“grub4dos和grub2引导器目录结构及其引导菜单示例“,只改了下efi\grub\menu.lst,启动后显示如下:



将efi\boot\bootx64.efi更换为http://grub4dos.chenall.net/ 下载的
grub4dos-for_UEFI-2020-12-15.7z也是这个结果。

title WIN10 ram-vhd (/ram.vhd)
find --ignore-floppies --ignore-cd --set-root /EFI/grub/ntfs_x64.efi
load /EFI/grub/ntfs_x64.efi
find --ignore-floppies --ignore-cd --set-root /ram.vhd
map --mem --top /ram.vhd (hd)
chainloader (hd-1,0)



IMG_20201229_120436.jpg

作者: liuzhaoyzz    时间: 2020-12-30 08:29
本帖最后由 liuzhaoyzz 于 2020-12-30 08:37 编辑
2012ccharles 发表于 2020-12-29 12:52
今天折腾g4e,按照“grub4dos和grub2引导器目录结构及其引导菜单示例“,只改了下efi\grub\menu.lst,启动 ...

你检查下unifont.hex.gz路径什么的,如果unifont.hex.gz有问题,大概率会有问题。
另外,网盘里面我重新整理上传了grub4dos和grub2引导器目录结构及其引导菜单示例。
按照道理上来说,同一个vhd,只要grub2能够成功,g4e也应该能够成功的呀。


看你的截图,428错误,应该是svbus数字签名没有搞定,导致的驱动启动失败。你再对照着帖子看看,是否有什么疏漏的,比如那个注册表EVRootCA.reg导入没有?网盘里面有word版本。

作者: wintoflash    时间: 2020-12-30 09:15
本帖最后由 wintoflash 于 2020-12-30 09:16 编辑

按理说,用ntboot启动的话,默认情况下是禁用了windows签名验证的 (当然在安全启动下强制开启),楼主有兴趣的话可以试试未签名驱动。
据说,win7 的 bootmgfw.efi 即使开启了安全启动,也可以不校验签名,因为它内部根本不检测安全启动的状态。
作者: liuzhaoyzz    时间: 2020-12-30 10:17
wintoflash 发表于 2020-12-30 09:15
按理说,用ntboot启动的话,默认情况下是禁用了windows签名验证的 (当然在安全启动下强制开启),楼主有兴趣 ...

        禁用windows签名验证对于WIN7比较有效,感觉对于WIN10似乎不那么有效。现在已经有朱玛制作的签名版了,感觉还是签名版驱动好用的多。

安全启动好像就是从WIN8开始,微软才开始部署的吧。

作者: 2012ccharles    时间: 2020-12-30 13:07
liuzhaoyzz 发表于 2020-12-30 08:29
你检查下unifont.hex.gz路径什么的,如果unifont.hex.gz有问题,大概率会有问题。
另外,网盘里面我重新 ...

谢谢楼主指导。
1.确认添加了“EVRootCA”注册表文件。
2.Grub2引导开机非常流畅。
2.刚刚重新下载“grub4dos和grub2引导器目录结构及其引导菜单示例”,将“菜单示例”\EFI\Boot\bootx64.efi替换esp分区(Z分区)同目录下的bootx64.efi文件,将\EFI\grub\menu.lst替换esp分区(Z分区)同目录下的menu.lst文件,并将这个menu.lst文件用Notepad ++ 使用UTF-8编码做如下修改,重启电脑,F12 选G4E,黑屏,昨天蓝屏之前也没有见到启动菜单,会不会是g4e的原因?










5.png
4.png
3.png
2.png
1.png

作者: liuzhaoyzz    时间: 2020-12-30 13:35
本帖最后由 liuzhaoyzz 于 2020-12-30 14:23 编辑
2012ccharles 发表于 2020-12-30 13:07
谢谢楼主指导。
1.确认添加了“EVRootCA”注册表文件。
2.Grub2引导开机非常流畅。

你的反馈图文并茂,虽然看不出问题倒底在哪里,但是的确是很好的反馈。

以我对g4e有限的了解,我也不懂为什么会黑屏,实体机我没有碰到过黑屏的情况。我估计是graphicsmode -1 800引起的吧,g4e那个帖子,以及国外reboot.pro上面,似乎也没见到过引导黑屏的现象。有点奇怪。     


哦,我又看了下g4e那个帖子,确实有反馈黑屏的。
342楼:
http://wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=422652&pid=4172409&fromuid=298214
508楼:http://wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=422652&pid=4182397&fromuid=298214

作者: 2011yaya2007777    时间: 2020-12-30 16:34
本帖最后由 2011yaya2007777 于 2020-12-30 17:01 编辑

禁用title前面的所有选项,试一试。如果还是不行,我感觉是你的启动管理器的问题。如果是从硬盘启动,要注意启动目录
http://bbs.wuyou.net/forum.php?m ... ge%3D1&mobile=2

作者: 2012ccharles    时间: 2020-12-30 17:10
@liuzhaoyzz @2011yaya2007777 谢谢两位!
用这个菜单(grub4dos里面抄的,修改:graphicsmode 3(百度来的,几年前,bios时代有人这么设,我一菜鸟,也不知道是啥意思)),可以启动见到菜单(见下图),但进不了svbus vhd(直接返回菜单),“命令行”及“重启”菜单可以用。

color normal=0xff9933 highlight=0xffff00 helptext=0xff00ff heading=0x66ff00
graphicsmode 3
font /efi/grub/unifont.hex.gz
setmenu --box x=4 w=40 y=6 h=9 l=2
setmenu --lang=zh

#设置自动菜单编号
setmenu --auto-num-on

#设置字符串信息
setmenu --string=10=3=0x0000000000ffff="GRUB4DOS 维  护  菜  单"

#设置日期时间
setmenu --string=s=0=0x8800000000ffff="date&time=yyyy-MM-dd  HH:mm:ss"

#设置倒计时
setmenu --timeout=45=6=0x88000000ffff

#设置倒计时(秒)
timeout 30

#设置第一项为默认值
default 1

title WIN7X64-SVBUS (/ram.vhd)
find --ignore-floppies --ignore-cd --set-root /EFI/grub/ntfs_x64.efi
load /EFI/grub/ntfs_x64.efi
find --ignore-floppies --ignore-cd --set-root /ram.vhd
map --mem --top /ram.vhd (hd)
chainloader (hd-1)

title 命令行
commandline

title 重启
reboot

title 关机
halt



IMG_20201230_165618.png

作者: 2012ccharles    时间: 2020-12-30 17:19
本帖最后由 2012ccharles 于 2020-12-30 17:20 编辑

不点大师给出的命令graphicsmode 3解决了gfxmenu加载message卡死的问题
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=368876
感觉黑屏出在这个graphicsmode命令上。

作者: 2011yaya2007777    时间: 2020-12-30 17:31
不支持图形模式,加载字库无效,不能使用中文。进不了 svbus vhd,帮不上忙。
作者: 2012ccharles    时间: 2020-12-30 17:33
根据2011yaya2007777的建议,将菜单精简如下:

timeout 5
default 0

find --ignore-floppies --set-root /efi/grub/unifont.hex.gz
font /efi/grub/unifont.hex.gz

setmenu --string=m=2=0x0000000000ffff="G4D维护菜单"
setmenu --string=s=1=0x8800000000ffff="date&time=yyyy-MM-dd  HH:mm:ss"

title WIN10-SVBUS (/ram.vhd)
find --ignore-floppies --ignore-cd --set-root /EFI/grub/ntfs_x64.efi
load /EFI/grub/ntfs_x64.efi
find --ignore-floppies --ignore-cd --set-root /ram.vhd
map --mem --top /ram.vhd (hd)
chainloader (hd-1)

title ^Ctrl+d commandline
commandline

title [F3] reboot
reboot

title halt
halt


启动后可见到以下菜单界面,WIN10-SVBUS (/ram.vhd)不能启动(直接返回菜单)。


IMG_20201230_172453.jpg

作者: 2012ccharles    时间: 2020-12-30 17:34
本帖最后由 2012ccharles 于 2020-12-30 17:41 编辑
2011yaya2007777 发表于 2020-12-30 17:31
不支持图形模式,加载字库无效,不能使用中文。进不了 svbus vhd,帮不上忙。

谢谢。不管怎么说,能见到菜单了。
作者: liuzhaoyzz    时间: 2020-12-30 18:02
2012ccharles 发表于 2020-12-30 17:34
谢谢。不管怎么说,能见到菜单了。

你的ram.vhd是否放在某个根目录下?vhd有多大?你的高位内存有多大?一般地高位内存=总内存-4GB估算。      
作者: 2012ccharles    时间: 2020-12-30 18:36
本帖最后由 2012ccharles 于 2020-12-30 18:38 编辑

是的,ram.vhd放在(hd1,3)的根目录下,7.5G。高位内存=16G-4G=12G?刚才又试了一下,加载这个ram.vhd菜单项时,会闪显:out of map memory 800000000, 因为是一闪而过,8后面几个零不确定。
作者: liuzhaoyzz    时间: 2020-12-30 19:30
2012ccharles 发表于 2020-12-30 18:36
是的,ram.vhd放在(hd1,3)的根目录下,7.5G。高位内存=16G-4G=12G?刚才又试了一下,加载这个ram.vhd菜单 ...

你的高位内存看起来是足够的,如果map过程中出现out of memory一般地表示没有足够连续的内存块,可是为啥grub2都可以呢?奇怪的很。你在选择菜单的时候按c键进入命令行,输入displaymem,截屏看看。看看length,最大的那个倒底是多少。      
作者: 2012ccharles    时间: 2020-12-30 20:00
有点难为情,耽误你不少的时间。


IMG_20201230_195520.jpg

作者: wintoflash    时间: 2020-12-30 20:20
2012ccharles 发表于 2020-12-30 20:00
有点难为情,耽误你不少的时间。

0x30F340000,大概就是12G,看起来是够的。

作者: liuzhaoyzz    时间: 2020-12-30 20:23
      实在是匪夷所思
作者: 2012ccharles    时间: 2020-12-30 20:53
本帖最后由 2012ccharles 于 2020-12-30 20:57 编辑

换了个6.5G的vhd(最初安装好的系统),还是显示:out of map memory。确认所有分区根目录下只有一个分区有ram.vhd这个文件,而且启动时也显示是加载(hd1,3)上的ram.vhd。Grub2没问题。


sshot-1.png

作者: 2011yaya2007777    时间: 2020-12-30 21:49
本帖最后由 2011yaya2007777 于 2020-12-30 22:14 编辑

使用这个试一试。https://github.com/chenall/grub4dos/issues/248
另外,不使用  --top 参数试一试。

作者: 2012ccharles    时间: 2020-12-30 22:37
本帖最后由 2012ccharles 于 2020-12-30 22:55 编辑

谢谢。

下载了下面图片中的文件,去txt扩展名解压后的BOOTX64.EFI,置于esp分区EFI\boot\中。



以下列菜单启动:

timeout 5
default 0

find --ignore-floppies --set-root /efi/grub/unifont.hex.gz
font /efi/grub/unifont.hex.gz

setmenu --string=m=2=0x0000000000ffff="G4D维护菜单"
setmenu --string=s=1=0x8800000000ffff="date&time=yyyy-MM-dd  HH:mm:ss"

title WIN10-SVBUS
find --ignore-floppies --ignore-cd --set-root /EFI/grub/ntfs_x64.efi
load /EFI/grub/ntfs_x64.efi
find --ignore-floppies --ignore-cd --set-root /ram.vhd
map --mem --top /ram.vhd (hd)
chainloader (hd-1)

title WIN10-SVBUS no top
find --ignore-floppies --ignore-cd --set-root /EFI/grub/ntfs_x64.efi
load /EFI/grub/ntfs_x64.efi
find --ignore-floppies --ignore-cd --set-root /ram.vhd
map --mem /ram.vhd (hd)
chainloader (hd-1)

title test
find --set-root /ram.vhd
map --mem /ram.vhd (hd)
chainloader (hd-1)

title ^Ctrl+d commandline
commandline

title [F3] reboot
reboot

title halt
halt



以title WIN10-SVBUS及title WIN10-SVBUS no top启动项启动均显示:
error: no such command
(hd1,3)
然后返回菜单。
以title test启动显示:
out of memory
(hd1,0)
然后返回菜单。
显示的提示一闪而过,不一定看得真切,大致内容应当是这样。
sshot-1.png

作者: 2011yaya2007777    时间: 2020-12-31 05:49
这个截图发错了吧。测试时,在要执行的菜单项第一行,放置debug  3,它会返回调试信息。
作者: 2011yaya2007777    时间: 2020-12-31 07:58
本帖最后由 2011yaya2007777 于 2020-12-31 08:55 编辑

timeout 5
default 0

title WIN10-SVBUS
find --set-root /EFI/grub/ntfs_x64.efi
load /EFI/grub/ntfs_x64.efi
map --mem --top /ram.vhd (hd)
pause top 1
chainloader (hd-1)
pause top 2

title WIN10-SVBUS no top
find --set-root /EFI/grub/ntfs_x64.efi
load /EFI/grub/ntfs_x64.efi
map --mem /ram.vhd (hd)
pause no top 1
chainloader (hd-1)
pause no top 2

title commandline
commandline

title reboot
reboot

title halt
halt


按以上2个菜单分别试一试,注意截图。如果信息量不大,就抄下来。

使用这个测试吧。

BOOTX64.rar

136.96 KB, 下载次数: 9, 下载积分: 无忧币 -2


作者: 2011yaya2007777    时间: 2020-12-31 08:03
2012ccharles :
你在这个电脑上,启动过 grub2 没有?是否可以加载图像和中文字库?

grub4dos for uefi 内置 GOP (图形输出协议),但是你的电脑不支持。
但是 grub2 还有一种图形模式 UGA,grub4dos for uefi 没有选择。
作者: liuzhaoyzz    时间: 2020-12-31 08:38
本帖最后由 liuzhaoyzz 于 2020-12-31 08:52 编辑
2011yaya2007777 发表于 2020-12-31 08:03
2012ccharles :
你在这个电脑上,启动过 grub2 没有?是否可以加载图像和中文字库?

他说grub2可以启动vhd-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_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

一楼的这个unicode.xz,里面就是字库。

        

作者: liuzhaoyzz    时间: 2020-12-31 08:44
本帖最后由 liuzhaoyzz 于 2020-12-31 09:04 编辑
2012ccharles 发表于 2020-12-30 22:37
谢谢。

下载了下面图片中的文件,去txt扩展名解压后的BOOTX64.EFI,置于esp分区EFI\boot\中。
error: no such command

这是哪个命令拼写打错了的原因。注意下空格,不能用中文空格。

1、方法一:
title WIN10-SVBUS
debug 3
find --set-root /EFI/grub/ntfs_x64.efi
load /EFI/grub/ntfs_x64.efi
map --mem --top /ram.vhd (hd)
pause top 1
chainloader (hd-1)
pause top 2

2、方法二
选择g4e菜单的时候,按e键进入命令行,逐一输入下面的命令:
debug 3
find --set-root /EFI/grub/ntfs_x64.efi(这一句不一定必要)
load /EFI/grub/ntfs_x64.efi
find --set-root /ram.vhd
map --mem --top /ram.vhd (hd)
chainloader (hd-1)
boot
截图发上来,给yaya提供定位错误的依据。这样能够看到准确的错误信息。
注意大小写不能错,文件名字输入的时候可以用TAB键补全。








作者: 2011yaya2007777    时间: 2020-12-31 08:52
他说grub2可以启动vhd-ramos,应该是加载了中文字库的

那就是他的电脑支持 UGA 图形模式,我抽空试的补上。
作者: wintoflash    时间: 2020-12-31 09:09
2011yaya2007777 发表于 2020-12-31 08:52
那就是他的电脑支持 UGA 图形模式,我抽空试的补上。

应该不是 UGA。
liuzhaoyzz 生成的 grub2 efi 应该没有添加 efi_uga 模块。
作者: 2011yaya2007777    时间: 2020-12-31 09:29
应该不是 UGA。
liuzhaoyzz 生成的 grub2 efi 应该没有添加 efi_uga 模块。

那就奇怪了。grub2 有2种图形模式,如果没有加载 UGA 模式,那只能是 GOP 模式。怎么 g4e 会黑屏?
作者: liuzhaoyzz    时间: 2020-12-31 10:24
wintoflash 发表于 2020-12-31 09:09
应该不是 UGA。
liuzhaoyzz 生成的 grub2 efi 应该没有添加 efi_uga 模块。

用的是grub2默认的那些模块,确实没有efi_uga模块。
F:\bak\grub2\grub2-latest2020-12-28\arch\x64\builtin.txt
acpi all_video blocklist boot cat chain configfile cpio echo efiload efi_gop exfat ext2 extcmd fat fb file font getkey gfxmenu gfxterm gfxterm_background gfxterm_menu gzio halt help hexdump iso9660 jpeg linux linuxefi loadenv loopback ls lzopio map minicmd newc normal ntboot ntfs part_gpt part_msdos png probe progress reboot regexp sbpolicy search tar terminal terminfo test tga udf vhd video video_colors video_fb videoinfo wimboot xzio crscreenshot

作者: 2012ccharles    时间: 2020-12-31 11:50
本帖最后由 2012ccharles 于 2020-12-31 12:26 编辑

谢谢两位。

以本贴76楼的菜单和引导文件,启动结果如下:

菜单(从notepad++里复制过来的):[url=]menu.rar menu.rar (417 Bytes, 下载次数: 1)