无忧启动论坛

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

[已解决] 启动ChromeOS:gptpriority命令

[复制链接]
跳转到指定楼层
1#
发表于 2022-4-21 08:27:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Cherub 于 2022-5-2 14:03 编辑

最近在研究fydeos(ChromeOS衍生系统)的启动配置文件,因为想自己自己生成一个bootx64.efi同时引导别的系统,想看看fydeos这个grub2使用了哪些模块。别的命令和对应的模块都找到了,就是这个“gptpriority”不知道是什么意思,也找不到对应的模块,自己生成的引导程序是没法执行这个命令的,还请大佬解答。



##2022年5月2日该问题已解决,感谢wintoflash大佬提示:
     gptpriority命令是一个在grub2下用于获取GPT分区相关参数的命令,最早是谷歌程序员在开发ChromeOS时所写,用于在引导ChromeOS时自动切换A/B分区。这个命令以模块的形式添加到grub2,并不包含在官方项目内,如果你想把此命令加入自己的grub2中,你需要重新编译项目,以Ubuntu20.04环境为例:

1.搭建环境
  1. sudo -E apt-get -y install build-essential python iasl lzop unifont autopoint autoconf bison flex gettext gcc-mingw-w64
复制代码



2.同步代码
  1. git clone https://git.savannah.gnu.org/git/grub.git
复制代码


3.下载补丁文件Forward-port-gptpriority-command-to-GRUB-2.00.patch置于grub同级目录
Forward-port-gptpriority-command-to-GRUB-2.00.zip (2.8 KB, 下载次数: 9)

4.将gptpriority补丁合并到项目中
  1. cd grub
  2. for p in ../*.patch; do patch -p1 < $p; done
复制代码


5.配置和编译项目(以x86_64架构为例)
  1. ./bootstrap
  2. ./configure --prefix=/opt/grub --with-platform=efi --target=x86_64 --disable-werror
  3. sudo make install
复制代码


6.定制efi启动文件(以启动fydeos为例)
  1. /opt/grub/bin/grub-mkimage -O x86_64-efi -p /EFI/fydeos -o bootx64.efi part_gpt part_msdos normal search loopback fat ext2 linux test gptpriority boot all_video gfxterm
复制代码

2#
发表于 2022-4-21 14:17:20 来自手机 | 只看该作者
本帖最后由 窄口牛 于 2022-4-21 14:19 编辑

确实搞不明白它这个a和b干啥的,每次安装有时候是a,有时候是b。但是直接用它的菜单你的efi可以正常启动的呀。

点评

可以正常启动,但是每次启动都会提示找不到gptpriority这个命令,所以还是想解决,另外那个A和B应该是类似于现在普及在安卓设备上的AB双分区,在每次系统升级时会切换,以备份升级前的内核,当启动有问题时你可以切  详情 回复 发表于 2022-4-21 16:34
回复

使用道具 举报

3#
 楼主| 发表于 2022-4-21 16:34:54 | 只看该作者
窄口牛 发表于 2022-4-21 14:17
确实搞不明白它这个a和b干啥的,每次安装有时候是a,有时候是b。但是直接用它的菜单你的efi可以正常启动的 ...

可以正常启动,但是每次启动都会提示找不到gptpriority这个命令,所以还是想解决,另外那个A和B应该是类似于现在普及在安卓设备上的AB双分区,在每次系统升级时会切换,以备份升级前的内核,当启动有问题时你可以切换另一个选项,平时保持默认就行
回复

使用道具 举报

4#
发表于 2022-4-21 17:03:34 来自手机 | 只看该作者
哦,酱紫,涨姿势。
回复

使用道具 举报

5#
发表于 2022-4-21 21:51:14 | 只看该作者
要不,发封邮件问问官方人员,图里有邮件地址
回复

使用道具 举报

6#
发表于 2022-4-22 18:32:46 | 只看该作者
这玩意的功能就是获取GPT分区表里面某个分区的属性,以便在升级系统的时候区分 A B 分区。
https://chromium.googlesource.co ... 2ac1ffe8a0e7%5E%21/

点评

此前没有Linux编译项目的经验,通过已有教程搭建了环境,成功编译了官方grub2,但是我不知道怎么把gptpriority这个第三方命令加入官方grub2,我尝试把gptpriority.c放入目录"grub/grub-core/commands",但并不会参与  详情 回复 发表于 2022-5-1 10:10
感谢大佬提示,看来得重新编译一下了  详情 回复 发表于 2022-4-26 22:05
回复

使用道具 举报

7#
 楼主| 发表于 2022-4-26 22:05:38 | 只看该作者
wintoflash 发表于 2022-4-22 18:32
这玩意的功能就是获取GPT分区表里面某个分区的属性,以便在升级系统的时候区分 A B 分区。
https://chromi ...

感谢大佬提示,看来得重新编译一下了
回复

使用道具 举报

8#
 楼主| 发表于 2022-5-1 10:10:47 | 只看该作者
wintoflash 发表于 2022-4-22 18:32
这玩意的功能就是获取GPT分区表里面某个分区的属性,以便在升级系统的时候区分 A B 分区。
https://chromi ...

此前没有Linux编译项目的经验,通过已有教程搭建了环境,成功编译了官方grub2,但是我不知道怎么把gptpriority这个第三方命令加入官方grub2,我尝试把gptpriority.c放入目录"grub/grub-core/commands",但并不会参与编译并生成对应模块。

还有我看到似乎有人能从已生成的efi中提取内置的模块,但找不到相关教程,若是能做到这一点,也能解决我的问题

这两个问题还请大佬解答

点评

编辑 grub-core/Makefile.core.def,加上  详情 回复 发表于 2022-5-1 11:11
回复

使用道具 举报

9#
发表于 2022-5-1 11:11:14 | 只看该作者
Cherub 发表于 2022-5-1 10:10
此前没有Linux编译项目的经验,通过已有教程搭建了环境,成功编译了官方grub2,但是我不知道怎么把gptpri ...

编辑 grub-core/Makefile.core.def,加上
  1. module = {
  2.   name = gptpriority;
  3.   common = commands/gptpriority.c;
  4. };
复制代码

点评

已经编译成功,谢谢提示,下载补丁文件放到项目目录所在路径,通过命令: 即可自动将gptpriority添加到项目,实际会修改包括Makefile.core.def在内的好几个文件,最后正常编译  详情 回复 发表于 2022-5-2 13:22
回复

使用道具 举报

10#
 楼主| 发表于 2022-5-2 13:22:15 | 只看该作者
wintoflash 发表于 2022-5-1 11:11
编辑 grub-core/Makefile.core.def,加上

已经编译成功,谢谢提示,下载补丁文件放到项目目录所在路径,通过命令:
  1. for p in ../*.patch; do patch -p1 < $p; done
复制代码

即可自动将gptpriority添加到项目,实际会修改包括Makefile.core.def在内的好几个文件,最后正常编译
回复

使用道具 举报

11#
发表于 2023-10-29 09:39:31 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-25 15:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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