无忧启动论坛

标题: 第一次使用UEFI shell,请求那位大侠帮忙写一下加载NVME驱动并引导M.2自动化命令 [打印本页]

作者: luck9806    时间: 2020-3-1 21:33
标题: 第一次使用UEFI shell,请求那位大侠帮忙写一下加载NVME驱动并引导M.2自动化命令
各位大侠:
      今天第一次了解UEFI shell,经过手动输入命令,测试可以在我的老主板上,加载NVME驱动,并引导M.2磁盘的系统,因为刚入门不会写脚本,请帮忙写一下自动化加载NVME驱动,并引导M.2磁盘的系统


作者: liujun2000    时间: 2020-3-1 21:43
列出你输的命令
作者: wyqd20200302    时间: 2020-3-2 16:42
load xxx.efi
作者: luck9806    时间: 2020-3-3 13:26
liujun2000 发表于 2020-3-1 21:43
列出你输的命令

感谢!
使用命令如下:
load fs0:\efi\boot\nvmex64.efi
map -u
hd11b:\efi\boot\bootx64.efi
作者: luck9806    时间: 2020-3-3 13:49
本帖最后由 luck9806 于 2020-3-3 13:56 编辑

我直接建立了startup. nsh文件测试失败,存在2个问题:1、加载nvmex64.efi驱动后,磁盘不分配盘符,需运行map -u,加入此命令运行出错显示:map:unknown flag -u,此Map -U手工输入运行无问题
2、插入U盘后盘符会变化,需判断正确盘符的方法。

作者: 282198284    时间: 2020-3-3 14:42
你把M.2磁盘里面的\efi\boot\bootx64.efi改成\efi\boot\nvmexbootx64.efi就可以用下面这人脚本

把脚本保存为startup. nsh

for %i in fs0 fs1 fs2 fs3 fs4 fs5 fs6 fs7 fs8 fs9 fsa fsb
if exist %i:\efi\boot\nvmex64.efi then
load %i:\efi\boot\nvmex64.efi
map -r
goto act1
endif
endfor
:act1
for %j in fs0 fs1 fs2 fs3 fs4 fs5 fs6 fs7 fs8 fs9 fsa fsb
if exist %j:\efi\boot\nvmexbootx64.efi then
%j:
goto act2
endif
endfor
:act2
\efi\boot\nvmexbootx64.efi
作者: luck9806    时间: 2020-3-3 22:16
282198284 发表于 2020-3-3 14:42
你把M.2磁盘里面的\efi\boot\bootx64.efi改成\efi\boot\nvmexbootx64.efi就可以用下面这人脚本

把脚本保 ...

非常感谢!
学习了FOR使用方法,但脚本还不能使用,脚本在运行 map  -r 后会出现shell: cannot read from file -no media错误,脚本将停止工作退出。使用map -u,又出现上述的问题 ,测式发现只有这2个参数可以显示加载了NVME驱动后的盘。


作者: luck9806    时间: 2020-3-3 22:21
MAP 命令使用说明:
MAP [-d <sname>]
MAP [[-r | -u][-v][-c][-f][-t <type[,type...]>][sname]]
MAP [sname handle | mapname]
    -d       - Delete a mapping
    -r       - Reset to default mappings
    -u       - Update mappings
    -v       - Display verbose mapping information
    sname    - User defined mapping name (wildcards are permitted)
    handle   - The number of handle, which is same as dumped from 'dh' command
    -c       - Display the consistent mapping name
    -f       - Display the normal mapping name(not consistent mapping)
    -t       - Display the device mapping name according to the device type:
                 fp   - Floppy
                 hd   - Hard Disk
                 cd   - CD-ROM
               Types can be combined by putting a comma between two types.
               Spaces are not allowed between types.
    mapname  - Mapped name for the device followed by a postfix ':'

Note:
    1.  The consistent mapping is persistent across the mapping reset and the
        system reboot.
    2.  Only characters and numbers are allowed inside of sname.
    3.  Redirection is not allowed when running map because we do not know the
        file system before mapping is done.
    4.  Output redirection is not supported for 'map -r' usage.
    5.  Option '-u' will only add/delete the mappings for new/removed devices.
        The unchanged device mappings with user-defined mappings are unchanged.
        The current dir, if current device is not changed, will also be
        preserved.
在脚本内运行测试过如下都失败
MAP -r | -u
MAP -r
MAP  -u
作者: luck9806    时间: 2020-3-3 22:24
使用过connect  -r 不能找到M.2硬盘文件。测试盘符:blk*,fs*,hd11*
作者: 282198284    时间: 2020-3-3 22:34
luck9806 发表于 2020-3-3 22:16
非常感谢!
学习了FOR使用方法,但脚本还不能使用,脚本在运行 map  -r 后会出现shell: cannot read fro ...

这样的话,就没办法全自动了,只能手动运行一下第二步的脚本了
作者: luck9806    时间: 2020-3-3 22:53
282198284 发表于 2020-3-3 22:34
这样的话,就没办法全自动了,只能手动运行一下第二步的脚本了

多谢指导,我现在使用的2.31版,请问在哪下载新版再试一试
作者: luck9806    时间: 2020-3-3 22:55
Map -u 脚本运行错误提示,单独输入运行又可以很怪

IMG_20200303_133138.jpg (84.82 KB, 下载次数: 333)

IMG_20200303_133138.jpg

作者: 282198284    时间: 2020-3-3 23:26
luck9806 发表于 2020-3-3 22:53
多谢指导,我现在使用的2.31版,请问在哪下载新版再试一试

版本是固件不是Shell
作者: 282198284    时间: 2020-3-3 23:31
luck9806 发表于 2020-3-3 22:55
Map -u 脚本运行错误提示,单独输入运行又可以很怪

也许你要加一个启动器才能全自动
作者: 282198284    时间: 2020-3-3 23:37
你可以试一下把微软的bootmgfw.efi也放在nvmex64.efi同一个盘中,加载驱动后启动bootmgfw.efi,让BCD指向nvme盘中的winload.efi,这样应该是可以的
作者: luck9806    时间: 2020-3-4 10:04
282198284 发表于 2020-3-3 23:37
你可以试一下把微软的bootmgfw.efi也放在nvmex64.efi同一个盘中,加载驱动后启动bootmgfw.efi,让BCD指向nvm ...

感谢指导,昨天我也想到把M.2盘的EFl引导文件全部拷贝到机械硬盘中,不执行map命令,利用BCD跳转,今天晚上试试。
还想咨询一下,Shell读取脚本的等待时间可以取消吗
另你说的其它方法定制EFⅠ是怎么做呢

IMG_20200304_095530.jpg (71.65 KB, 下载次数: 300)

IMG_20200304_095530.jpg

作者: 282198284    时间: 2020-3-4 10:32
本帖最后由 282198284 于 2020-3-4 10:33 编辑
luck9806 发表于 2020-3-4 10:04
感谢指导,昨天我也想到把M.2盘的EFl引导文件全部拷贝到机械硬盘中,不执行map命令,利用BCD跳转,今天晚 ...

取消是要在运行时加参数才能取消,启动器就多了,比如微微自带的也是一个启动器,也可以是自己写的
作者: luck9806    时间: 2020-3-4 20:52
282198284 发表于 2020-3-4 10:32
取消是要在运行时加参数才能取消,启动器就多了,比如微微自带的也是一个启动器,也可以是自己写的

经过测试已可以加载启动了,谢谢指导!
最后还是想取消计时,运行加参数要怎么做呢,谢谢!
作者: luck9806    时间: 2020-3-4 21:59
本帖最后由 luck9806 于 2020-3-4 22:13 编辑

运行参数在网上已找到,但未使用成功,请大家指导。
-delay[:n] 指定等待 startup.nsh 启动的时间。默认是5秒,-delay:0 表示立即执行
我加载shell.efi方法如下:加载不成功
\efi\boot\bootx64.efi -delay:0


作者: 282198284    时间: 2020-3-4 22:47
luck9806 发表于 2020-3-4 21:59
运行参数在网上已找到,但未使用成功,请大家指导。
-delay[:n] 指定等待 startup.nsh 启动的时间。默认是 ...

你可以用xor试一下,应该是可以的
作者: luck9806    时间: 2020-3-5 20:21
282198284 发表于 2020-3-4 22:47
你可以用xor试一下,应该是可以的

测试了还是一样失败,怎么改参数都一样,无法取消5秒的等待,唉
有没有其它的方式加载M.2盘驱动后才启动系统呢,后台自动化完成。
作者: 282198284    时间: 2020-3-5 21:07
luck9806 发表于 2020-3-5 20:21
测试了还是一样失败,怎么改参数都一样,无法取消5秒的等待,唉
有没有其它的方式加载M.2盘驱动后才启动 ...

刷主板BIOS
作者: luck9806    时间: 2020-3-5 21:13
282198284 发表于 2020-3-5 21:07
刷主板BIOS

最初的想法是改BIOS的,联想的主板,BIOS找不到下载点,备份的也不用,好像这主板有三个BIOS文件,所以无法下手,
作者: luck9806    时间: 2020-3-5 21:16
了解使用CLOVER也建立一个菜单,硬盘变化时菜单会变,安装硬盘不便
作者: 282198284    时间: 2020-3-5 21:29
luck9806 发表于 2020-3-5 21:13
最初的想法是改BIOS的,联想的主板,BIOS找不到下载点,备份的也不用,好像这主板有三个BIOS文件,所以无 ...

那只能找大神给你改一个Shell不等5秒的才行了
作者: luck9806    时间: 2020-3-5 21:36
282198284 发表于 2020-3-5 21:29
那只能找大神给你改一个Shell不等5秒的才行了

网上找到的参数表,为何都无法使用,很怪呀

Shell 启动参数:
shell.efi [ShellOpt-options] [options] [file-name [file-name-options]]

-nostartup 进入 Shell 时不执行脚本 startup.nsh
-noconsoleout Shell 标准输出不显示
-noconsolein Shell 无标准输入
-delay[:n] 指定等待 startup.nsh 启动的时间。默认是5秒,-delay:0 表示立即执行
-nointerrupt 不支持 <Ctrl+C> 的终止程序功能
-nomap 启动后不显示块设备的 map 信息
-noversion 启动后不显示 version
-startup 进入 Shell 是执行脚本 startup.nsh

当 ShellOpt-optitions 和 options 中均不包含 -startup 时,可以使用 file-name [file-name-options] 指定 Shell 启动后要执行的文件。如果启动参数中既有 -startup 又有 file-name [file-name-options],则 file-name [file-name-options] 被忽略。

作者: luck9806    时间: 2020-3-5 21:38
难道这个参数是某个启动工具的,那这个启动工具又是什么呢
作者: 282198284    时间: 2020-3-5 21:40
本帖最后由 282198284 于 2020-3-5 21:46 编辑
luck9806 发表于 2020-3-5 21:38
难道这个参数是某个启动工具的,那这个启动工具又是什么呢

xor不行我就不知道了,好像没有了

N37_TR1AAWQRH_LWLKJAK%Y.png (41.03 KB, 下载次数: 345)

N37_TR1AAWQRH_LWLKJAK%Y.png

作者: luck9806    时间: 2020-3-5 22:41
本帖最后由 luck9806 于 2020-3-5 22:53 编辑
282198284 发表于 2020-3-5 21:40
xor不行我就不知道了,好像没有了

我没建菜单直接改的启动项

捕获.PNG (57.59 KB, 下载次数: 309)

捕获.PNG

作者: 282198284    时间: 2020-3-5 22:59
本帖最后由 282198284 于 2020-3-5 23:02 编辑
luck9806 发表于 2020-3-5 22:41
我没建菜单直接改的启动项

你这样和xor有半毛钱关系?
我的意思是,用xor启动Shell. efi加参数的,应该是可以去掉5秒等待时间

作者: luck9806    时间: 2020-3-5 23:17
测试了建立了菜单加入命令一样,仍有5秒计时
作者: 282198284    时间: 2020-3-5 23:31
本帖最后由 282198284 于 2020-3-5 23:33 编辑
luck9806 发表于 2020-3-5 23:17
测试了建立了菜单加入命令一样,仍有5秒计时

我试了一下,没问题啊,可以不用等5秒啊
命令是-delay 0

作者: luck9806    时间: 2020-3-6 07:29
282198284 发表于 2020-3-5 23:31
我试了一下,没问题啊,可以不用等5秒啊
命令是-delay 0

我看说明-delay:0,多了个:,非常感谢晚上再试一下
作者: luck9806    时间: 2020-3-6 20:41
本帖最后由 luck9806 于 2020-3-6 20:57 编辑
282198284 发表于 2020-3-5 23:31
我试了一下,没问题啊,可以不用等5秒啊
命令是-delay 0

测试了还是不行,可以把你的Shellx64.efi文件发给我试一下吗,谢谢!
测试了如下3种组合方式都不行,
-delay 0      (运行时提示0不是有效的命令,有计时)
-delay:0        (运行无其它提示,有计时)
-delay0         (运行无其它提示,有计时)

11.PNG (14.4 KB, 下载次数: 259)

11.PNG

作者: 282198284    时间: 2020-3-6 21:03
luck9806 发表于 2020-3-6 20:41
测试了还是不行,可以把你的Shellx64.efi文件发给我试一下吗,谢谢!
测试了如下3种组合方式都不行,
- ...

试一下

Shell.rar

248.48 KB, 下载次数: 74, 下载积分: 无忧币 -2


作者: luck9806    时间: 2020-3-6 21:39
282198284 发表于 2020-3-6 21:03
试一下

非常感谢!
使用你提供的shell已可以取消5秒计时,但启动黑屏,测试发现你的SheIl加载NVME驱动导致,后面使用load -nc 加载驱动就可以了。
作者: luck9806    时间: 2020-3-6 21:40
282198284 发表于 2020-3-6 21:03
试一下

非常感谢!
使用你提供的shell已可以取消5秒计时,但启动黑屏,测试发现你的SheIl加载NVME驱动导致,后面使用load -nc 加载驱动就可以了。
作者: luck9806    时间: 2020-3-6 21:41
282198284 发表于 2020-3-6 21:03
试一下

非常感谢!
使用你提供的shell已可以取消5秒计时,但启动黑屏,测试发现你的SheIl加载NVME驱动导致,后面使用load -nc 加载驱动就可以了。
作者: luck9806    时间: 2020-3-6 21:41
282198284 发表于 2020-3-6 21:03
试一下

非常感谢!
使用你提供的shell已可以取消5秒计时,但启动黑屏,测试发现你的SheIl加载NVME驱动导致,后面使用load -nc 加载驱动就可以了。
作者: luck9806    时间: 2020-3-6 21:42
282198284 发表于 2020-3-6 21:03
试一下

非常感谢!
使用你提供的shell已可以取消5秒计时,但启动黑屏,测试发现你的SheIl加载NVME驱动导致,后面使用load -nc 加载驱动就可以了。
作者: luck9806    时间: 2020-3-6 21:43
282198284 发表于 2020-3-6 21:03
试一下

非常感谢!
使用你提供的shell已可以取消5秒计时,但启动黑屏,测试发现你的SheIl加载NVME驱动导致,后面使用load -nc 加载驱动就可以了。
作者: luck9806    时间: 2020-3-6 21:48
手机网络有问题,提示网络异常未提交成功,结果发了这么多
作者: 282198284    时间: 2021-7-28 08:22
兄台的nvmex64.efi驱动从那里下载的,能分享一下?
作者: 282198284    时间: 2021-7-28 08:22
luck9806 发表于 2020-3-3 13:49
我直接建立了startup. nsh文件测试失败,存在2个问题:1、加载nvmex64.efi驱动后,磁盘不分配盘符,需运行m ...

可以试一下自动搜索全盘
作者: luck9806    时间: 2021-11-21 14:55
282198284 发表于 2021-7-28 08:22
兄台的nvmex64.efi驱动从那里下载的,能分享一下?

试一下




nvmeX64.rar

15.2 KB, 下载次数: 20, 下载积分: 无忧币 -2


作者: alldata    时间: 2023-10-19 20:02
282198284 发表于 2020-3-6 21:03
试一下

要怎样才能下载文件呢?
作者: 一江春水1688    时间: 2024-3-4 11:49
本帖最后由 一江春水1688 于 2024-3-4 11:52 编辑

备忘收藏

startup.nsh的等待时间可以设置环境变量改变(n秒):
set StartupDelay n
不过,跟shellx64.efi的版本有关,有些版本可行,有些不可行。
作者: luck9806    时间: 2024-5-5 12:53
一江春水1688 发表于 2024-3-4 11:49
备忘收藏

startup.nsh的等待时间可以设置环境变量改变(n秒):

请问一下,set StartupDelay n 命令是在加载shellx64.efi 后面设置吗
还有shellx64.efi有可以支持的版本提供一下吗,谢谢
作者: luck9806    时间: 2024-5-5 12:55
如果加载startup. nsh不显示命令行窗口,显示启动画图,命令后台运行还是比较完美
作者: 一江春水1688    时间: 2024-5-5 18:51
luck9806 发表于 2024-5-5 12:53
请问一下,set StartupDelay n 命令是在加载shellx64.efi 后面设置吗
还有shellx64.efi有可以支持的版本 ...

加载后,比如,延迟15秒(也可以是0秒),输入:
set StartupDelay 15
然后,输入 exit 退出,再重新进入 EFI SHell,则startup.nsh的等待时间为15秒。
说明:set StartupDelay n 只需输入一次,会自动保存,用命令 set StartupDelay 可查看StartupDelay的值。
作者: 一江春水1688    时间: 2024-5-5 18:55
luck9806 发表于 2024-5-5 12:53
请问一下,set StartupDelay n 命令是在加载shellx64.efi 后面设置吗
还有shellx64.efi有可以支持的版本 ...
shellx64.efi有可以支持的版本提供一下吗

Sorry,我没有上传的权限,提供不了
作者: luck9806    时间: 2024-5-6 17:24
一江春水1688 发表于 2024-5-5 18:55
Sorry,我没有上传的权限,提供不了

麻烦发一下邮件,谢谢
224489886@qq.com
作者: 财源茂盛    时间: 2024-6-21 21:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: chujiafu    时间: 2024-12-7 20:45
楼主,你好!
我也遇到了和你一样的问题:想用PEIe转M.2硬盘启动,刷Bios不成功,也想采用你的做法。
能不能把你的命令行和所需文件打包传上来吗?
谢谢!




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3