无忧启动论坛

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

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

    [复制链接]
181#
发表于 2021-4-24 07:48:16 | 只看该作者
回复

使用道具 举报

182#
发表于 2021-5-1 21:46:13 来自手机 | 只看该作者
wintoflash 发表于 2021-2-2 18:36
看样子是 boot_params 被"黑恶势力"破坏了。目前暂时没有想好怎么解决,这个问题先放着吧。

怀疑是ntload要在原始启动的磁盘,在其他盘不行。
回复

使用道具 举报

183#
发表于 2021-5-17 18:50:34 | 只看该作者
@ wintoflash
源代码缺少 bfd.h 头文件。
请教,initrd.lz1 是使用什么文件压缩、解压缩的?
回复

使用道具 举报

184#
 楼主| 发表于 2021-5-17 19:52:08 | 只看该作者
2011yaya2007777 发表于 2021-5-17 18:50
@ wintoflash
源代码缺少 bfd.h 头文件。
请教,initrd.lz1 是使用什么文件压缩、解压缩的?
源代码缺少 bfd.h 头文件。

Ubuntu 的话需要安装 binutils-dev libiberty-dev 才能编译。这两个是efireloc需要的,用来生成PE格式文件。
请教,initrd.lz1 是使用什么文件压缩、解压缩的?

是自定义文件头+微软的LZNT1压缩,我在utils文件夹里面提供了一个python脚本,可以压缩或解压。
具体可以看这个脚本:https://github.com/a1ive/ntloader/blob/master/makepkg.sh
  1. find * | cpio -o -H newc > ../initrd.cpio
  2. cd ..
  3. python lznt1.py initrd.cpio initrd.lz1
复制代码


yaya 想接盘这个项目吗?我可以把权限给你。
回复

使用道具 举报

185#
发表于 2021-5-17 20:05:39 来自手机 | 只看该作者
本帖最后由 2011yaya2007777 于 2021-5-17 20:16 编辑

我可不敢接盘。只是这几天测试启动wim文件,使用参数kernel函数,提示找不到efiboot....文件。使用chainloader函数,3个文件都在根目录,可以启动。如果两个外部命令在(3)/,wim文件在根目录,则提示找不到initrd.lz1文件。无法使用批处理尾随文件。由于你比较忙,只好自己硬着头皮研究一下。
回复

使用道具 举报

186#
发表于 2021-5-17 20:12:27 | 只看该作者
wintoflash 发表于 2021-5-17 19:52
Ubuntu 的话需要安装 binutils-dev libiberty-dev 才能编译。这两个是efireloc需要的,用来生成PE格式 ...

老大,刚才试了一下32位EFI,启动不成功,出现Press any key to continue
  1. title 启动 Win8 PE by ntloader
  2. uuid %?_BOOT%
  3. #kernel /EFI/grub/ntloader uuid=%?_UUID% file=/BOOT/H3_8%arch%.WIM
  4. #initrd /EFI/grub/initrd.lz1
  5. chainloader /EFI/grub/ntloader initrd=/EFI/grub/initrd.lz1 uuid=%?_UUID% file=/BOOT/H3_8%arch%.WIM
复制代码
(此处%arch%=PE)
64位没问题,但看介绍32位与64位都是支持的。不清楚是怎么回事了
回复

使用道具 举报

187#
 楼主| 发表于 2021-5-17 20:14:05 | 只看该作者
hhh333 发表于 2021-5-17 20:12
老大,刚才试了一下32位EFI,启动不成功,出现Press any key to continue
(此处%arch%=PE)
64位没问题 ...

chainloader只支持efi64。
kernel命令可以通吃bios/efi32/efi64。
回复

使用道具 举报

188#
 楼主| 发表于 2021-5-17 20:14:49 | 只看该作者
2011yaya2007777 发表于 2021-5-17 20:05
我可不敢接盘。只是这几天测试启动wim文件,使用参数kernelq

kernelq是啥?
回复

使用道具 举报

189#
发表于 2021-5-17 20:31:04 | 只看该作者
本帖最后由 hhh333 于 2021-5-17 20:46 编辑
wintoflash 发表于 2021-5-17 20:14
chainloader只支持efi64。
kernel命令可以通吃bios/efi32/efi64。

呵呵,确实,通过了,64位也通过了,原来的要用chainloader形式才能过,难道新的g4e进步了?

回复

使用道具 举报

190#
发表于 2021-5-17 21:05:48 | 只看该作者
hhh333 发表于 2021-5-17 20:31
呵呵,确实,通过了,64位也通过了,原来的要用chainloader形式才能过,难道新的g4e进步了?

呵呵,又回到实机状态测试,还是老毛病,只能chainloader,不能kernel,奈何?
回复

使用道具 举报

191#
发表于 2021-5-17 21:21:21 | 只看该作者
good
回复

使用道具 举报

192#
发表于 2021-5-18 08:48:04 | 只看该作者
本帖最后由 mygamexxx 于 2021-5-18 08:50 编辑
hhh333 发表于 2021-5-17 21:05
呵呵,又回到实机状态测试,还是老毛病,只能chainloader,不能kernel,奈何?

我感觉是 NTloader 可能必须放在原始的root,才能用kernel。只是猜测,因为这样试了kernel没问题。
title 启动WIM格式WIN10PE-X64\n启动/img/10PE.WIM
find --set-root /img/10PE.WIM
uuid ()
find --ignore-floppies --ignore-cd --set-root /efi/ntload/ntloader
kernel /EFI/ntload/ntloader uuid=%?_UUID% file=/img/10pe.wim
initrd /EFI/ntload/initrd.lz1


我用这个菜单没问题,ntloader 放在原始的root盘。


回复

使用道具 举报

193#
发表于 2021-5-18 09:41:23 | 只看该作者
mygamexxx 发表于 2021-5-18 08:48
我感觉是 NTloader 可能必须放在原始的root,才能用kernel。只是猜测,因为这样试了kernel没问题。
titl ...

我的本来WIM和这些工具都在一个分区啊,这个算不算原始root?
启动WIM我觉得还是wimboot灵活些,而且硬盘、光盘、网盘通吃,g4e中不知要如何使用
回复

使用道具 举报

194#
发表于 2021-5-18 10:16:54 | 只看该作者
本帖最后由 mygamexxx 于 2021-5-18 13:23 编辑
hhh333 发表于 2021-5-18 09:41
我的本来WIM和这些工具都在一个分区啊,这个算不算原始root?
启动WIM我觉得还是wimboot灵活些,而且硬 ...

我试过ntloader放在G4E所在的启动分区(hd0,0),.wim 文件在(hd0,1),kernel正常。
G4E所在的启动分区(hd0,0),ntloader 和 .wim 文件在(hd0,1),重新测试了一下,kernel是正常的。
回复

使用道具 举报

195#
 楼主| 发表于 2021-5-18 20:06:57 | 只看该作者
2011yaya2007777 发表于 2021-5-17 20:05
我可不敢接盘。只是这几天测试启动wim文件,使用参数kernel函数,提示找不到efiboot....文件。使用chainloa ...

chainloader 方式,initrd 要和 ntloader 位于同一 ESP 分区 (UEFI 固件可读的分区)。
使用参数kernel函数,提示找不到efiboot....文件

据我所知,出毛病的电脑,一般固件都把 initrd 和 boot_params 分配到 0x3fffc000 附近。你可以改一下 g4e,让它分配到低一些的位置,比如 0x2fffc000。
https://github.com/chenall/grub4 ... e2/builtins.c#L5913
  1. initrdefi_mem = allocate_pages_max (0x3fffffff, BYTES_TO_PAGES(size));
复制代码

https://github.com/chenall/grub4 ... e2/builtins.c#L6018
  1. linuxefi_params = allocate_pages_max (0x3fffffff, BYTES_TO_PAGES(16384));
复制代码


我的电脑上不会出现这个问题,所以我没法调试。
回复

使用道具 举报

196#
发表于 2021-5-19 12:53:48 来自手机 | 只看该作者
0x3fffffff修改后,没有效果。看来还不是这个问题。
回复

使用道具 举报

197#
 楼主| 发表于 2021-5-19 17:09:40 | 只看该作者
2011yaya2007777 发表于 2021-5-19 12:53
0x3fffffff修改后,没有效果。看来还不是这个问题。

试试这个:
ntloader.zip (2.53 MB, 下载次数: 42)
回复

使用道具 举报

198#
发表于 2021-5-19 18:28:15 | 只看该作者
本帖最后由 hhh333 于 2021-5-19 18:30 编辑

错误依旧

点评

耍我呢? [attachimg]480140[/attachimg] [attachimg]480141[/attachimg]  详情 回复 发表于 2021-5-19 18:53
回复

使用道具 举报

199#
 楼主| 发表于 2021-5-19 18:53:55 | 只看该作者

耍我呢?

点评

怪了,我把那两个文件拷哪里去了?我查一下。  详情 回复 发表于 2021-5-19 18:58
回复

使用道具 举报

200#
发表于 2021-5-19 18:58:40 | 只看该作者

怪了,我把那两个文件拷哪里去了?我查一下。
回复

使用道具 举报

201#
发表于 2021-5-19 19:16:57 | 只看该作者
前面拷错了一个盘,改过来后还是有问题,chainloader继续可用。但kernel还是不行

点评

kernel是卡在这里,还是和(183#)类似?  详情 回复 发表于 2021-5-19 19:27
回复

使用道具 举报

202#
 楼主| 发表于 2021-5-19 19:27:58 | 只看该作者
hhh333 发表于 2021-5-19 19:16
前面拷错了一个盘,改过来后还是有问题,chainloader继续可用。但kernel还是不行

kernel是卡在这里,还是和(183#)类似?

点评

卡死了  详情 回复 发表于 2021-5-19 19:30
回复

使用道具 举报

203#
发表于 2021-5-19 19:30:58 | 只看该作者
wintoflash 发表于 2021-5-19 19:27
kernel是卡在这里,还是和(183#)类似?

卡死了
回复

使用道具 举报

204#
发表于 2021-5-19 19:45:46 | 只看该作者
initrd=0x2fd24000+0x2c3000

...exttacting LZNT1-compressed initrd

Too many files

按任意键重启

点评

g4e用5月7日的版本就是这个提示,用今天的版本就是卡在上面的提示,走得稍远一点  详情 回复 发表于 2021-5-19 20:03
回复

使用道具 举报

205#
发表于 2021-5-19 20:03:07 | 只看该作者
2011yaya2007777 发表于 2021-5-19 19:45
initrd=0x2fd24000+0x2c3000

...exttacting LZNT1-compressed initrd

g4e用5月7日的版本就是这个提示,用今天的版本就是卡在上面的提示,走得稍远一点
回复

使用道具 举报

206#
发表于 2021-5-19 20:06:02 来自手机 | 只看该作者
上面是实机测试,以前是提示找不到文件。虚拟机倒是过了这个间断,由于内存不足,无法继续。
回复

使用道具 举报

207#
发表于 2021-5-19 20:11:52 | 只看该作者
NTloader前面的版本虚拟机也没问题,但实机提示找不到文件;用今天的版本走得远一点,再把g4e换成今天的,走得更远一点,但最终卡死,按键盘灯也没反应,死得比较透
回复

使用道具 举报

208#
发表于 2021-6-11 11:37:21 | 只看该作者
华硕P5Q SE 775主板,L5420 CPU(771加护舒宝贴),硬盘用GPT,事先装好WIN7 旗舰版
用楼主的工具,可以用 kernel启动,但用chainloader启动时会不停的嘀嘀声,死机(可按 ctrl+alt+del重启)
不管是启动实机中已安装好的WIN7,还是硬盘上的 WIN10 PE (WIM)
回复

使用道具 举报

209#
 楼主| 发表于 2021-6-16 10:33:47 | 只看该作者
liuzhaoyzz 发表于 2021-2-9 20:43
对了,ntloader搭配primo驱动,启动RAMOS前几天就没有问题了,我还没有进行更广泛地测试,应该没问题。春 ...

ntloader.zip (2.5 MB, 下载次数: 34)
试试。
这个只能用
  1. kernel /ntloader uuid=%?_UUID%
  2. initrd /initrd.lz1
复制代码

不能 chainloader。

点评

grub4dos-for_UEFI-2021-06-02,搭配ntloader2021-06-16 title WIN7X64-SVBUS (/VHD/SX70211.vhd)-kernel ntloader-vhd-RAMOS find --ignore-floppies --ignore-cd /EFI/grub/ntloader | set x= echo x=%x% find  详情 回复 发表于 2021-6-16 11:42
回复

使用道具 举报

210#
发表于 2021-6-16 11:42:04 | 只看该作者
本帖最后由 liuzhaoyzz 于 2021-6-16 11:43 编辑
wintoflash 发表于 2021-6-16 10:33
试试。
这个只能用

grub4dos-for_UEFI-2021-06-02,搭配ntloader2021-06-16
title WIN7X64-SVBUS (/VHD/SX70211.vhd)-kernel ntloader-vhd-RAMOS
find --ignore-floppies --ignore-cd /EFI/grub/ntloader | set x=
echo x=%x%
find --ignore-floppies --ignore-cd --set-root /VHD/SX70211.vhd
map --mem --top /VHD/SX70211.vhd (hd)
uuid (hd-1,0)
kernel %x%/EFI/grub/ntloader uuid=%?_UUID% hires=0
initrd %x%/EFI/grub/initrd.lz1
pause

title WIN7X64-SVBUS (/VHD/SX70211.vhd)-kernel ntloader-vhd[not RAMOS]
find --ignore-floppies --ignore-cd /EFI/grub/ntloader | set x=
echo x=%x%
find --ignore-floppies --ignore-cd --set-root /VHD/SX70211.vhd
uuid ()
kernel %x%/EFI/grub/ntloader uuid=%?_UUID% hires=0 file=/VHD/SX70211.vhd
initrd %x%/EFI/grub/initrd.lz1
pause

上面的两个菜单,都不行,一个是RAMOS,一个是直接启动vhd。启动的时候加载initrd.lz1之后直接重启,我录像了。
链接: https://pan.baidu.com/s/1YwtRlQsu7vi3RRxgxxNHbA 提取码: 7isc



VID_20210616_111002[00_00_11][20210616-112510].png (1.24 MB, 下载次数: 206)

VID_20210616_111002[00_00_11][20210616-112510].png

16111924.png (8.38 KB, 下载次数: 162)

16111924.png
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-18 05:34

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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