无忧启动论坛

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

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

    [复制链接]
31#
 楼主| 发表于 2021-2-9 09:43:33 | 显示全部楼层
dos时代菜鸟 发表于 2021-2-9 09:16
为啥呢?
开始我以为是  本地 bootmgfw.efi 调用了本地的 bcd ,我把 本地的  bcd  改名了,一样可以。
...

ntloader加载的bootmgfw.efi和bcd在initrd文件里面.

点评

可是 提示 no bootmgfw.efi ,也不知道为啥。 先chainloader bootmgfw.efi 加载了以后,就没这提示了。调用的也是 initrd.lz1 里的 bcd  详情 回复 发表于 2021-2-9 22:09
回复

使用道具 举报

32#
 楼主| 发表于 2021-2-9 11:31:44 | 显示全部楼层
本帖最后由 wintoflash 于 2021-2-9 11:55 编辑

v1.0.5
增加 win7 bootmgfw.efi 和 uefiseven
添加 win7 和 vgashim 参数以模拟 int10h 启动 Win7
  1. kernel /ntloader %?_UUID% win7 vgashim
复制代码


仅供测试

点评

1.05版本,启动svbus内存系统还是7B蓝屏。菜单前面有贴出来。  详情 回复 发表于 2021-2-9 17:42
启动win7vhd出错:Fatal no bootmgfw.efi  详情 回复 发表于 2021-2-9 13:24
回复

使用道具 举报

33#
 楼主| 发表于 2021-2-9 14:00:24 | 显示全部楼层
hiluo 发表于 2021-2-9 13:24
启动win7vhd出错:Fatal no bootmgfw.efi

抱歉,提交源码的时候漏了点东西。请重新下载。

点评

新下载,启动win7vhd黑屏无提示(win10台式机不支持?)  详情 回复 发表于 2021-2-9 14:32
回复

使用道具 举报

34#
 楼主| 发表于 2021-2-9 18:32:13 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-9 17:42
1.05版本,启动svbus内存系统还是7B蓝屏。菜单前面有贴出来。

这个问题应该和 ntloader 无关,而是 grub4dos 没有向内存中写入内存盘地址。
回复

使用道具 举报

35#
 楼主| 发表于 2021-2-9 18:34:01 | 显示全部楼层
blank007 发表于 2021-2-9 15:03
BIOS+MBR时代,我的硬盘划分为2个主分区,1个扩展分区(扩展分区中划分为若干逻辑分区)。
    第1个主 ...
我猜测,这个思路和 wimboot、ntloader 是不是有一丝丝的相似?

和 ntboot / ntloader 的原理差不多。

UEFI下,怎么制作一个“可启动”的软盘镜像?如何使用 grub4dos (UEFI) 或者 GRUB2 来“启动”这个镜像?
   这个镜像和上面说的功能相似:包含 bootmgfw.efi、BCD、boot.sdi,用以启动多个不同版本的、基于 NT6+的 WinPE。

UEFI 下的 bootmgfw.efi 不支持软盘,所以你得做硬盘镜像。

点评

多谢。 还是您的方法更具通用性。 建议可以让最终用户可重新打包 initrd.lz1 文件,以便及时更新涉及的 bootmgr 、bootmgfw.efi 文件。  详情 回复 发表于 2021-2-9 18:48
回复

使用道具 举报

36#
 楼主| 发表于 2021-2-9 18:34:56 | 显示全部楼层
hiluo 发表于 2021-2-9 14:32
新下载,启动win7vhd黑屏无提示(win10台式机不支持?)

你先不用ntloader直接启动vhd,确认一下是不是不支持你的机器。
回复

使用道具 举报

37#
 楼主| 发表于 2021-2-9 19:10:53 | 显示全部楼层
blank007 发表于 2021-2-9 18:48
多谢。

还是您的方法更具通用性。

当然允许啊,完全开源的。支持直接cpio打包的initrd,cpio打包之后也可以用 lznt1python 脚本压缩。

cpio打包
  1. find * | cpio -o -H newc > ../initrd.cpio
复制代码

lznt1压缩
  1. python lznt1.py initrd.cpio initrd.lz1
复制代码

点评

对了,ntloader搭配primo驱动,启动RAMOS前几天就没有问题了,我还没有进行更广泛地测试,应该没问题。春节之后准备更新芈员外的一键RAMOS4.0. 这样子就可以彻底抛弃ntfs.efi了。 最近很懒,什么都不想干。  详情 回复 发表于 2021-2-9 20:43
多谢。 我要学习一下您说的方法。  详情 回复 发表于 2021-2-9 19:18
回复

使用道具 举报

38#
 楼主| 发表于 2021-2-9 22:14:03 | 显示全部楼层
dos时代菜鸟 发表于 2021-2-9 22:09
可是 提示 no bootmgfw.efi ,也不知道为啥。
先chainloader bootmgfw.efi 加载了以后,就没这提示了。调 ...

拍照/截图

点评

刚刚测试,有没问题了。  详情 回复 发表于 2021-2-9 23:34
回复

使用道具 举报

39#
 楼主| 发表于 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 想接盘这个项目吗?我可以把权限给你。

点评

老大,刚才试了一下32位EFI,启动不成功,出现Press any key to continue (此处%arch%=PE) 64位没问题,但看介绍32位与64位都是支持的。不清楚是怎么回事了  详情 回复 发表于 2021-5-17 20:12
回复

使用道具 举报

40#
 楼主| 发表于 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。

点评

呵呵,确实,通过了,64位也通过了,原来的要用chainloader形式才能过,难道新的g4e进步了?  详情 回复 发表于 2021-5-17 20:31
回复

使用道具 举报

41#
 楼主| 发表于 2021-5-17 20:14:49 | 显示全部楼层
2011yaya2007777 发表于 2021-5-17 20:05
我可不敢接盘。只是这几天测试启动wim文件,使用参数kernelq

kernelq是啥?
回复

使用道具 举报

42#
 楼主| 发表于 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));
复制代码


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

使用道具 举报

43#
 楼主| 发表于 2021-5-19 17:09:40 | 显示全部楼层
2011yaya2007777 发表于 2021-5-19 12:53
0x3fffffff修改后,没有效果。看来还不是这个问题。

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

点评

错误依旧  详情 回复 发表于 2021-5-19 18:28
回复

使用道具 举报

44#
 楼主| 发表于 2021-5-19 18:53:55 | 显示全部楼层

耍我呢?

点评

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

使用道具 举报

45#
 楼主| 发表于 2021-5-19 19:27:58 | 显示全部楼层
hhh333 发表于 2021-5-19 19:16
前面拷错了一个盘,改过来后还是有问题,chainloader继续可用。但kernel还是不行

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

点评

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

使用道具 举报

46#
 楼主| 发表于 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
回复

使用道具 举报

47#
 楼主| 发表于 2021-6-21 14:35:06 | 显示全部楼层
hhh333 发表于 2021-6-19 16:48
前面是改的,写成一行了
现在改成两行
还是出错,不过走得远点

https://github.com/grub4dos/ntloader/releases/tag/latest
按你电脑目前的现象推断,用这个新版本应该出现的现象是找不到initrd,试试。
另外这个里面提供了ntloader.i386,可供ia32 efi下chainloader使用(我没测试)。

点评

22号最新版与21日的一样,停一下就重启了。chainloader没问题  详情 回复 发表于 2021-6-23 11:26
试了,没出什么提示,似乎在读WIM(猜的),但到后面重启了  详情 回复 发表于 2021-6-21 18:40
回复

使用道具 举报

48#
 楼主| 发表于 2021-7-8 10:11:27 | 显示全部楼层
fmwqsn 发表于 2021-7-7 17:33
碰见了个问题,不知道是就我自己这这样还是普遍现象。
不管是用ntloader还是grub2里的 ntboot ,启动起来 ...

uefi?

点评

嗯,是的,UEFI的环境。我在试着改BCD做实验。试图找到影响的点。  详情 回复 发表于 2021-7-8 10:15
回复

使用道具 举报

49#
 楼主| 发表于 2021-7-15 15:34:25 | 显示全部楼层
fmwqsn 发表于 2021-7-8 11:21
我换了个机器来试,同样的结果。
如果是不需要重启的更新,基本上都可以装上。
如果是需要重启的更新,安 ...

系统更新的时候会往硬盘写bcd,估计是这个原因导致的。
回复

使用道具 举报

50#
 楼主| 发表于 2021-10-21 19:41:52 | 显示全部楼层
liuzhaoyzz 发表于 2021-4-6 14:42
你怕是误会了。w大跑路的意思,只是懒得开发了,哪里有什么债务危机。

我他妈的就不信邪了,有空的话请再分别测试一下这三个版本:
ntloader_a.zip (2.53 MB, 下载次数: 65)
ntloader_b.zip (2.53 MB, 下载次数: 64)
ntloader_c.zip (2.53 MB, 下载次数: 66)


点评

呵呵,出了新的了,有空试下,如果我那个电脑成功,说明问题解决。至于CSM等不在考虑之列  详情 回复 发表于 2021-10-25 10:34
革命尚未成功,同志仍需努力!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 --ignor  详情 回复 发表于 2021-10-22 15:48
试了 a b c kernel启动 pe.wim 没什么区别 (b75主板) 顺便问下 : g4e 在 github 的编译 虚拟机 改为 ubuntu18 , 是不是 GCC也 升级成 7.5了  详情 回复 发表于 2021-10-22 13:07
回复

使用道具 举报

51#
 楼主| 发表于 2021-10-22 13:18:20 | 显示全部楼层
2011whp 发表于 2021-10-22 13:07
试了 a b c       kernel启动 pe.wim    没什么区别 (b75主板)

麻烦加上pause截图上传,我看一下。

g4e 在 github 的编译 虚拟机 改为  ubuntu18 ,  是不是 GCC也 升级成 7.5了

不是。gcc版本不变。
回复

使用道具 举报

52#
 楼主| 发表于 2021-10-22 13:37:15 | 显示全部楼层

看起来没问题啊?
至少不是之前找不到initrd之类的问题。

点评

三个 都 能启动, 是给你 看参数  详情 回复 发表于 2021-10-22 13:52
回复

使用道具 举报

53#
 楼主| 发表于 2021-10-22 13:59:48 | 显示全部楼层
2011whp 发表于 2021-10-22 13:52
我这台机  三个 都 能启动,

是给你 看参数,不是出错图

没问题我就放心了。
回复

使用道具 举报

54#
 楼主| 发表于 2021-10-22 18:15:53 | 显示全部楼层
liuzhaoyzz 发表于 2021-10-22 15:48
革命尚未成功,同志仍需努力!

title WIN7X64-SVBUS (/VHD/SX70211.vhd)-kernel ntloader-vhd-RAMOS

3个都死机?那可够奇葩的。
ntloader.zip (40.77 KB, 下载次数: 9)
你没必要每次都弄那么复杂的命令,只要确认能正常启动到bootmgfw.efi就行了。
另外 我说的 "pause" 是在 kernel 命令行里面加。
find --set-root /EFI/grub/ntloader
kernel /EFI/grub/ntloader pause
initrd /EFI/grub/initrd.lz1

点评

用这个版本,结果和222楼的结果一样,也是死机。  详情 回复 发表于 2021-10-22 22:21
回复

使用道具 举报

55#
 楼主| 发表于 2021-10-22 18:18:32 | 显示全部楼层
2011whp 发表于 2021-10-22 17:07
有个 不实用的  另类 vhd(pe.wim 直接 释放到 vhd里 )
——————————————————————— ...

你说的 "启动到winpe" 应该是下面这个,README里面写了。
Load the Registry SYSTEM hive as a volatile hive (WinPE mode):

kernel /ntloader uuid=%?% minint=1

点评

同上楼 vhd map --mem (hd0,0)/buspe.vhd (hd) uuid (hd-1,0) kernel /src/efi/extg4e/ntloader uuid=%?_UUID% file=/buspe.vhd winload=/windows/system32/boot/winload.efi minint=1 initrd /src/efi/ext  详情 回复 发表于 2021-10-22 20:45
回复

使用道具 举报

56#
 楼主| 发表于 2021-10-23 09:46:46 | 显示全部楼层
2011whp 发表于 2021-10-22 20:45
同上楼 vhd   

map --mem (hd0,0)/buspe.vhd (hd)

  1. map --mem (hd0,0)/buspe.vhd (hd)
  2. uuid (hd-1,0)
  3. kernel /src/efi/extg4e/ntloader uuid=%?_UUID% file=/buspe.vhd winload=/windows/system32/boot/winload.efi minint=1
  4. initrd /src/efi/extg4e/initrd.lz1
复制代码


你要启动的是磁盘 (hd-1,0) 里面的 Windows 系统,传递的也是 (hd-1,0) 的 UUID,就别用 file=/xxx.vhd 了。

  1. map --mem (hd0,0)/buspe.vhd (hd)
  2. uuid (hd-1,0)
  3. kernel /src/efi/extg4e/ntloader uuid=%?_UUID% winload=/windows/system32/boot/winload.efi minint=1
  4. initrd /src/efi/extg4e/initrd.lz1
复制代码

点评

去掉 ,也 试过, 也是 0e错误, 只是 提示英文 变了 ,  详情 回复 发表于 2021-10-23 10:28
回复

使用道具 举报

57#
 楼主| 发表于 2021-10-24 13:00:21 | 显示全部楼层
liuzhaoyzz 发表于 2021-10-22 22:21
用这个版本,结果和222楼的结果一样,用我写的那两项菜单,死机。

用下面的命令行测试也是死机。      ...

我对你的电脑很感兴趣。有空的话请测试下这个东西 (不是 ntloader):
用 grub2 启动,且需要 multiboot2 模块。
menuentry "cbemu efi64" {
  set lang=en_US
  terminal_output console
  multiboot2 /kernel.img gfxmode=1024x768
  module2 /tetris.efi efi
}
两个文件可以放在任意位置。注意 "module2 /tetris.efi efi" 后面这个 efi 是参数,不是我写错了。
cbemu.zip (406.04 KB, 下载次数: 5)
启动效果大概应该是这样的:

如果启动有问题的话再试试这个 (如果没问题的话就不用试了):
cbemu_fallback.zip (405.56 KB, 下载次数: 4)

点评

没有问题,两个版本都可以启动俄罗斯方块,可以玩。  详情 回复 发表于 2021-10-24 13:58
回复

使用道具 举报

58#
 楼主| 发表于 2021-10-24 14:07:35 | 显示全部楼层
liuzhaoyzz 发表于 2021-10-24 13:58
没有问题,两个版本都可以启动俄罗斯方块,可以玩。

你的uefi是不是带csm?

点评

带CSM  详情 回复 发表于 2021-10-24 14:52
回复

使用道具 举报

59#
 楼主| 发表于 2021-10-24 14:57:51 | 显示全部楼层

懂了。
看来以后还是不要弄通吃BIOS/UEFI的东西。此问题无法解决。
回复

使用道具 举报

60#
 楼主| 发表于 2021-10-24 16:37:28 | 显示全部楼层
2011whp 发表于 2021-10-24 16:18
ntloader ,   有去钩   检测硬件抽像层   的  参数  吗

2.  vhd内 有 多个分区 时,有指定 分区的 参数 ...
ntloader ,   有去钩   检测硬件抽像层   的  参数  吗

看 README。


2.  vhd内 有 多个分区 时,有指定 分区的 参数  吗

不能。读取/启动 VHD 的是 bootmgfw.efi,我没有找到有这种BCD参数。

点评

这个 贴 的 两个 双分区 vhd 都 能启动 http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=422652&pid=4406284&fromuid=413782 只加了,minint=1 估计会 搜 有 windows目录的 vhd内部分区  详情 回复 发表于 2021-10-24 17:11
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-7 04:09

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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