无忧启动论坛

标题: 使用高版本 GCC 编译 GRUB4DOS [打印本页]

作者: wintoflash    时间: 2023-2-23 11:39
标题: 使用高版本 GCC 编译 GRUB4DOS
本帖最后由 wintoflash 于 2023-2-23 22:36 编辑

【仅供测试,请勿用于生产环境】
Github 上一位埃及的朋友提交了让 GRUB4DOS 在高版本 GCC 下也可以成功编译的 PR,
目前我测试 GCC 7.5, GCC 8.4, GCC 9.5, GCC 11.3 都能正常编译。
grub4dos-0.4.6a-2023-02-23-gcc-11.3.7z (311.17 KB, 下载次数: 88)
grub4dos-0.4.6a-2023-02-23-gcc-9.5.7z (311.06 KB, 下载次数: 34)
grub4dos-0.4.6a-2023-02-23-gcc-8.4.7z (309.7 KB, 下载次数: 34)
grub4dos-0.4.6a-2023-02-23-gcc-7.5.7z (309.97 KB, 下载次数: 36)
GCC 10.4 要稍微改一下才能通过编译。
grub4dos-0.4.6a-2023-02-23-gcc-10.4.7z (310.86 KB, 下载次数: 40)
有空的话大家可以测试一下,看看各项功能是否都正常。
https://github.com/chenall/grub4dos/pull/395
@chenall @求道者
作者: yyz2191958    时间: 2023-2-23 12:00
收藏先 谢谢
作者: YJZM    时间: 2023-2-23 12:18
感谢分享
作者: 精灵尾巴    时间: 2023-2-23 13:24
感谢分享
作者: nathan6498    时间: 2023-2-23 14:07
感谢分享
作者: a123456789z    时间: 2023-2-23 14:49
谢谢分享。
作者: wintoflash    时间: 2023-2-23 15:03
我寻思这个帖子也不是资源分享啊,是请人来找茬的。回复“谢谢分享”的都是机器人?

作者: 2011yaya2007777    时间: 2023-2-23 17:35
测试了一下11.3,启动没有进菜单,到了命令行。
看样子,是变量尺寸不对,比如
(hd0,1) 显示错误
MEM 值显示错误

捕获 (2).jpg (121.89 KB, 下载次数: 128)

捕获 (2).jpg

作者: 879792799    时间: 2023-2-23 19:05
谢谢分享 我也试试
作者: 2011yaya2007777    时间: 2023-2-23 20:16
本帖最后由 2011yaya2007777 于 2023-2-23 20:18 编辑

其余版本问题相同:过了内置菜单,进不了外置菜单,光标一直闪烁。
菜单内容:
timeout 10
color black/cyan yellow/cyan

title  commandline
commandline

另外,今天上传官网的补丁也编译不过,卡在那里了。

作者: wintoflash    时间: 2023-2-23 20:22
2011yaya2007777 发表于 2023-2-23 20:16
其余版本问题相同:过了内置菜单,进不了外置菜单,光标一直闪烁。
菜单内容:
timeout 10

其余版本问题相同:过了内置菜单,进不了外置菜单,光标一直闪烁

是的,有很多地方要改的,慢慢研究。总是守着 GCC 4.x 也不是个办法。
作者: wintoflash    时间: 2023-2-23 20:29
2011yaya2007777 发表于 2023-2-23 20:16
其余版本问题相同:过了内置菜单,进不了外置菜单,光标一直闪烁。
菜单内容:
timeout 10

另外,今天上传官网的补丁也编译不过,卡在那里了。

我重新执行了下编译任务,现在可以了:https://github.com/chenall/grub4dos/releases/tag/0.4.6a

@chenall: 构建过程中有这个警告:
Warning: The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/20 ... et-output-commands/

作者: Allreal    时间: 2023-2-23 22:33
wintoflash 发表于 2023-2-23 15:03
我寻思这个帖子也不是资源分享啊,是请人来找茬的。回复“谢谢分享”的都是机器人?

也别太苛求了。啊哈哈,向我这样水平的外行不懂的人很多,以为就是分享了新版。当成成品来用了。
作者: wintoflash    时间: 2023-2-23 22:37
Allreal 发表于 2023-2-23 22:33
也别太苛求了。啊哈哈,向我这样水平的外行不懂的人很多,以为就是分享了新版。当成成品来用了。

那我加上明显的警告。万一用于生产环境那就麻烦了。
作者: Allreal    时间: 2023-2-23 22:46
wintoflash 发表于 2023-2-23 22:37
那我加上明显的警告。万一用于生产环境那就麻烦了。

嗯嗯,楼主严谨。真不错。
作者: 求道者    时间: 2023-2-23 23:07
最近在弄ARM板,路由器OPENWRT移植,coreboot移植。
https://ticket.coreboot.org/issues/462
后者一直卡在内存认不完。
COREBOOT下我的主板只能识别一半的内存。
作者: wintoflash    时间: 2023-2-23 23:22
求道者 发表于 2023-2-23 23:07
最近在弄ARM板,路由器OPENWRT移植,coreboot移植。
https://ticket.coreboot.org/issues/462
后者一直卡 ...

头一次听说arm上用coreboot的。为啥不用uboot或者直接上uefi?
作者: 2011yaya2007777    时间: 2023-2-24 08:16
依葫芦画瓢,把UEFI的release.yml修改了一下,新版发布了。

作者: 求道者    时间: 2023-2-24 15:53
本帖最后由 求道者 于 2023-2-24 15:55 编辑
wintoflash 发表于 2023-2-23 23:22
头一次听说arm上用coreboot的。为啥不用uboot或者直接上uefi?

B75上搞coreboot,rk3399的uboot设备树都还没完全弄好,驱动就别提了。
type-c的驱动都没弄好。
我确实想让arm上coreboot,因为coreboot能够用grub2负载。
作者: 求道者    时间: 2023-2-24 15:57
wintoflash 发表于 2023-2-23 22:37
那我加上明显的警告。万一用于生产环境那就麻烦了。

没太大所谓,不搞费BIOS和硬件就是胜利✌
作者: 2011yaya2007777    时间: 2023-2-24 18:42
gcc 8 以上是不是默认64位?
作者: wintoflash    时间: 2023-2-24 19:36
2011yaya2007777 发表于 2023-2-24 18:42
gcc 8 以上是不是默认64位?

没加-m32吗?应该有吧。
作者: 2011yaya2007777    时间: 2023-2-24 20:16
g4d没有加。32位g4e加了。
作者: 孤山飞雪    时间: 2023-2-25 14:17

作者: wintoflash    时间: 2023-2-26 11:28
本帖最后由 wintoflash 于 2023-2-26 11:31 编辑
2011yaya2007777 发表于 2023-2-24 20:16
g4d没有加。32位g4e加了。

grub4dos-0.4.6a-2023-02-26-gcc10.4.7z (312.18 KB, 下载次数: 8)
grub4dos-0.4.6a-2023-02-26-gcc11.3.7z (312.38 KB, 下载次数: 5)
试试,我这里 GCC 10.4 的看起来没啥毛病, GCC 11.3 的有问题。


作者: 遨游的风    时间: 2023-2-27 01:55
感谢分享
作者: 遨游的风    时间: 2023-2-27 01:55
学习一下
作者: 遨游的风    时间: 2023-2-27 10:03
在Grub下应该怎样可以执行对指定VHD文件的差分?
作者: 遨游的风    时间: 2023-2-27 10:04
感谢分享
作者: 2011yaya2007777    时间: 2023-2-27 11:01
10.4版本正常。
11.3版本同前。
作者: ZMLoveLH    时间: 2023-3-6 18:23
看看 wintoflash 大神分享的帖子,学习一下软件小知识
作者: caii    时间: 2023-3-31 03:35
感谢分享

作者: liuzhaoyzz    时间: 2023-3-31 13:54
本帖最后由 liuzhaoyzz 于 2023-3-31 14:08 编辑

支持wintoflash工作!虚拟机测试启动PE如下:
grub4dos-0.4.6a-2023-02-23-gcc-7.5,√
grub4dos-0.4.6a-2023-02-23-gcc-8.4,√
grub4dos-0.4.6a-2023-02-23-gcc-9.5,√
grub4dos-0.4.6a-2023-02-23-gcc-10.4,√
grub4dos-0.4.6a-2023-02-23-gcc-11.3,×无法启动PE。

之前grub4dos许多年都是在ubuntu14.04环境下gcc4.8这种上古编译环境下编译的,现在是不是可以与时俱进用新的ubuntu环境下编译了,这样的话g4d/g4e/grub2都可以在同一个ubuntu环境下编译了。太棒了!厉害!

看了下ubuntu20.10 64位版本,gcc -v gcc版本:10.2的。


title WINPE (WePE64_V2.2.iso)
calc *0x8278 > nul ;; set g4dver=%@retval%
if %@UEFI%==64  && echo g4e%g4dver% ! echo g4d%g4dver%
find --ignore-floppies --ignore-cd --set-root /boot/imgs/WePE64_V2.2.iso
map --mem --top /boot/imgs/WePE64_V2.2.iso (0xff)
map --e820cycles=-1
map --hook
chainloader (0xff)
#pause

linux-2023-03-31-13-53-35.png (4.29 KB, 下载次数: 138)

linux-2023-03-31-13-53-35.png

作者: wintoflash    时间: 2023-4-1 09:31
liuzhaoyzz 发表于 2023-3-31 13:54
支持wintoflash工作!虚拟机测试启动PE如下:
grub4dos-0.4.6a-2023-02-23-gcc-7.5,√
grub4dos-0.4.6a ...
现在是不是可以与时俱进用新的ubuntu环境下编译了

https://github.com/chenall/grub4dos/pull/395
你打上这里面的补丁之后,是可以直接在 Ubuntu 22.04 上编译的。
不过 G4E 的要稍微改下,而且编译出来的有点问题。
作者: 2011yaya2007777    时间: 2023-5-20 11:17
在 ubuntu-20.4、gcc-7.5 环境下编译的  GRUB4DOS for UEFI。
请测试。

BOOTX64_gcc7.5.rar

144.16 KB, 下载次数: 24, 下载积分: 无忧币 -2


作者: 2011yaya2007777    时间: 2023-5-20 13:05
在 ubuntu-20.4、gcc-7.5 环境下编译  GRUB4DOS  ,没有通过。
提示:
checking whether objcopy works for absolute addresses... no
configure: error: GRUB requires a working absolute objcopy; upgrade your binutils

似乎是 binutils 版本低。
xxx-virtual-machine:~/grub4dos$ sudo apt-get install binutils
[sudo] fjy 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树      
正在读取状态信息... 完成      
binutils 已经是最新版 (2.34-6ubuntu1.4)。
binutils 已设置为手动安装。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 1 个软件包未被升级。


再执行
xxx-virtual-machine:~/grub4dos$ sh ./build make 2>&1|tee build.log
仍然是:
configure: error: GRUB requires a working absolute objcopy; upgrade your binutils

奇怪,你们都能编译通过。
作者: wintoflash    时间: 2023-5-20 13:10
2011yaya2007777 发表于 2023-5-20 13:05
在 ubuntu-20.4、gcc-7.5 环境下编译  GRUB4DOS  ,没有通过。
提示:
checking whether objcopy works fo ...

  1. diff --git acinclude.m4 acinclude.m4
  2. index d508ad8..be7edfa 100644
  3. --- acinclude.m4
  4. +++ acinclude.m4
  5. @@ -61,7 +61,7 @@ for link_addr in 2000 8000 7C00; do
  6.    else
  7.      AC_MSG_ERROR([${CC-cc} cannot link at address $link_addr])
  8.    fi
  9. -  if AC_TRY_COMMAND([${OBJCOPY-objcopy} -O binary conftest.exec conftest]); then :
  10. +  if AC_TRY_COMMAND([${OBJCOPY-objcopy} --only-section=.text -O binary conftest.exec conftest]); then :
  11.    else
  12.      AC_MSG_ERROR([${OBJCOPY-objcopy} cannot create binary files])
  13.    fi
复制代码

作者: ksafei    时间: 2023-5-20 13:50
2011yaya2007777 发表于 2023-5-20 11:17
在 ubuntu-20.4、gcc-7.5 环境下编译的  GRUB4DOS for UEFI。
请测试。

测试反馈:
  为便于在ventoy合盘中使用,将grub4打包成ISO镜像格式由ventoy引导启动,主要使用RUN模块引导

  RUN配置如图:
  

  1.0520版启动正常,在使用RUN引导WIM镜像PE时报错000000e
   

  2.0507测试版报错如上图

  3.0329版无法正常启动到菜单界面,桌面左上角显示一条白线卡死........
  

  4.0319版启动引导均正常


作者: liuzhaoyzz    时间: 2023-5-20 14:23
本帖最后由 liuzhaoyzz 于 2023-5-21 04:56 编辑
2011yaya2007777 发表于 2023-5-20 11:17
在 ubuntu-20.4、gcc-7.5 环境下编译的  GRUB4DOS for UEFI。
请测试。

这个版本跟之前2023-05-07版本测试结果相同。绝大多数linux发行版,PE都可以启动。证明ubuntu20.4环境下编译很成功啊!
仍然有以下两个发现不能启动,在github.com国外网友反馈的一样。https://download.acronis.com/AcronisTrueImage2021.iso
title /linux1/AcronisTrueImage/AcronisTrueImage2021_39287.iso
debug 3
find --ignore-floppies --ignore-cd --set-root /linux1/AcronisTrueImage/AcronisTrueImage2021_39287.iso
map --mem --top /linux1/AcronisTrueImage/AcronisTrueImage2021_39287.iso (0xff)
#map --hook
#map --e820cycles=-1
chainloader (0xff)
pause





Debian 所有版本下载地址
http://cdimage.debian.org/cdimage/archive/

Debian 7 iso 系统下载地址
http://cdimage.debian.org/cdimag ... 1.0-amd64-DVD-1.iso

这个debian7,wintoflash说是EFI支持不全,可是grub2UEFI可以启动,Failed to load virtual disk image.80000000000003,好像不单单是UEFI问题啊?请yaya确认下。
title /linux1/debian/debian-7.11.0-amd64-DVD-1.iso
debug 3
find --ignore-floppies --ignore-cd --set-root /linux1/debian/debian-7.11.0-amd64-DVD-1.iso
map /linux1/debian/debian-7.11.0-amd64-DVD-1.iso (hd32)
map --hook
kernel (hd32)/install.amd/gtk/vmlinuz boot=install.amd findiso=/linux1/debian/debian-7.11.0-amd64-DVD-1.iso components locales=zh_CN.UTF-8 locale=zh_CN.UTF-8 timezone=Asia/Shanghai localtime=Asia/Shanghai
initrd (hd32)/install.amd/gtk/initrd.gz




以上两个linux衍生版,用grub2_UEFI启动都没有问题。



Ubuntu64-2023-05-20-14-22-46.png (3.87 KB, 下载次数: 132)

Ubuntu64-2023-05-20-14-22-46.png

作者: 2011yaya2007777    时间: 2023-5-20 14:28
@wintoflash  老外三个文件的补丁我已经打上了。
作者: 2011yaya2007777    时间: 2023-5-20 14:44
@liuzhaoyzz  AcronisTrueImage2021_39287.iso看截图似乎没有问题,不知怎么boot出了问题。  debian-7.11.0-amd64-DVD-1.iso 内核版本20a,太低。以前版本低于20b的,打印错误信息后就退出了。现在改为使用loader2协议启动,估计启动不了。你说的GRUB2可以启动,W超级班主说是使用32位什么启动的,过于复杂,不想引入G4D。
作者: 2011yaya2007777    时间: 2023-5-20 14:57
@wintoflash  使用gcc9.5编译G4E,有地址对齐的问题,比如结构里面的变量'xxx'使用'&xxx'作为地址引用。是2?4?8?对齐,还没有测试。地方太多,挺麻烦的。也不知道不理会他如何。
作者: wintoflash    时间: 2023-5-20 17:12
2011yaya2007777 发表于 2023-5-20 14:57
@wintoflash  使用gcc9.5编译G4E,有地址对齐的问题,比如结构里面的变量'xxx'使用'&xxx'作为地址引用。是2 ...

记得结构是按里面最大的成员类型大小来对齐的。
你可以用 __attribute__((packed, aligned(X))) 来指定按多少字节对齐,比如
  1. struct {
  2. ...
  3. }__attribute__((packed, aligned(4)))
复制代码

就是按4字节对齐。
  1. struct {
  2. ...
  3. } __attribute__ ((packed))
复制代码

就是按实际大小,紧凑排列。
如果结构体用了 __attribute__ ((packed 这种属性,在高版本 GCC 上取结构体成员的地址就会报警,比如
  1. struct aaa {
  2.   int a;
  3. } __attribute__ ((packed));

  4. int tmp = 2;
  5. struct aaa test;
  6. test.a = 1; // OK
  7. memcpy(&test.a, &tmp, sizeof(int)); // GCC 报警 taking address of packed member XXX may result in an unaligned pointer value
复制代码

作者: wintoflash    时间: 2023-5-20 17:17
本帖最后由 wintoflash 于 2023-5-20 17:18 编辑
liuzhaoyzz 发表于 2023-5-20 14:23
这个版本根之前2023-05-07版本测试结果相同。绝大多数linux发行版,PE都可以启动。证明ubuntu20.4环境下 ...
这个debian7,wintoflash说是EFI支持不全,可是grub2UEFI可以启动,Failed to load virtual disk image.80000000000003,好像不单单是UEFI问题啊?请yaya确认下。

Debian 7 是 10 年前的老古董了。那个时候 Linux 内核对 UEFI 的支持很差。
可是grub2UEFI可以启动

说明不了任何问题。linux 内核就算本身不支持 UEFI,也能被 GRUB2 启动。它根本就不鸟 UEFI 这一套。这一点我说过很多次了。

作者: liuzhaoyzz    时间: 2023-5-20 17:29
本帖最后由 liuzhaoyzz 于 2023-5-20 17:33 编辑
2011yaya2007777 发表于 2023-5-20 14:44
@liuzhaoyzz  AcronisTrueImage2021_39287.iso看截图似乎没有问题,不知怎么boot出了问题。  debian-7.11.0 ...

你们的那段讨论,我没看懂。现在你发的这个版本,全部是loadfile2?还有没有handover协议?我看github上面讨论还有个参数--handover和--loadfile2什么的参数?现在还有没有呢?我找不到那个帖子了。那个破github.com,很难登录上去,FQ也麻烦。

wintoflash说的32位的boot protocol协议,实现起来太麻烦。g4e还是不用考虑了,性价比不高,就算了,这个取舍是对的,支持。搞好handover/loadfile2,支持比较近的发行版,就行了。







作者: liuzhaoyzz    时间: 2023-5-20 17:39
wintoflash 发表于 2023-5-20 17:17
Debian 7 是 10 年前的老古董了。那个时候 Linux 内核对 UEFI 的支持很差。

说明不了任何问题。linu ...
linux 内核就算本身不支持 UEFI,也能被 GRUB2 启动。它根本就不鸟 UEFI 这一套。这一点我说过很多次了。


我也发现是这样子哦。

你说了很多次?我真心没注意到。
作者: 2011yaya2007777    时间: 2023-5-20 17:55
你们的那段讨论,我没看懂。现在你发的这个版本,全部是loadfile2?还有没有handover协议?我看github上面讨论还有个参数--handover和--loadfile2什么的参数?现在还有没有呢?我找不到那个帖子了。那个破github.com,很难登录上去,FQ也麻烦。

现在的逻辑是:支持handover协议,就按handover协议,否则按loadfile2。
增加两个参数是强制按指定的协议。
作者: 2011yaya2007777    时间: 2023-5-20 18:01
怪事真多。现在在efi环境使用gcc9.4,或者在bios环境使用gcc7.5/gcc9.4,都是提示:
configure: error: GRUB requires a working absolute objcopy; upgrade your binutils
不知道该如何了......
作者: 2011yaya2007777    时间: 2023-5-20 19:12
使用 gcc9.4 编译 bios 及 efi 已经成功。
但是仍然有问题待处理。
作者: wintoflash    时间: 2023-5-20 19:15
bios那边要不要直接合并埃及老哥的补丁?
作者: 2011yaya2007777    时间: 2023-5-20 19:44
可以合并吧。这些补丁是不是要分别打在bios及efi?
作者: wytbbs    时间: 2023-5-20 22:51
先测试下谢谢
作者: 2011yaya2007777    时间: 2023-5-25 15:36
在 ubuntu-22.04、gcc-11.3 环境下编译的  GRUB4DOS。
请测试。

grldr.rar

162.34 KB, 下载次数: 22, 下载积分: 无忧币 -2


作者: 2011yaya2007777    时间: 2023-5-25 16:35
W超级版主:
现在遇到一个问题,请帮忙。
以前在 windows7_32 环境,使用 chenall 的 grub4dos_dev 编译。
使用 git clone git@github.com:chenall/grub4dos.git 命令下载源码。编译后可以推送。
现在使用 ubuntu22.04 环境编译,当使用 git clone git@github.com:chenall/grub4dos.git 命令下载源码时,提示
正克隆到 'grub4dos'...
git@github.com: Permission denied (publickey).
fatal: 无法读取远程仓库。
请确认您有正确的访问权限并且仓库存在。

不能下载源码。当然可以使用 git clone --depth=1 https://github.com/chenall/grub4dos.git 下载。估计没有权限是不能推送的。

可以帮忙解决吗?
如果可以,请告诉的详细一些。
或者在消息里回复。
作者: wintoflash    时间: 2023-5-25 18:58
2011yaya2007777 发表于 2023-5-25 16:35
W超级版主:
现在遇到一个问题,请帮忙。
以前在 windows7_32 环境,使用 chenall 的 grub4dos_dev 编译 ...

你添加SSH key了吗?
https://docs.github.com/en/authe ... r-existing-ssh-keys
https://docs.github.com/en/authe ... your-ssh-connection
作者: liuzhaoyzz    时间: 2023-5-25 19:23
2011yaya2007777 发表于 2023-5-25 15:36
在 ubuntu-22.04、gcc-11.3 环境下编译的  GRUB4DOS。
请测试。

我测试了手头的PE和linux,没有发现问题。

挺好的。
作者: 2011yaya2007777    时间: 2023-5-26 10:52
你添加SSH key了吗?

卡在“向您的帐户添加新的SSH密钥”
1. clip < ~/.ssh/id_ed25519.pub  不起作用
如何使用文本打开 “/home/xxx/.ssh/id_ed25519”,提取密钥?
2. 提示:任何页面的右上角,单击您的个人资料照片,然后单击“设置”
这个“任何页面”指什么,我如何进入?

作者: wintoflash    时间: 2023-5-26 11:18
2011yaya2007777 发表于 2023-5-26 10:52
卡在“向您的帐户添加新的SSH密钥”
1. clip < ~/.ssh/id_ed25519.pub  不起作用
如何使用文本打开 “/ ...
如何使用文本打开 “/home/xxx/.ssh/id_ed25519”,提取密钥?
  1. cat ~/.ssh/id_ed25519.pub
复制代码

然后手动复制即可。
提示:任何页面的右上角,单击您的个人资料照片,然后单击“设置”

就是 GitHub 网页 右上角。


作者: 2011yaya2007777    时间: 2023-5-26 15:13
然后手动复制即可。

多谢 wintoflash 超级版主,成功了!
作者: liuzhaoyzz    时间: 2023-5-27 20:16
本帖最后由 liuzhaoyzz 于 2023-5-27 21:52 编辑
2011yaya2007777 发表于 2023-5-25 15:36
在 ubuntu-22.04、gcc-11.3 环境下编译的  GRUB4DOS。
请测试。

BOOTX64_gcc7.5-2023-05-20版本,无法启动pentoo
pentoo下载地址:https://www.pentoo.ch/isos/
pentoo,用idm或者motrix可以全速下载,我记不清我的idm在哪里下载的了,大概是这个:IDM破解版下载-IDM(优秀下载工具)v6.40.1 完美破解版-ucbug软件站https://www.ucbug.com/soft/26392.html
https://www.pentoo.ch/isos/


#grub4dos_BIOS可以启动,grub4dos_UEFI无法启动
title /linux2/pentoo/pentoo-amd64-hardened-2023.0_p20230526.iso
find --ignore-floppies --ignore-cd --set-root /linux2/pentoo/pentoo-amd64-hardened-2023.0_p20230526.iso
map /linux2/pentoo/pentoo-amd64-hardened-2023.0_p20230526.iso (hd32)
map --hook
kernel (hd32)/boot/pentoo isoboot=/linux2/pentoo/pentoo-amd64-hardened-2023.0_p20230526.iso init=/linuxrc nox nodhcp secureconsole overlayfs max_loop=256 dokeymap video=uvesafb:mtrr:3,ywrap,1024x768-16 console=tty0 net.ifnames=0 scsi_mod.use_blk_mq=1 ipv6.autoconf=0 usbcore.usbfs_memory_mb=0 looptype=squashfs loop=/image.squashfs cdroot verify
initrd (hd32)/boot/pentoo.igz


#grub2_BIOS及grub2_UEFI均可启动
menuentry "/linux2/pentoo/pentoo-amd64-hardened-2023.0_p20230526.iso" "/linux2/pentoo/pentoo-amd64-hardened-2023.0_p20230526.iso" {
set gfxpayload=keep
search --no-floppy --set --file $2
loopback loop $2
linux (loop)/boot/pentoo isoboot=/linux2/pentoo/pentoo-amd64-hardened-2023.0_p20230526.iso init=/linuxrc nox nodhcp secureconsole overlayfs max_loop=256 dokeymap video=uvesafb:mtrr:3,ywrap,1024x768-16 console=tty0 net.ifnames=0 scsi_mod.use_blk_mq=1 ipv6.autoconf=0 usbcore.usbfs_memory_mb=0 looptype=squashfs loop=/image.squashfs cdroot verify
initrd (loop)/boot/pentoo.igz
}


第一次进系统,用户名pentoo,密码自己输入。
uname -a,linux kernel 6.3.3,这应该是非常新的linux内核了。


对于g4e启动linux,我的意思是:
1、是否内核过旧,太老的内核没必要支持了,随它去吧。g4e只要支持比较新的内核即可。
2、是否是linux启动参数有问题,并非是g4e本身的问题,如果是linux发行版启动参数的问题,有请大家帮忙指导。
3、如果以上两条都不是,再看下是否是g4e本身的问题。











作者: 2011yaya2007777    时间: 2023-5-27 20:32
debug=3,看看反馈信息。
作者: liuzhaoyzz    时间: 2023-5-27 21:10
2011yaya2007777 发表于 2023-5-27 20:32
debug=3,看看反馈信息。

附图1就是debug 3的截图呀?

作者: 2011yaya2007777    时间: 2023-5-27 21:21
信号不好,刚才没有图。看反馈信息,没有问题。可能是linux参数错误。要不试一试强制loader2协议启动。
作者: liuzhaoyzz    时间: 2023-5-27 21:51
本帖最后由 liuzhaoyzz 于 2023-5-27 21:56 编辑
2011yaya2007777 发表于 2023-5-27 21:21
信号不好,刚才没有图。看反馈信息,没有问题。可能是linux参数错误。要不试一试强制loader2协议启动。

title /linux2/pentoo/pentoo-amd64-hardened-2023.0_p20230526.iso
debug 3
find --ignore-floppies --ignore-cd --set-root /linux2/pentoo/pentoo-amd64-hardened-2023.0_p20230526.iso
map /linux2/pentoo/pentoo-amd64-hardened-2023.0_p20230526.iso (hd32)
map --hook
kernel --loadfile2 (hd32)/boot/pentoo isoboot=/linux2/pentoo/pentoo-amd64-hardened-2023.0_p20230526.iso init=/linuxrc nox nodhcp secureconsole overlayfs max_loop=256 dokeymap video=uvesafb:mtrr:3,ywrap,1024x768-16 console=tty0 net.ifnames=0 scsi_mod.use_blk_mq=1 ipv6.autoconf=0 usbcore.usbfs_memory_mb=0 looptype=squashfs loop=/image.squashfs cdroot verify
initrd (hd32)/boot/pentoo.igz
pause

加了--loadfile2参数也不行啊。
想请问下,上面的截图里面,loop=\image.squashfs,好像是不太对啊?不应该是loop=/image.squashfs的吗?左斜杠才对吧?
我的菜单里面都是左斜杠,怎么截图里面出来的是右斜杠啊?有无影响呢?


loadfile2协议2.png (13.85 KB, 下载次数: 135)

loadfile2协议2.png

作者: 2011yaya2007777    时间: 2023-5-28 17:49
使用 gcc11.3 编译 g4eext,会在文件头部增加 16 字节:
00000000   04 00 00 00 10 00 00 00  05 00 00 00 47 4E 55 00            GNU
00000016   02 00 00 C0 04 00 00 00  03 00 00 00 00 00 00 00     ?     
这影响外置命令执行。

1. 编译时增加什么参数,避免这 16 字节。
2. 生成外部命令后使用脚本删除这 16 字节。

Makefile 文件内容如下:
ifeq ($(CC),cc)
     CC := gcc
endif
OBJCOPY := objcopy
RM      := rm
MV      := mv
MKDIR   := mkdir

DATE = $(shell date -u +%Y-%m-%d)

GCCVERSIONGTEQ5 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 5)

CFLAGS := -Wl,--build-id=none -m64 -mno-sse -nostdlib \
          -fno-zero-initialized-in-bss -fno-function-cse \
          -fshort-wchar -fno-jump-tables -Wl,-N

ifeq "$(GCCVERSIONGTEQ5)" "1"
        CFLAGS += -no-pie
else
        CFLAGS += -fPIE
endif

OBJECTS := $(patsubst %.c,%.o,$(wildcard *.c)) fat/fat.o
MODULES := $(patsubst %.c,%.mod,$(wildcard *.c)) fat/fat.mod

.PHONY: all
all: prepare $(MODULES)
        zip -9 -j ../g4eext-$(DATE).zip bin/*

%.o: %.c
        $(CC) $(CFLAGS) -Iinclude/ $< -o $@

%.mod: %.o
        $(OBJCOPY) -O binary $< $@
#        $(MV) $@ bin/$$(basename -s .mod $@)
        $(MV) $@ bin/$$(basename $@ .mod)

.PHONY: prepare
prepare:
        $(MKDIR) -p bin

.PHONY: clean
clean:
        $(RM) -f *.o *.mod bin/*
作者: wintoflash    时间: 2023-5-29 09:18
2011yaya2007777 发表于 2023-5-28 17:49
使用 gcc11.3 编译 g4eext,会在文件头部增加 16 字节:
00000000   04 00 00 00 10 00 00 00  05 00 00 0 ...

用 dd ?
  1. dd if=$< of=$@ bs=1 skip=16
复制代码


作者: 2011yaya2007777    时间: 2023-5-29 21:29
本帖最后由 2011yaya2007777 于 2023-5-30 05:00 编辑
用 dd ?

终于使用dd搞定了。各种因素综合考虑,比预想的复杂一些。

$< 是当前 .o 文件,$@ 是当前 .mod 文件。
作者: 2011yaya2007777    时间: 2023-5-30 16:53
奇怪了,W超版你可以使用gcc各版本编译成功grldr,而我只能使用gcc-11.3编译成。使用其他版本编译,错误提示没有_start,然后退出。
作者: whatigo486    时间: 2023-5-30 17:28
学习
作者: wintoflash    时间: 2023-5-31 22:05
2011yaya2007777 发表于 2023-5-30 16:53
奇怪了,W超版你可以使用gcc各版本编译成功grldr,而我只能使用gcc-11.3编译成。使用其他版本编译,错误提 ...

你是不是没装对应版本的 gcc-multilib
比如用的是 gcc-10,那就要装 gcc-10-multilib
我是用 update-alternatives 来切换 GCC 版本的。

作者: liuzhaoyzz    时间: 2023-6-1 05:31
本帖最后由 liuzhaoyzz 于 2023-6-1 06:45 编辑
wintoflash 发表于 2023-5-31 22:05
你是不是没装对应版本的 gcc-multilib
比如用的是 gcc-10,那就要装 gcc-10-multilib
我是用 update-al ...


在一个系统里安装多个gcc版本?之前看过这种骚操作,感觉依赖冲突问题很不好处理啊?高版本的ubuntu,低版本的gcc有的依赖根本就安装不上啊?
作者: 2011yaya2007777    时间: 2023-6-1 09:30
你是不是没装对应版本的 gcc-multilib

是没有装。

sudo apt install -y gcc7-multilib gcc8-multilib gcc9-multilib gcc10-multilib
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
E: 无法定位软件包 gcc7-multilib
E: 无法定位软件包 gcc8-multilib
E: 无法定位软件包 gcc9-multilib
E: 无法定位软件包 gcc10-multilib

在网上搜了搜,说是更新源,添加了清华源还是不行。
作者: wintoflash    时间: 2023-6-1 10:04
2011yaya2007777 发表于 2023-6-1 09:30
是没有装。

sudo apt install -y gcc7-multilib gcc8-multilib gcc9-multilib gcc10-multilib

gcc-10-multilib
你写错了
作者: 2011yaya2007777    时间: 2023-6-1 10:39
本帖最后由 2011yaya2007777 于 2023-6-1 11:02 编辑

我不懂,是照抄埃及朋友的。
已经成功下载并编译成功!
谢谢wintoflash超级版主!
作者: liuzhaoyzz    时间: 2023-6-1 12:37
包名字可以模糊搜索
apt search package_name
或者
apt search package_name|grep "package_name"
作者: 2011yaya2007777    时间: 2023-6-1 12:55
试一试,要学的挺多。
作者: 2011yaya2007777    时间: 2023-6-4 16:58
@wintoflash
今天上传了外部命令补丁。
修改 ubuntu 为 22.04,gcc 为 11。
但是卡在初始化。
提示:
E: Failed to fetch http://azure.archive.ubuntu.com/ ... ubuntu2.1_amd64.deb  404  Not Found [IP: 40.119.46.219 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
Error: Process completed with exit code 100.
作者: wintoflash    时间: 2023-6-4 17:41
2011yaya2007777 发表于 2023-6-4 16:58
@wintoflash
今天上传了外部命令补丁。
修改 ubuntu 为 22.04,gcc 为 11。

现在编译通过了。
暂时禁止了 fbinst, loadbin, makemod, makerom, wee, weesetup 等 Windows 下工具的编译。这些玩意要用 mingw 来编译。
作者: 2011yaya2007777    时间: 2023-6-4 18:00
好的。明天把我 grub4dos,grub4efi 推上去。
作者: wintoflash    时间: 2023-6-4 18:10
2011yaya2007777 发表于 2023-6-4 18:00
好的。明天把我 grub4dos,grub4efi 推上去。

grub4dos那边用的是chenall的编译脚本,写死了gcc版本。我给chenall提了issue,还没回复。
https://github.com/chenall/grub4dos-build/issues/1
作者: 2011yaya2007777    时间: 2023-6-4 18:30
这个补丁我一起推上去。不知道还有没有其他问题,到时再请教你。
作者: liuzhaoyzz    时间: 2023-6-4 21:50
wintoflash 发表于 2023-6-4 18:10
grub4dos那边用的是chenall的编译脚本,写死了gcc版本。我给chenall提了issue,还没回复。
https://gith ...

破github又卡又墙,chenall没有看到这个issue吧。按说是有邮件提醒的呀?chenall没有注意到吧。
作者: liuzhaoyzz    时间: 2023-6-4 22:18
2011yaya2007777 发表于 2023-6-4 18:30
这个补丁我一起推上去。不知道还有没有其他问题,到时再请教你。

你们几个高手还是加个微信好了,github沟通感觉不太畅快啊。

作者: 2011yaya2007777    时间: 2023-6-5 11:16
把grub4dos推送上去了。
修改了 .github/workflows 及 .travis.yml,似乎没有起作用,仍然使用 ubuntu-18.04 编译。
卡在 “调用专用编译环境进行编译”

Run chenall/grub4dos-build@main
Run $GITHUB_ACTION_PATH/tmate.sh
Run cd $GITHUB_ACTION_PATH && chmod +x ./start-grubdev.sh && ./start-grubdev.sh
......
E: Unable to locate package gcc-4.8
E: Couldn't find any package by glob 'gcc-4.8'
E: Unable to locate package gcc-4.8-multilib
E: Couldn't find any package by glob 'gcc-4.8-multilib'
Error: Process completed with exit code 100.

chenall/grub4dos-build@main, $GITHUB_ACTION_PATH/tmate.sh,  ./start-grubdev.sh 这些都不在现有的文件包内。
作者: wintoflash    时间: 2023-6-5 11:51
2011yaya2007777 发表于 2023-6-5 11:16
把grub4dos推送上去了。
修改了 .github/workflows 及 .travis.yml,似乎没有起作用,仍然使用 ubuntu-18. ...

前面说了,这个得chenall来弄。
https://github.com/chenall/grub4 ... in/start-grubdev.sh
他写死了 gcc 版本。
作者: 2011yaya2007777    时间: 2023-6-9 18:20
G4D,G4E 成功发布,可以从两个官网地址下载了。
作者: chenall    时间: 2023-6-18 16:30
wintoflash 发表于 2023-6-5 11:51
前面说了,这个得chenall来弄。
https://github.com/chenall/grub4dos-build/blob/main/start-grubdev.s ...

前一段时间刚好比较忙..

刚看到 yaya 已经处理好了

作者: wintoflash    时间: 2023-6-18 21:02
chenall 发表于 2023-6-18 16:30
前一段时间刚好比较忙..

刚看到 yaya 已经处理好了

能不能解决一下 efi 分支这个报错


作者: chesson    时间: 2023-6-19 22:48
小白一枚,借宝地求教个问题:几年前我学习细细哥的U盘启动VHD的帖子,随便找个成品PE,再借助FbinstTool就可以看到存在的UD分区,随便编辑菜单文件,现在新版的PE,为什么隐藏分区全都无法查看了?是需要什么新的软件工具才行吗?
作者: wintoflash    时间: 2023-6-20 18:35
chesson 发表于 2023-6-19 22:48
小白一枚,借宝地求教个问题:几年前我学习细细哥的U盘启动VHD的帖子,随便找个成品PE,再借助FbinstTool就 ...

fbinst 1.6 和 1.7 版本是不兼容的。
现在用 fbinst 1.7 做的 ud,必须用 1.7 版本的 fbinst / FbinstTool 来打开。

作者: 312439374    时间: 2023-10-13 21:02
怎么编译啊? 我解压了,用make报错
作者: pduaje43125@cha    时间: 2023-10-17 09:26
帖后跳转到最后一页




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3