无忧启动论坛

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

世界上第一个基于primo单驱动+grub2/g4e制作的WIN7 8.1 10UEFI-RAMOS单镜像制作成功

    [复制链接]
1#
发表于 2021-1-29 22:24:46 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-29 22:35 编辑

我觉得,不用map, UUid  是vhd 文件所在分区的 UUID

用户,只是通过UUid   给ntloader 传递一个 正确的 vhd 文件名参数(UUid + 相对路径)

内部怎么工作, wintoflash 研究


回复

使用道具 举报

2#
发表于 2021-1-31 09:45:53 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-31 10:07 编辑

制作了个vhd:三杰LTSB   7GB vhd
     1.  winntsetup做的,挂svbus驱动
      2.  在主系统的bcd  添加 vhd启动项 安装完成

g4e2021-1-28 试验一:能启动
uuid (hd3,2)
kernel /ntloader uuid=%?% file=/winsvbus.vhd
initrd /initrd.lz1

g4e2021-1-28 试验二: 随然蓝屏了,估计是 svbus有问题
map --top (hd3,2)/winsvbus.vhd (hd)
uuid (hd-1,0)
kernel /ntloader uuid=%?%
initrd /initrd.lz1



题外问题:
    1.  这个vhd  用bcd启动时,总得重启一次,第二次不出bcd菜单,直接启动了
     2.  svbus朱玛   用 winntsetup 挂上,有没有安装成功的,(我一般是 dism++)
    3.  ntloader 停不下来,你们是么拍照的,难道是抢拍
    4.  那个 ?变量,是不是上一条命令的 返回结果,如果 UUID 命令后 插一条命令,在kernel前,是不是必然出错
     5.  折腾没动力了,附蓝屏拍照,看是不是 svbus驱动问题,道是出现过bcd菜单,




点评

ntloader 停不下来,你们是么拍照的,难道是抢拍 在菜单里面前年加上debug 3,该暂停的地方加pause语句即可。 那个 ?变量,是不是上一条命令的 返回结果,如果 UUID 命令后 插一条命令,在kernel前,是不是必  详情 回复 发表于 2021-1-31 11:28
回复

使用道具 举报

3#
发表于 2021-1-31 10:12:51 | 显示全部楼层
@wintoflash

chainloader %x%/EFI/grub/ntloader uuid=%?_UUID% initrd=/EFI/grub/initrd.lz1

%?_UUID% 和 %?%  有什么不同  ,前者更通用

意思是:两个出口都可以?(chainloader  和 kernel )

点评

这个我不知道。 都可以。当efi文件启动,要指定initrd的路径,且要保证两者在同一个fat分区。  详情 回复 发表于 2021-1-31 11:10
回复

使用道具 举报

4#
发表于 2021-1-31 11:22:27 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-31 11:28 编辑
liuzhaoyzz 发表于 2021-1-31 11:04
你上面让我测试的,不是ntboot啊,是ntloader啊,语法也不同,我就搞迷糊了,grub2-ntboot远离我 ...

从技术上讲,就是自动化下面的 三个启动项
至于,还支持 g4e的map盘分区,是附加功能

对于  grub205 移植的 ntboot,只能用于 grub205


现在新的  ntloader 是 更通用的,给别的基于grub的引导器用的
  目前能用的:
        1.  g4e
         2.  grub204
        3.  grub205  (ntboot模块 仍然有效)
        4.  将来 出现的引导器

回复

使用道具 举报

5#
发表于 2021-1-31 11:45:28 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-31 15:04 编辑
liuzhaoyzz 发表于 2021-1-31 11:28
ntloader 停不下来,你们是么拍照的,难道是抢拍

在菜单里面前年加上debug 3,该暂停的地方加pause语 ...

试了一通   
  ? 变量,好像是  UUid命令 专用的输出 变量

echo %?_UUID%  什么也不显示,(这个哪里的,与具体电脑有关?)

find /**  | set x=  这个新用法,有效


g4e 的命令行,是忽略大小写的( 我想菜单里,也忽略大小写吧)

点评

%?%获取的是上一个命令的返回结果啊,g4d readme里面有哦  详情 回复 发表于 2021-1-31 11:46
回复

使用道具 举报

6#
发表于 2021-1-31 11:57:21 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-31 12:02 编辑
liuzhaoyzz 发表于 2021-1-31 11:46
%?%获取的是上一个命令的返回结果啊,g4d readme里面有哦

uuid执行之后,结果就到了%?_UUID% ...

echo %?_UUID%

全大写后,果然有效
%?%获取的是上一个命令的返回结果, 我也觉得应该是这样
(不过 g4e好像改过了,目前的作用就是 等效于 %?_UUID% )
回复

使用道具 举报

7#
发表于 2021-2-1 11:40:32 | 显示全部楼层
本帖最后由 2011whp 于 2021-2-1 12:32 编辑
liuzhaoyzz 发表于 2021-2-1 10:20
initrd=/EFI/grub/initrd.lz1的确是传递给kernel的参数,我好奇的是这个参数只有“路径”,并没有“盘符 ...

理论:环井类命令(引导器出口命令)工作原理
    1. 初始化 一些环境
    2. 调入 第一个参数指定的  一个程序到内存
    3. 其余空格分隔的参数:做简单的字符窜转义 组合为一个大字符窜(大字符窜内 仍有空格分隔)
        initrd也是继续添加参数 的意思
    4. 控制权转移到 (本例是 ntloader)

环井命令举例:
   diskpart list disk
   或者 g4e外部命令  /fat mkdir /new

你的关键 误会点:所有参数组成的大字符窜 是 g4e用的
    实际上是 ntloader 用的 (ntloaerr执行时,已出了g4e了),
    ntloader 内部怎么认设备 不是用的g4e设备规范
    所以参数值 怎么写 是ntloader决定的,所以 相对路径是正确的
    (为了 稳定,最好 ntloader 和 initrd.lz1 在一个分区上,程序本身能容错除外)

kernel 转义时,不认双引号(只此一条命令)
http://bbs.wuyou.net/forum.php?m ... &fromuid=413782
回复

使用道具 举报

8#
发表于 2021-2-1 14:00:29 | 显示全部楼层
本帖最后由 2011whp 于 2021-2-1 14:02 编辑
liuzhaoyzz 发表于 2021-2-1 12:36
传递 VHD/WIM/OS 所在分区的 UUID 而不是直接传递包括盘符的完整路径,这个我完全理解。但我说的 ...

如果,如你所说,

那证明  initrd 命令的机制  第一个参数指定的文件是 加载内存 换成 句柄或变量形式(转换参数形式 还在g4e里)
  加到  参数里  (如果,这样,ntloaer  initrd.lz 可任意 放置)

至于 chainloader 肯定是 字符窜 传参数的,所以没必要 加盘符,估计 ntloader能 捕获到 自身是从哪 个盘符(指efi标准分区名) 读入的,用这个盘符的吧,(要做容错的话,只能搜,但搜就会有二义性,结论 就是ntloader initrd.lz同盘符存放最好)
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-20 10:19

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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