无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 640|回复: 24
打印 上一主题 下一主题

[求助] 关于xorboot引导不能正常关机的问题

  [复制链接]
跳转到指定楼层
1#
发表于 2024-11-22 10:21:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 阿非 于 2024-11-22 10:28 编辑

用Pauly 大大的XORBOOT(Uefi 版v0.25)引导,我今天遇到了一个非常奇怪的问题。用xorboot 引导后,无法关机,具体表现为,点击关机,提示正在关机中,然后黑屏,立马就进入桌面,就像注销又登录了一样。开始我以为是系统问题,重装了几个不同版本的系统,Windows 10 22H2-19045x64,22H2我还了几个版本都一样。没安装其他软件。改为Windows Boot Manager为第一顺序就好了可以正常关机。能正常重启,就是不能关机。
我之前的硬盘是mbr。新换了块硬盘,分区为GPT的。
同样的系统,我之前在多台笔记本上用xorboot引导都没问题。
请问各位大大,是什么问题,该如何解决

2#
 楼主| 发表于 2024-11-22 10:36:14 | 只看该作者
电脑是戴尔OptiPlex 3020
回复

使用道具 举报

3#
 楼主| 发表于 2024-11-22 10:51:24 | 只看该作者
反复测试,在系统电源选项中关闭快速启动就能正常关机。只要打开快速启动就无法正常关机
回复

使用道具 举报

4#
发表于 2024-11-22 12:13:11 来自手机 | 只看该作者
引导程序不背这个锅,一般是程序造成,我的也是dell 换了最新版的win11结果关机只关显示器,主机却全力运转,估计是卡死了,排查后发现的VM虚拟机和新系统不兼容造成的,换了个新版本的VM就可以正常关机了。

点评

呵呵,就是引导引起的。你仔细读题就知道了  详情 回复 发表于 2024-11-22 13:59
回复

使用道具 举报

5#
发表于 2024-11-22 13:13:57 | 只看该作者
来看看了
回复

使用道具 举报

6#
 楼主| 发表于 2024-11-22 13:59:48 | 只看该作者
baby1277 发表于 2024-11-22 12:13
引导程序不背这个锅,一般是程序造成,我的也是dell 换了最新版的win11结果关机只关显示器,主机却全力运转 ...

呵呵,就是引导引起的。你仔细读题就知道了
回复

使用道具 举报

7#
发表于 2024-11-22 14:23:33 | 只看该作者
来看看
回复

使用道具 举报

8#
发表于 2024-11-22 17:06:01 | 只看该作者
快速启动模式在关机时要写bcd,而xorboot内置的bcd不能写,所以不能关机
关了快速启动就可以

或者xorboot中使用外部bcd,这个bcd与常规win启动的bcd路径一致,可能也可以在快速启动下关机,不过我没有测试证实,楼主可以试试。

点评

其实不是 BCD 不可写导致的。 而是 BCD 模板里面没有 {resumeobject} 导致的。 ntboot 创建 BCD 的时候加上 {resumeobject} 就可以了。 https://github.com/grub4dos/ntloader/blob/f83ef5e6c61c218b0715bcc30c5d  详情 回复 发表于 2024-11-25 20:13
感谢解惑!我试出了关闭快速启动能解决问题,但不知道原因。  详情 回复 发表于 2024-11-22 21:27
支持,感谢解答。  详情 回复 发表于 2024-11-22 20:08
grub 的ntboot 也许一个情况吧  详情 回复 发表于 2024-11-22 17:53
回复

使用道具 举报

9#
发表于 2024-11-22 17:53:39 | 只看该作者
hilsonma 发表于 2024-11-22 17:06
快速启动模式在关机时要写bcd,而xorboot内置的bcd不能写,所以不能关机
关了快速启动就可以

grub 的ntboot 也许一个情况吧

点评

是的,同样的情形。  详情 回复 发表于 2024-11-22 18:27
回复

使用道具 举报

10#
发表于 2024-11-22 18:27:23 | 只看该作者
zncs520 发表于 2024-11-22 17:53
grub 的ntboot 也许一个情况吧

是的,同样的情形。
回复

使用道具 举报

11#
发表于 2024-11-22 20:08:45 | 只看该作者
hilsonma 发表于 2024-11-22 17:06
快速启动模式在关机时要写bcd,而xorboot内置的bcd不能写,所以不能关机
关了快速启动就可以

支持,感谢解答。
回复

使用道具 举报

12#
 楼主| 发表于 2024-11-22 21:27:26 来自手机 | 只看该作者
hilsonma 发表于 2024-11-22 17:06
快速启动模式在关机时要写bcd,而xorboot内置的bcd不能写,所以不能关机
关了快速启动就可以


感谢解惑!我试出了关闭快速启动能解决问题,但不知道原因。
回复

使用道具 举报

13#
发表于 2024-11-25 20:13:11 | 只看该作者
本帖最后由 wintoflash 于 2024-11-25 20:20 编辑
hilsonma 发表于 2024-11-22 17:06
快速启动模式在关机时要写bcd,而xorboot内置的bcd不能写,所以不能关机
关了快速启动就可以

其实不是 BCD 不可写导致的。
而是 BCD 模板里面没有 {resumeobject} 导致的。
快速启动时系统是把信息写入 hiberfil.sys 的。而 BCD 的 {resumeobject} 里面指定了 hiberfil.sys 的路径。
ntboot 创建 BCD 的时候加上 {resumeobject} 就可以了。
https://github.com/grub4dos/ntlo ... 6/utils/bcd.bat#L82



理论上,g4d 的 ntloader 应该已经解决了这个问题。

点评

ntboot 创建 BCD 的时候加上 {resumeobject} 就可以了 GRBU2的ntboot 咋加?  详情 回复 发表于 2024-11-27 19:17
感谢指正。 是根据hiberfil.sys来决定执行{resumeobject}的吗?我以为是要写一次性启动项的。  详情 回复 发表于 2024-11-25 20:53
回复

使用道具 举报

14#
发表于 2024-11-25 20:53:48 | 只看该作者
wintoflash 发表于 2024-11-25 20:13
其实不是 BCD 不可写导致的。
而是 BCD 模板里面没有 {resumeobject} 导致的。
快速启动时系统是把信息 ...

感谢指正。

是根据hiberfil.sys来决定执行{resumeobject}的吗?我以为是要写一次性启动项的。

点评

快速启动就是把内存里面的重要数据写到硬盘上,再次启动的时候从硬盘上加载这些数据。 具体地来说,BCD 的 {resumeobject} 这个项目里面指定了把数据具体保存到哪个文件里。 默认是 hiberfil.sys。  详情 回复 发表于 2024-11-27 19:41
回复

使用道具 举报

15#
发表于 2024-11-25 20:57:10 | 只看该作者
这么奇怪的现象
回复

使用道具 举报

16#
发表于 2024-11-27 19:17:37 | 只看该作者
wintoflash 发表于 2024-11-25 20:13
其实不是 BCD 不可写导致的。
而是 BCD 模板里面没有 {resumeobject} 导致的。
快速启动时系统是把信息 ...

ntboot 创建 BCD 的时候加上 {resumeobject} 就可以了

GRBU2的ntboot  咋加?

点评

不是很好改。grub2的ntboot写得比较早,bcd是硬编码进去的。 要么直接用ntloader,要么就自己想办法参照ntloader的bcd改一下grub2 ntboot的源码。  详情 回复 发表于 2024-11-27 19:38
回复

使用道具 举报

17#
发表于 2024-11-27 19:38:02 | 只看该作者
zncs520 发表于 2024-11-27 19:17
ntboot 创建 BCD 的时候加上 {resumeobject} 就可以了

GRBU2的ntboot  咋加?

不是很好改。grub2的ntboot写得比较早,bcd是硬编码进去的。
要么直接用ntloader,要么就自己想办法参照ntloader的bcd改一下grub2 ntboot的源码。

点评

我修改了GRUB的 RUN.CFG function xntboot { regexp -s filename '.*/(.*)' "$1" regexp -s filepath '/(.*)/' "$1" set winfile="/$filepath/$filename"; search -n -s filedisk -f ${winfile}; probe -s d  详情 回复 发表于 2024-12-8 22:22
回复

使用道具 举报

18#
发表于 2024-11-27 19:41:03 | 只看该作者
hilsonma 发表于 2024-11-25 20:53
感谢指正。

是根据hiberfil.sys来决定执行{resumeobject}的吗?我以为是要写一次性启动项的。

快速启动就是把内存里面的重要数据写到硬盘上,再次启动的时候从硬盘上加载这些数据。
具体地来说,BCD 的 {resumeobject} 这个项目里面指定了把数据具体保存到哪个文件里。
默认是 hiberfil.sys。
回复

使用道具 举报

19#
发表于 2024-12-8 22:22:21 | 只看该作者
本帖最后由 zncs520 于 2024-12-8 22:24 编辑
wintoflash 发表于 2024-11-27 19:38
不是很好改。grub2的ntboot写得比较早,bcd是硬编码进去的。
要么直接用ntloader,要么就自己想办法参照 ...

我修改了GRUB的 RUN.CFG

function xntboot {
regexp -s filename '.*/(.*)' "$1"
regexp -s filepath '/(.*)/' "$1"
set winfile="/$filepath/$filename";
search -n -s filedisk -f ${winfile};
probe -s dev_uuid -u ($filedisk);
chainloader $prefix/ntloader/ntloader initrd=$prefix/ntloader/initrd.lz1 uuid=${dev_uuid} file=${winfile};
}
initrd 指向了 (loop)/boot/grub/ntloader/initrd.lz1
后面改成initrd=/boot/grub/ntloader/initrd.lz1

应该是initrd读取失败。。。

提示 Could not open simple file system


是ntloader 不能读取自己所在的loop分区的内容吧?

点评

loop磁盘只在grub2内部有效。 你可以建一个img,把ntloader和initrd放img里面,然后map挂载这个img。  详情 回复 发表于 2024-12-9 06:30
回复

使用道具 举报

20#
发表于 2024-12-9 06:30:44 | 只看该作者
zncs520 发表于 2024-12-8 22:22
我修改了GRUB的 RUN.CFG

function xntboot {

loop磁盘只在grub2内部有效。
你可以建一个img,把ntloader和initrd放img里面,然后map挂载这个img。

点评

map --nb "$prefix/ntloader.img" function xntboot { regexp -s filename '.*/(.*)' "$1" regexp -s filepath '/(.*)/' "$1" regexp -s filedisk '\(([a-zA-Z0-9]+,[a-zA-Z0-9]+)\)' "$1" set winfile="/$file  详情 回复 发表于 2024-12-10 09:17
回复

使用道具 举报

21#
发表于 2024-12-10 09:17:28 | 只看该作者
wintoflash 发表于 2024-12-9 06:30
loop磁盘只在grub2内部有效。
你可以建一个img,把ntloader和initrd放img里面,然后map挂载这个img。

map --nb "$prefix/ntloader.img"
function xntboot {
regexp -s filename '.*/(.*)' "$1"
regexp -s filepath '/(.*)/' "$1"
regexp -s filedisk '\(([a-zA-Z0-9]+,[a-zA-Z0-9]+)\)' "$1"
set winfile="/$filepath/$filename";
probe -s dev_uuid -u "$filedisk";
chainloader (vd0,msdos1)/ntloader initrd=/initrd.lz1 uuid=${dev_uuid} file=${winfile} quiet;
}


成功启动  ,
但是不能正常关机的问题依旧呀
华硕天选3 笔记本

点评

你这是启动的wim或vhd吗? 这个只对正常系统有效。 对于不支持休眠的系统如wim,vhd,不能关机是另外的问题。  详情 回复 发表于 2024-12-10 09:55
回复

使用道具 举报

22#
发表于 2024-12-10 09:55:41 | 只看该作者
zncs520 发表于 2024-12-10 09:17
map --nb "$prefix/ntloader.img"
function xntboot {
regexp -s filename '.*/(.*)' "$1"

你这是启动的wim或vhd吗?
这个只对正常系统有效。
对于不支持休眠的系统如wim,vhd,不能关机是另外的问题。

点评

if search --file --set=winpatch --no-floppy /Windows/Boot/EFI/bootmgfw.efi; then menuentry "WindowsX" --class win11 { probe -s dev_uuid -u ($winpatch); chainloader (vd0,msdos1)/ntloader initrd=/ini  详情 回复 发表于 2024-12-10 10:11
回复

使用道具 举报

23#
发表于 2024-12-10 10:11:34 | 只看该作者
wintoflash 发表于 2024-12-10 09:55
你这是启动的wim或vhd吗?
这个只对正常系统有效。
对于不支持休眠的系统如wim,vhd,不能关机是另外的 ...

if search --file --set=winpatch --no-floppy /Windows/Boot/EFI/bootmgfw.efi; then
menuentry "WindowsX" --class win11 {
probe -s dev_uuid -u ($winpatch);
chainloader (vd0,msdos1)/ntloader initrd=/initrd.lz1 uuid=${dev_uuid}
}
fi


启动正常系统也是不能关机

PS 关掉快速启动就正常了

点评

我这边开快速启动之后也是可以正常关机的。改用grub2的话不行。  详情 回复 发表于 2024-12-10 20:04
回复

使用道具 举报

24#
发表于 2024-12-10 20:04:43 | 只看该作者
zncs520 发表于 2024-12-10 10:11
if search --file --set=winpatch --no-floppy /Windows/Boot/EFI/bootmgfw.efi; then
menuentry "Windo ...

我这边开快速启动之后也是可以正常关机的。改用grub2的话不行。

点评

grub2的链式加载理论上说应该没这问题 摸不到头脑了 谢谢大佬点拨~  详情 回复 发表于 2024-12-11 16:54
回复

使用道具 举报

25#
发表于 2024-12-11 16:54:37 | 只看该作者
wintoflash 发表于 2024-12-10 20:04
我这边开快速启动之后也是可以正常关机的。改用grub2的话不行。

grub2的链式加载理论上说应该没这问题

  摸不到头脑了


谢谢大佬点拨~
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-26 22:43

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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