无忧启动论坛

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

[原创] NTloader: BIOS/UEFI 下用 GRUB4DOS 启动 VHD/WIM

    [复制链接]
91#
 楼主| 发表于 2023-6-16 13:04:44 | 显示全部楼层
本帖最后由 wintoflash 于 2023-6-16 13:12 编辑
liuzhaoyzz 发表于 2023-6-16 07:41
大佬,我还是有疑虑,没有搞懂,友请深入解释下。

#UEFI下面,g4e+kernel+ntloader方案可以启动pe.wim ...

首先,你得看文档。

文档上怎么用,你依葫芦画瓢就行了。
我看了你的介绍,UEFI下面,g4e启动linux kernel用的是handover/loadfile2协议,grub2用的是传统的32位boot protocol
g4e下面的kernel命令感觉跟grub2下面的linux命令,功能效果上来说,看起来差不太多啊?

你不觉得这两句话之间有矛盾吗?
我只是想知道为啥不成功,看了很多帖子,不明白其所以然,望解释答疑。

你自己前面已经把原因说了。
“UEFI下面,g4e启动linux kernel用的是handover/loadfile2协议,grub2用的是传统的32位boot protocol”
这就是原因。
回复

使用道具 举报

92#
 楼主| 发表于 2023-6-16 15:05:03 | 显示全部楼层
本帖最后由 wintoflash 于 2023-6-16 15:06 编辑
amwdi 发表于 2023-6-16 14:32
bios启动正常,uefi启动提示如图

ntloader和initrd.lz1是否在同一ESP分区?分区结构是什么样的?

点评

ntloader和initrd.lz1是在同一个分区,但是分区类型不是ESP,是普通的fat32分区 wim文件也在同一个分区,分区结构如图 [attachimg]528067[/attachimg]  详情 回复 发表于 2023-6-16 15:28
回复

使用道具 举报

93#
 楼主| 发表于 2023-6-18 19:49:48 | 显示全部楼层
本帖最后由 wintoflash 于 2023-6-18 19:51 编辑
amwdi 发表于 2023-6-16 15:28
ntloader和initrd.lz1是在同一个分区,但是分区类型不是ESP,是普通的fat32分区
wim文件也在同一个分区 ...

不能重现。我这里用的目录结构和你的完全一样,启动 WinPE 正常。
你用的 GRUB 是从哪里下的?ntloader 校验码和我的是否一致?


点评

感谢 grub在这下载的ftp.gnu.org/gnu/grub/grub-2.06-for-windows.zip ntloader校验码一样 由于没有uefi硬件 之前者是用OVMF固件测的 packages.debian.org/bookworm/ovmf 现在换成三叶草里的uefi来启动可以了  详情 回复 发表于 2023-6-19 09:20
回复

使用道具 举报

94#
 楼主| 发表于 2023-6-19 10:42:48 | 显示全部楼层
amwdi 发表于 2023-6-19 09:20
感谢
grub在这下载的ftp.gnu.org/gnu/grub/grub-2.06-for-windows.zip
ntloader校验码一样

试试这个。应该修复了bug。
ntloader.zip (2.92 MB, 下载次数: 26)

点评

非常感谢,这个在ovmf里可以用了  详情 回复 发表于 2023-6-19 13:55
回复

使用道具 举报

95#
 楼主| 发表于 2023-6-19 20:31:13 | 显示全部楼层
20230619
更新版本 v2.0.1
回复

使用道具 举报

96#
 楼主| 发表于 2023-6-23 22:12:37 | 显示全部楼层
本帖最后由 wintoflash 于 2023-6-23 22:30 编辑

写了一个获取文件系统 UUID 的小程序,以方便 rEFInd 等 bootloader 的使用者编写菜单。
fsuuid.zip (152.77 KB, 下载次数: 32)
rEFInd 可以参考以下菜单
  1. menuentry "Windows NT6+ VHD" {
  2. loader /path/to/ntloader
  3. initrd /path/to/initrd.lz1
  4. options "uuid=XXXX file=/path/to/win10.vhd"
  5. }
复制代码

uuid=XXXX 处填入 vhd/wim 所在分区的文件系统 UUID,可以用 fsuuid.exe 来获取。
比如
  1. fsuuid.exe X
  2. fsuuid.exe X:
  3. fsuuid.exe X:\
  4. fsuuid.exe \\?\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
复制代码

都可以。
fsuuid 也可以编译为 Linux 程序,在 Linux 下运行,如
  1. fsuuid /dev/sda1
复制代码


======
TMD 微软是疯了。如果信不过,可以自己审查代码,自行编译。

  1. i686-w64-mingw32-gcc -Wall -Werror -idirafter . fsuuid.c -o fsuuid.exe
  2. gcc -Wall -Werror -idirafter . fsuuid.c -o fsuuid
复制代码

评分

参与人数 1无忧币 +5 收起 理由
ksafei + 5 很给力!

查看全部评分

回复

使用道具 举报

97#
 楼主| 发表于 2023-9-29 14:25:28 | 显示全部楼层
sndnvaps 发表于 2023-9-29 13:38
这个我最后在查看了ntloader 在github.com上的源代码后,找到了答案,需要自己打包生成initrd.cpio,
再 ...


帖子里不是有么
回复

使用道具 举报

98#
 楼主| 发表于 2024-1-2 09:57:28 | 显示全部楼层
greyangel 发表于 2024-1-2 01:03
目前测试linux grub2 的vhd启动

你搞错了。这个是用来启动 Windows 的。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-2 17:31

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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