无忧启动论坛

 找回密码
 注册
搜索

请教关于 grub4dos NTBOOT的原理

查看数: 11631 | 评论数: 22 | 收藏 14
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-11-18 19:56

正文摘要:

本帖最后由 wintoflash 于 2019-11-19 10:06 编辑 最近在尝试制作UEFI grub2下类似NTBOOT的功能,遇到了一些问题,请教一下。 NTBOOT.MOD文件夹下 NTBOOT.NT6是一个gz压缩的img, 里面的/BOOT/BCD文件应该是 ...

回复

879792799 发表于 2023-2-18 19:40:10
大神级
kisssky_545 发表于 2023-2-17 17:10:35
11111111111111111111111111111111111111111
cbl 发表于 2020-3-3 12:21:36
学习了
cbl 发表于 2020-3-1 18:06:05
chenall 发表于 2020-1-21 17:29:28
看了一下, BOOTDEV有(0) 和 (0xfd)这两个.

如果不启动PE1,那就可以
wintoflash 发表于 2020-1-21 16:57:06
chenall 发表于 2020-1-21 16:47
这些代码是在哪个文件里面的?我没有找到,还是这个NTBOOT是修改版?

http://b.chenall.net/ntboot.iso
iso根目录下的NTBOOT文件
解压后352行
chenall 发表于 2020-1-21 16:47:20
这些代码是在哪个文件里面的?我没有找到,还是这个NTBOOT是修改版?

点评

http://b.chenall.net/ntboot.iso iso根目录下的NTBOOT文件 解压后352行  详情 回复 发表于 2020-1-21 16:57
wintoflash 发表于 2020-1-21 16:39:52
chenall 发表于 2020-1-21 16:28
这个我也记不清为什么了,可能是为了防止干扰. 中间可能有使用了临时盘.

那我改成
map --unmap=1:0xff
应该没有问题吧
chenall 发表于 2020-1-21 16:28:47
这个我也记不清为什么了,可能是为了防止干扰. 中间可能有使用了临时盘.

点评

那我改成 map --unmap=1:0xff 应该没有问题吧  详情 回复 发表于 2020-1-21 16:39
wintoflash 发表于 2020-1-21 10:20:19
chenall 发表于 2020-1-14 10:16
utf8转unicode印像中grub4dos里面有相关代码的,

使用带中文路径和文件的毕竟是少数, 这个是可以避免的.  ...

再次请教一下老大:
NTBOOT中,最后启动系统,是先把(rd)+1 映射到 (fd0),启动 (fd0)/bootmgr 的,

  1. :BOOT
  2. if exist BOOT && %BOOT%
  3. map --mem (rd)+1 %BOOTDEV%
  4. map --unmap=0xfb,0xfc,0xfe,0xff,0xcd
  5. map --rehook
  6. call :CHECK_FILE %NTLDR%
  7. chainloader %NTLDR%
  8. root %BOOTDEV%
  9. boot
  10. exit
复制代码

map --unmap=0xfb,0xfc,0xfe,0xff,0xcd
请问为什么还要把 0xfb-0xff和0xcd unmap掉?
在reboot.pro上,有人发现,如果之前map一个软盘到0x03,ntboot会失败,是不是跟这个有关系?
http://reboot.pro/topic/22232-a1 ... great-uefi-support/
https://github.com/a1ive/grub2-filemanager/issues/83
chenall 发表于 2020-1-14 10:16:04
utf8转unicode印像中grub4dos里面有相关代码的,

使用带中文路径和文件的毕竟是少数, 这个是可以避免的. 目前没有打算增加这个功能.

点评

再次请教一下老大: NTBOOT中,最后启动系统,是先把(rd)+1 映射到 (fd0),启动 (fd0)/bootmgr 的, map --unmap=0xfb,0xfc,0xfe,0xff,0xcd 请问为什么还要把 0xfb-0xff和0xcd unmap掉? 在reboot.pro上,有人  详情 回复 发表于 2020-1-21 10:20
wintoflash 发表于 2020-1-13 16:42:23
chenall 发表于 2019-11-19 09:51
博客好久没有更新了.
我找了一下还有一个地址.
http://b.chenall.net/ntboot.iso.gz

老大,GRUB4DOS 的 NTBOOT 不支持带中文的路径,比如 winpe中文.wim 。
原因是 wenv 里面的 ascii_unicode 函数不支持将带中文等内容的 utf8 字符串转换成 utf16le 编码的字符串。
https://github.com/chenall/grubu ... g4dext/wenv.c#L1813
而 GRUB2里面的 charset.h 有现成的转码函数 grub_utf8_to_utf16 可以借鉴(抄袭)
https://github.com/a1ive/grub/bl ... grub/charset.h#L123
我尝试修改了一下,因为不太熟悉 GRUB4DOS 结果不成功,老大看看要不要加上这个功能?



wintoflash 发表于 2019-11-21 16:22:46
求道者 发表于 2019-11-21 16:15
ntboot是否只是bootmgr的封包?
而不是bootmgr重新实现?
能在efi-ia32下启动64位pe吗?

你需要把boot-shim移植到x86下
https://github.com/imbushuo/boot-shim
求道者 发表于 2019-11-21 16:15:20
ntboot是否只是bootmgr的封包?
而不是bootmgr重新实现?
能在efi-ia32下启动64位pe吗?

点评

你需要把boot-shim移植到x86下 https://github.com/imbushuo/boot-shim  详情 回复 发表于 2019-11-21 16:22
chenall 发表于 2019-11-20 10:48:26
指南针 发表于 2019-11-20 09:49
请问,内置的bootmgr是不是也做了某些特殊修改?如果对它进行更新,是否有其他影响?比如换成win8的bootm ...

bootmgr是原版的
指南针 发表于 2019-11-20 09:49:30
chenall 发表于 2019-11-19 09:37
您的理解是对的

这个BCD确实是是使用BCDEDIT编辑后再使用HEX工具修改过的,

请问,内置的bootmgr是不是也做了某些特殊修改?如果对它进行更新,是否有其他影响?比如换成win8的bootmgr

点评

bootmgr是原版的  详情 回复 发表于 2019-11-20 10:48
gnuxwy 发表于 2019-11-19 22:29:45
W大牛比,这氏要把 grub4dos 的功能都移去grub2 啊,能做成功肯定氏大好事耶。。。
江南一根葱 发表于 2019-11-19 12:47:27
kkkssc 发表于 2019-11-19 12:45
关键是,搞那么复杂干吗啊,可以用bootmgr启动grub,也可以用grub启动bootmgr,启动菜单你可以放在munulst ...

机器人id?,没看帖就……
chenall 发表于 2019-11-19 09:51:25
博客好久没有更新了.
我找了一下还有一个地址.
http://b.chenall.net/ntboot.iso.gz

点评

老大,GRUB4DOS 的 NTBOOT 不支持带中文的路径,比如 winpe中文.wim 。 原因是 wenv 里面的 ascii_unicode 函数不支持将带中文等内容的 utf8 字符串转换成 utf16le 编码的字符串。 https://github.com/chenall/gru  详情 回复 发表于 2020-1-13 16:42
wintoflash 发表于 2019-11-19 09:44:42
chenall 发表于 2019-11-19 09:37
您的理解是对的

这个BCD确实是是使用BCDEDIT编辑后再使用HEX工具修改过的,

谢谢大佬。
请问您的博客上的NTBOOT是不是下载链接坏了?
http://chenall.net/post/ntboot/


chenall 发表于 2019-11-19 09:37:57
本帖最后由 chenall 于 2019-11-19 09:45 编辑

您的理解是对的

这个BCD确实是是使用BCDEDIT编辑后再使用HEX工具修改过的,
要修改了几处方便定位和修改的地方,然后文件路径是预留了空间,印像中好像是256的样子.

NTBOOT.NT6是FAT软盘镜像,7Z看到的显示为NTFS估计是识别错误.

EDIT: 要移稙到GRUB2理论上应该没有什么问题, 有了你的map之后再写一个模块来完成以上的操作应该效率会更高,目前使用的是GRUB4DOS的脚本效率会比较低,而且相对比较麻烦.
因为需要改写里面的内容, 需要map后的磁盘可写,如果能够先在内存中修改好再map就可以只读了,另外之前也没有考虑到EFI的问题.

点评

老大,你还记得怎么用bcdedit生成特殊bcd的吗? 我先弄了一个普通的启动wim的bcd,文件名填了256个0,然后用hex工具找到路径,添加上了方便搜索的标记(共两处),GPT磁盘GUID,分区 GUID 也是如此,结果bcd没法启动。  详情 回复 发表于 2020-6-27 19:56
请问,内置的bootmgr是不是也做了某些特殊修改?如果对它进行更新,是否有其他影响?比如换成win8的bootmgr  详情 回复 发表于 2019-11-20 09:49
谢谢大佬。 请问您的博客上的NTBOOT是不是下载链接坏了? http://chenall.net/post/ntboot/  详情 回复 发表于 2019-11-19 09:44
邪恶海盗 发表于 2019-11-18 23:42:11
不懂,帮顶下...

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

闽公网安备 35020302032614号

GMT+8, 2024-11-30 11:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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