无忧启动论坛

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

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

    [复制链接]
331#
发表于 2023-5-14 22:42:57 来自手机 | 只看该作者
压缩包里面的说明文档扩展名是md,我在windows下面没注意,我总认为说明文档是txt,忽略了。关于这个ntloader用的kernel/chainloader我有点糊涂,没有get到你说的重点。反正大佬说不行就不行吧。^_^
回复

使用道具 举报

332#
发表于 2023-5-15 14:57:10 | 只看该作者
最新编译ntloader,结果报下面的错
ld -m elf_x86_64 -T script.lds -o ntloader.x86_64.elf -q -Map ntloader.x86_64.map \
        prefix.x86_64.o lib.x86_64.a
ld: warning: lib.x86_64.a(main.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(lznt1.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(bcd.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(biosdisk.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(reg.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(vsprintf.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(string.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(int13.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(vdisk.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(cpio.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(stdio.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(misc.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(memmap.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(cmdline.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(peloader.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(efimain.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(efidisk.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(msdos.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(gpt.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(fsuuid.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: warning: lib.x86_64.a(efiblock.i386.x86_64.o): corrupt GNU_PROPERTY_TYPE (5) size: 0xc
ld: Binary is too large
make: *** [Makefile:100:ntloader.x86_64.elf] 错误 1
相反,编译ntloader.i386.efi反而没问题...但我实在64位机器上编译的啊

点评

系统,gcc版本,ld版本  详情 回复 发表于 2023-5-15 15:30
回复

使用道具 举报

333#
 楼主| 发表于 2023-5-15 15:30:26 | 只看该作者
2012路西法 发表于 2023-5-15 14:57
最新编译ntloader,结果报下面的错
ld -m elf_x86_64 -T script.lds -o ntloader.x86_64.elf -q -Map ntlo ...

系统,gcc版本,ld版本
回复

使用道具 举报

334#
发表于 2023-5-15 21:47:07 | 只看该作者
wintoflash 发表于 2023-5-15 15:30
系统,gcc版本,ld版本

ubuntu20.04
gcc version 9.3.0
GNU ld 2.34

点评

用 GCC 9.x 编译确实会出这个问题。 用 GCC 10/11/12 编译都正常。 既然高版本GCC没问题,而且也搜不到什么解决办法,那我就不管了。  详情 回复 发表于 2023-5-16 10:36
回复

使用道具 举报

335#
发表于 2023-5-15 21:49:34 | 只看该作者
另外,github上的仓库只有2.0了?其他的都不见了...

点评

有1.0.4的啊  详情 回复 发表于 2023-5-16 11:58
回复

使用道具 举报

336#
 楼主| 发表于 2023-5-16 10:36:25 | 只看该作者
2012路西法 发表于 2023-5-15 21:47
ubuntu20.04
gcc version 9.3.0
GNU ld 2.34

用 GCC 9.x 编译确实会出这个问题。
用 GCC 10/11/12 编译都正常。
既然高版本GCC没问题,而且也搜不到什么解决办法,那我就不管了。
回复

使用道具 举报

337#
 楼主| 发表于 2023-5-16 11:58:57 | 只看该作者
2012路西法 发表于 2023-5-15 21:49
另外,github上的仓库只有2.0了?其他的都不见了...

有1.0.4的啊
回复

使用道具 举报

338#
发表于 2023-5-16 14:39:52 | 只看该作者
wintoflash 发表于 2023-5-16 10:36
用 GCC 9.x 编译确实会出这个问题。
用 GCC 10/11/12 编译都正常。
既然高版本GCC没问题,而且也搜不到 ...

这样啊……那我升级gcc吧……
回复

使用道具 举报

339#
发表于 2023-5-16 14:41:36 | 只看该作者

$git log
commit 77a8ffeb66ab2cc9200a4eae7ab0ac6d20080e5d (HEAD -> main, tag: v2.0.0, tag: latest, origin/main, origin/HEAD)
Author: a1ive <10670106+a1ive@users.noreply.github.com>
Date:   Sat Mar 11 11:54:41 2023 +0800

    update readme

commit 867d80c95ea93358f361c86708d758ca86cbd4b2
Author: a1ive <10670106+a1ive@users.noreply.github.com>
Date:   Sat Mar 11 11:48:55 2023 +0800

    ntloader v2

$ git branch -a
* main
  remotes/origin/HEAD -> origin/main
  remotes/origin/main

点评

https://github.com/grub4dos/ntloader/archive/refs/tags/v1.0.4.tar.gz 以前版本的实现有问题,不具参考价值,且许可协议有误。因此清空git提交记录。  详情 回复 发表于 2023-5-16 14:57
回复

使用道具 举报

340#
 楼主| 发表于 2023-5-16 14:57:00 | 只看该作者
2012路西法 发表于 2023-5-16 14:41
$git log
commit 77a8ffeb66ab2cc9200a4eae7ab0ac6d20080e5d (HEAD -> main, tag: v2.0.0, tag: latest, ...

https://github.com/grub4dos/ntlo ... /tags/v1.0.4.tar.gz
以前版本的实现有问题,不具参考价值,且许可协议有误。因此清空git提交记录。
回复

使用道具 举报

341#
发表于 2023-5-18 11:31:41 | 只看该作者
测试了一下,好像不支持vhd的wimboot方式启动,不知能否增加这一功能

点评

那是什么,怎么弄?  详情 回复 发表于 2023-5-18 12:07
回复

使用道具 举报

342#
 楼主| 发表于 2023-5-18 12:07:16 | 只看该作者
gutaiping2006 发表于 2023-5-18 11:31
测试了一下,好像不支持vhd的wimboot方式启动,不知能否增加这一功能

那是什么,怎么弄?有简单点的教程吗?

点评

因目前ntloader不支持,所以只能改用bootmgfw启动。  详情 回复 发表于 2023-5-18 13:08
这样做的目的,系统可以娱乐办公兼顾,非常小巧。可以开启开启uwf或primocache缓存,也可以一键备份恢复系统。  详情 回复 发表于 2023-5-18 12:55
VHD文件是系统wim压缩包释放的指针文件;例如通过如下命令:wimlib-imagex.exe apply "%wimfile%" 1 B:\ --wimboot;其中,wimfile就是系统wim包,B:就是VHD文件的挂载盘。然后通过通过ntloader启动这个vhd文件。  详情 回复 发表于 2023-5-18 12:46
回复

使用道具 举报

343#
发表于 2023-5-18 12:46:28 | 只看该作者
wintoflash 发表于 2023-5-18 12:07
那是什么,怎么弄?有简单点的教程吗?

VHD文件是系统wim压缩包释放的指针文件;例如通过如下命令:wimlib-imagex.exe apply "%wimfile%" 1 B:\ --wimboot;其中,wimfile就是系统wim包,B:就是VHD文件的挂载盘。然后通过通过ntloader启动这个vhd文件。
回复

使用道具 举报

344#
发表于 2023-5-18 12:55:29 | 只看该作者
wintoflash 发表于 2023-5-18 12:07
那是什么,怎么弄?有简单点的教程吗?

这样做的目的,系统可以娱乐办公兼顾,非常小巧。可以开启开启uwf或primocache缓存,也可以一键备份恢复系统。

2023-05-18_125404.png (8.89 KB, 下载次数: 165)

2023-05-18_125404.png

点评

看一下是怎么生成 bcd 的  详情 回复 发表于 2023-5-18 13:29
回复

使用道具 举报

345#
发表于 2023-5-18 13:08:51 | 只看该作者
wintoflash 发表于 2023-5-18 12:07
那是什么,怎么弄?有简单点的教程吗?

因目前ntloader不支持,所以只能改用bootmgfw启动。

2023-05-18_130453.png (20.96 KB, 下载次数: 155)

2023-05-18_130453.png

点评

W大,昨又测试反馈一下,按以下代码,启动成功。感谢您的辛苦付出  详情 回复 发表于 2023-5-19 08:19
回复

使用道具 举报

346#
 楼主| 发表于 2023-5-18 13:29:50 | 只看该作者
gutaiping2006 发表于 2023-5-18 12:55
这样做的目的,系统可以娱乐办公兼顾,非常小巧。可以开启开启uwf或primocache缓存,也可以一键备份恢复 ...

看一下是怎么生成 bcd 的

点评

BCD就是通过bootice手动添加的  详情 回复 发表于 2023-5-18 13:46
回复

使用道具 举报

347#
发表于 2023-5-18 13:46:50 | 只看该作者
wintoflash 发表于 2023-5-18 13:29
看一下是怎么生成 bcd 的

BCD就是通过bootice手动添加的

2023-05-18_134500.png (18.44 KB, 下载次数: 172)

2023-05-18_134500.png

点评

和普通vhd的bcd有何不同?  详情 回复 发表于 2023-5-18 13:49
回复

使用道具 举报

348#
 楼主| 发表于 2023-5-18 13:49:35 | 只看该作者
gutaiping2006 发表于 2023-5-18 13:46
BCD就是通过bootice手动添加的

和普通vhd的bcd启动项有何不同?

点评

没有不同  详情 回复 发表于 2023-5-18 13:51
回复

使用道具 举报

349#
发表于 2023-5-18 13:51:12 | 只看该作者
wintoflash 发表于 2023-5-18 13:49
和普通vhd的bcd启动项有何不同?

没有不同

点评

那我不明白为什么ntloader不能启动它。  详情 回复 发表于 2023-5-18 14:02
回复

使用道具 举报

350#
 楼主| 发表于 2023-5-18 14:02:06 | 只看该作者

那我不明白为什么ntloader不能启动它。
回复

使用道具 举报

351#
发表于 2023-5-18 16:03:02 | 只看该作者
chainloader和linuxefi启动有什么不一样的吗?2.0的ntloader被grub2认为“the kernel is too old”而且有的机器上linuxefi启动不了win7,只能chain启动

点评

为什么不看README.md? 不是写了uefi下启动的方法吗?  详情 回复 发表于 2023-5-18 16:28
回复

使用道具 举报

352#
 楼主| 发表于 2023-5-18 16:28:59 | 只看该作者
本帖最后由 wintoflash 于 2023-5-18 16:39 编辑
2012路西法 发表于 2023-5-18 16:03
chainloader和linuxefi启动有什么不一样的吗?2.0的ntloader被grub2认为“the kernel is too old”{:1_201: ...

为什么不看README.md?
不是写了uefi下启动的方法吗?
  1. menuentry "Boot Windows NT6+ PE" {
  2.     probe -s dev_uuid -u (hdx,y);
  3.     if [ "${grub_platform}" = "efi" ];
  4.     then
  5.         chainloader /ntloader initrd=/initrd.lz1 uuid=${dev_uuid} file=/path/to/winpe.wim;
  6.     else
  7.         linux16 /ntloader uuid=${dev_uuid} file=/path/to/winpe.wim;
  8.         initrd16 /initrd.lz1;
  9.    fi;
  10. }
复制代码
回复

使用道具 举报

353#
发表于 2023-5-18 18:40:04 | 只看该作者
wintoflash 发表于 2023-5-18 16:28
为什么不看README.md?
不是写了uefi下启动的方法吗?

好吧,之前的1.0.4好像linuxefi可以直接启动就用了看来是一直错误用法
回复

使用道具 举报

354#
发表于 2023-5-19 08:19:20 | 只看该作者
gutaiping2006 发表于 2023-5-18 13:08
因目前ntloader不支持,所以只能改用bootmgfw启动。

W大,昨又测试反馈一下,按以下代码,启动成功。感谢您的辛苦付出

2023-05-19_081443.png (16.71 KB, 下载次数: 158)

2023-05-19_081443.png
回复

使用道具 举报

355#
发表于 2023-5-19 16:12:36 | 只看该作者
大佬,请教一下我拿 ventoy 的 grub2.04 通过 chainloader 引导 ntloader,会报错:Could not open simple file system。其中,ntloader 和 initlz1 在 Fat32 分区,vhd 镜像在 ntfs 分区。
我的引导指令如下:
set root=(hd1, 3)
probe -u --set=dev_uuid (hd1,3)
chainloader (hd1,1)/ntloader initrd=/initrd.lz1 uuid=${dev_uuid} file=/win7.vhd
boot
其中,(hd1,3) 为 存放 vhd 镜像的 ntfs 分区,(hd1,1) 为存放 ntloader 和 initrd.lz1 的 fat32 分区
使用该指令,在 Ubuntu18.06(grub2.04) 和 ubuntu 22.04(grub2.06) 上都可以正常引导,但是在 ventoy 中就报错了。
是不是需要打什么 patch 或者做什么修改呢?

点评

set root=(hd1,3) probe -u --set=dev_uuid (hd1,3) chainloader (hd1,1)/ntloader initrd=/initrd.lz1 uuid=${dev_uuid} file=/win7.vhd boot 改为 set root=(hd1,1) probe -u --set=dev_uuid (hd1,3) chain  详情 回复 发表于 2023-5-19 19:14
回复

使用道具 举报

356#
 楼主| 发表于 2023-5-19 19:14:33 | 只看该作者
本帖最后由 wintoflash 于 2023-5-19 19:16 编辑
johnnyzhao328 发表于 2023-5-19 16:12
大佬,请教一下我拿 ventoy 的 grub2.04 通过 chainloader 引导 ntloader,会报错:Could not open simple  ...

set root=(hd1,3)
probe -u --set=dev_uuid (hd1,3)
chainloader (hd1,1)/ntloader initrd=/initrd.lz1 uuid=${dev_uuid} file=/win7.vhd
boot
改为
set root=(hd1,1)
probe -u --set=dev_uuid (hd1,3)
chainloader (hd1,1)/ntloader initrd=/initrd.lz1 uuid=${dev_uuid} file=/win7.vhd
boot
=============
ventoy的grub2 chainloader 代码有点问题,它向 efi 程序传递的路径是 root 分区而非文件所在分区。
所以在执行chainloader命令前要把root设为ntloader所在分区。
回复

使用道具 举报

357#
发表于 2023-5-20 22:37:01 | 只看该作者
新人还是没看懂NTloader是什么,这个跟grub4dos是什么关系
回复

使用道具 举报

358#
发表于 2023-5-21 02:41:06 | 只看该作者
我暂时都没看懂怎么用。。囧。。。
回复

使用道具 举报

359#
发表于 2023-5-21 10:35:30 | 只看该作者
wintoflash 发表于 2023-4-1 09:51
我怀疑是 map 出来的 vdf 镜像有问题。
如果 vdf 里面有 ESP 分区 (能直接启动) 的话,map 直接启动试试 ...

好消息!
http://bbs.wuyou.net/forum.php?m ... &fromuid=298214
306楼菜单,g4e2023-5-20+ntloader2023-03-11,成功启动Primo双镜像win10.vdf!
回复

使用道具 举报

360#
发表于 2023-5-21 17:18:02 | 只看该作者
我刚才测试了下,启动不了WIM,会出错,是WINPE里面提取的WIM,在ISO中就顺利启动,直接用ntload不行。。。

点评

非常抱歉听到您在尝试启动 WIM 文件时遇到了问题。根据您的描述,如果在 ISO 文件中可以成功启动 WIM 文件,但直接使用 ntload 命令无法启动,可能有几个可能的原因: 1. 依赖关系问题:启动 WIM 文件可能依赖于  详情 回复 发表于 2023-5-21 18:20
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-16 10:30

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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