无忧启动论坛

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

[求助] 为什么U盘引导ubuntu live ISO 出错?

  [复制链接]
1#
发表于 2022-11-12 21:01:59 | 显示全部楼层
“迁就有bug的ISO光盘镜像。”好像有问题。

我觉得使用 kernel 和 initrd 函数启动 linux,与 2021-11-05 补丁没有关系,而是与 2021-10-21 补丁有关(尽管 2021-10-21 版本可以启动),因为编译 环境 修改为 ubuntu-18.04 之后,出现过很多次奇奇怪怪的问题。使用我上传的版本正常,而官网编译发布的版本就有点问题。我试图找原因,但最终没有解决。比如有一个版本,我在代码中插入延时几微妙,使用 ubuntu-18.04 编译的版本就正常。我记得起码有 3 次版本有人反馈。可是后来又莫名其妙的没事了。
我每天测试一下看看。

点评

多年以来,一直被 gcc 编译器困扰,是相当难受的事情。 如果有可能的话,转换编译器。比如转换到 clang。  详情 回复 发表于 2022-11-12 22:02
回复

使用道具 举报

2#
发表于 2022-11-12 22:13:07 来自手机 | 显示全部楼层
由于使用了 map 函数,所以有可能与补丁有关系。不过我已经测试了我编译的最新版本,已经测试成功了。现在正在测试从官网下载的最新版本。
回复

使用道具 举报

3#
发表于 2022-11-12 22:15:34 来自手机 | 显示全部楼层
官网的2022-10-27版本测试正常!
回复

使用道具 举报

4#
发表于 2022-11-12 22:18:01 来自手机 | 显示全部楼层
菜单就是liuzhaoyzz的,只不过是iso的存放路径不同。
回复

使用道具 举报

5#
发表于 2022-11-13 08:04:48 | 显示全部楼层
这个现象,说明不稳定

原来在DOS下编译16位代码,有设置堆栈的问题。后来在32位保护模式,好像只设置代码段和数据段。现在在gcc下编译,找不到在哪里设置堆栈。在GRUB2看到一段有关堆栈的代码,但是没有看明白。

点评

你能否把 grub2 for efi 的堆栈相关代码贴出来,我看看。岁数大了,没有体力能查看庞大的 grub2 代码了。 它有可能设置得不合理。因为 ventoy 的图形模式,就很不稳定。我觉得,堆栈设置,是个可变因素,是个疑点  详情 回复 发表于 2022-11-13 11:32
肯定有堆栈的。只要是 x86 intel amd 的 cpu,肯定有堆栈。32 位和 64 位,都离不开堆栈。尤其是 32 位、64位,此时消耗的堆栈,反而更多,c 语言函数里面的数组声明,就占用堆栈。比如 char buf [ 512 ]; 就占用 51  详情 回复 发表于 2022-11-13 10:56
回复

使用道具 举报

6#
发表于 2022-11-13 08:14:19 | 显示全部楼层
今天使用 2021-10-21 版本测试,成功启动。与 liuzhaoyzz 超级版主的结果一致。
今天使用 2021-11-05 版本测试,成功启动。与 liuzhaoyzz 超级版主的结果不一致。可能如不点大师所言,不稳定?
2022-10-27版本好难下载。一个链接封了,404找不到。一个链接点击没有反映,架梯子后勉强断断续续费时费力地摘下来。现在上传到这里备用。

BOOTX64.rar

140.95 KB, 下载次数: 3, 下载积分: 无忧币 -2

点评

http://dl.grub4dos.chenall.net/grub4dos-for_UEFI-2022-10-27.7z 2022-10-27版本下载地址,直接把旧版本的日期改下就可以直接下载了,不要梯子。就是changelog看不到。  详情 回复 发表于 2022-11-13 08:30
我之前都是在vmware虚拟机中测试的,因为需要频繁重启电脑,有时候会死机比较伤硬盘,chkdsk /f c:有时候修复不了磁盘错误。 grub4dos-for_UEFI-2021-11-05 版本,实体机测试,显示不了菜单,直接黑屏了,没法进  详情 回复 发表于 2022-11-13 08:28
回复

使用道具 举报

7#
发表于 2022-11-13 08:44:01 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2022-11-13 09:18 编辑

尝试解决一下楼主启动失败的问题。
首先要统一测试环境:
1. 使用 liuzhaoyzz 超级版主提供的地址下载 ubuntu-18.04.6-desktop-amd64.iso。
2. 使用 liuzhaoyzz 超级版主提供的菜单启动。
title /linux1/ubuntu/ubuntu-18.04.6-desktop-amd64.iso
find --ignore-floppies --ignore-cd --set-root /linux1/ubuntu/ubuntu-18.04.6-desktop-amd64.iso
map /linux1/ubuntu/ubuntu-18.04.6-desktop-amd64.iso (hd32)
map --hook
kernel (hd32)/casper/vmlinuz boot=casper iso-scan/filename=/linux1/ubuntu/ubuntu-18.04.6-desktop-amd64.iso noprompt noeject
initrd (hd32)/casper/initrd
boot
注意加粗的地方,是你存放 ubuntu-18.04.6-desktop-amd64.iso 的路径,要修改一致。比如你放到 /PE/ 下,就改成
/PE/ubuntu-18.04.6-desktop-amd64.iso    注意大小写一致。
3. 使用楼上我提供的 BOOTX64.EFI 测试。

如果启动失败,截图看看失败后的文字提示。


失败的原因大致有:
1.原始启动 ISO 镜像有问题。
2.启动菜单有问题。一是路径有误,二是传递的参数有误。好像不同版本参数不禁相同,不知从哪里获得正确参数,大部分是模仿别人的。这样就容易产生错误。比如少了参数,参数错误,或者默认参数与你的环境不一致,必需显式确定参数(不是隐含),等等。
3.启动工具的问题。
4. 内存问题。我估计启动 ubuntu-18.04.6-desktop-amd64.iso 时,他建立了一个虚拟内存,尺寸一定不小。内存是否有一个可以容纳他的连续片段?

期待楼主的成功!




回复

使用道具 举报

8#
发表于 2022-11-13 09:16:39 | 显示全部楼层
grub4dos-for_UEFI-2022-10-27版本,实体机出现错误提示,等待了一会儿,居然启动了ubuntu-18.04.6-desktop-amd64.iso。

我是在实体机测试的,内存小,虚拟机无法测试。
在你说的等待处,我也等待了将近7,8秒,由于菜单里有暂停,必需按一次键!可能是光盘镜像建立虚拟机,并往里面复制文件。

点评

回车键我按了的,虚拟机等待了很久也不行,相比于2021-10-21版本,明显进去较慢。  详情 回复 发表于 2022-11-13 09:37
回复

使用道具 举报

9#
发表于 2022-11-13 11:11:02 来自手机 | 显示全部楼层
这个是遇到过。刚开始调试uefi时,函数出错误,把函数体内部的数组移动到外部,就通过了。

点评

那就好。另外,如果你借用了 grub2 的部分代码,要注意,其中有可能存在着内嵌函数的情况。内嵌函数就是添乱,不要让函数体里面套着另一个函数体。 如果这些问题都没有,但仍然失败,那就要看,是不是代码体积太  详情 回复 发表于 2022-11-13 12:17
回复

使用道具 举报

10#
发表于 2022-11-13 14:43:01 | 显示全部楼层
你能否把 grub2 for efi 的堆栈相关代码贴出来

这是2,3年之前的事了,现在换了电脑,找不到标注了“堆栈”的代码文本了。刚才又在GRUB2搜索了一下,没有搜到。不过,GRUB2安装自己的驱动程序,他应当设置堆栈。G4D仅使用固件(无论是BIOS还是UEFI)提供的函数,估计问题不大。

yaya 顺便把 efi 的内存布局简要介绍一下

实模式下,内存通常分为常规内存,上位内存,扩展内存。
保护模式下,内存通常是平面的,即0-最大。只不过用户只能使用留给他们的内存。
UEFI是在保护模式下,基本没什么大的区别。用户可用内存,一般是在0-9ffff(但是有的电脑占用0-7fff,有的占用50000前后的几Kb),1Mb之后的区域。

如果你借用了 grub2 的部分代码,要注意,其中有可能存在着内嵌函数的情况

是的,借用了部分函数。存在着内嵌函数的情况。以后抽时间整理一下。

点评

http://wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=432789&pid=4721165&fromuid=298214 我用22楼的办法,测试grub4dos-for_UEFI-2023-03-19,启动不了ubuntu18,虚拟机截图如下: [attachimg]523587[/a  详情 回复 发表于 2023-3-26 09:56
GRUB 2 UEFI 下不会设置堆栈。它只是可以设置堆栈保护 (stack guard),而且这个功能是可选的。 UEFI 下加载 PE 可执行文件的时候固件会帮你设置好堆栈,当然你想自己设置堆栈也是可以的,要满足如下需求: [atta  详情 回复 发表于 2022-11-13 16:19
回复

使用道具 举报

11#
发表于 2023-3-26 11:30:28 | 显示全部楼层
yaya 整的那一套 map ,我不太能看懂里面的机制。20230311 及之后的版本我没动 map。

我最近排查了一个错误,不知是不是这个错误引起的,待我验证一下。

帮我看一看,怎么不能从官网下载源码了。虽然有其他下载方法,但是都不能上传补丁。
dev@grub4dos_dev:/mnt/.31/home/dev$ git clone git@github.com:chenall/grub4dos.gi
t
cofuse: unsuppored request 6
Initialized empty Git repository in /mnt/.31/home/dev/grub4dos/.git/
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
d5:2c:63:d9:bc:75:9d:de:b1:4e:36:28:9f:7a:9c:39.
Please contact your system administrator.
Add correct host key in /home/dev/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/dev/.ssh/known_hosts:1
RSA host key for github.com has changed and you have requested strict checking.
Host key verification failed.
fatal: The remote end hung up unexpectedly
dev@grub4dos_dev:/mnt/.31/home/dev$

点评

GitHub 因为私钥泄露更新了它的 ssh key。 更新一下就好了。 https://github.blog/2023-03-23-we-updated-our-rsa-ssh-host-key/  详情 回复 发表于 2023-3-26 11:36
回复

使用道具 举报

12#
发表于 2023-3-26 11:59:12 | 显示全部楼层
试一试这个,没有打最近的补丁。

BOOTX64.rar

140.95 KB, 下载次数: 17, 下载积分: 无忧币 -2

点评

影响到 winpe.iso了  发表于 2023-3-26 16:39
不行啊,这个版本,虚拟机测试,根本就进不去菜单啊? 你测试过了吗?  详情 回复 发表于 2023-3-26 16:31
回复

使用道具 举报

13#
发表于 2023-3-26 12:44:10 | 显示全部楼层
GitHub 因为私钥泄露更新了它的 ssh key。

妥了,谢谢wintoflash!
回复

使用道具 举报

14#
发表于 2023-3-26 18:22:00 | 显示全部楼层
不行啊,这个版本,虚拟机测试,根本就进不去菜单啊?
你测试过了吗?

我在QEMU虚拟机测试的。
title ubuntu-18.04.6-desktop-amd64.iso
find /boot/imgs/ubuntu-18.04.6-desktop-amd64.iso
map --mem /boot/imgs/ubuntu-18.04.6-desktop-amd64.iso (0xff)
chainloader (0xff)

点评

刚才用64楼的bootx64.efi+58楼的菜单,实体机测试,可以出菜单,map过了,但是后面死机了。 http://wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=432789&pid=4859318&fromuid=298214 直接上图 [attach  详情 回复 发表于 2023-3-26 20:06
回复

使用道具 举报

15#
发表于 2023-3-26 20:25:39 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2023-3-26 20:32 编辑
刚才用64楼的bootx64.efi+58楼的菜单,实体机测试,可以出菜单,map过了,但是后面死机了。

怎么多了一项 venmedia ?
是不是 (hd32) 惹的祸?死机是在 map 之后,是
kernel (hd32)/casper/vmlinuz boot=casper iso-scan/filename=/linux1/ubuntu/ubuntu-18.04.6-desktop-amd64.iso noprompt noeject
initrd (hd32)/casper/initrd
引起的。你使用
map /linux1/ubuntu/ubuntu-18.04.6-desktop-amd64.iso (0xff)
chainloader (0xff)
试一试

点评

map /linux1/ubuntu/ubuntu-18.04.6-desktop-amd64.iso (0xff) chainloader (0xff) chainloader (0xff)这样是不能完全启动ubuntu的。  详情 回复 发表于 2023-3-27 12:39
关于(hd32)与(0xff),之前测试过很多,(hd32)启动linux是没问题的。  详情 回复 发表于 2023-3-26 21:25
回复

使用道具 举报

16#
发表于 2023-3-27 09:12:03 | 显示全部楼层
关于(hd32)与(0xff),之前测试过很多,(hd32)启动linux是没问题的。

这是最新版本,包含之前的补丁。
我这里测试,使用chainloader,进入菜单。
使用kernel,显示一些信息,停在那里了。

好奇,你怎么不能使用虚拟机?

BOOTX64.rar

141.75 KB, 下载次数: 8, 下载积分: 无忧币 -2

点评

我用这个2023-03-27版本,下面的菜单: title /linux1/ubuntu/ubuntu-18.04.6-desktop-amd64.iso debug 3 find --ignore-floppies --ignore-cd --set-root /linux1/ubuntu/ubuntu-18.04.6-desktop-amd64.iso m  详情 回复 发表于 2023-3-27 12:24
chainloader (0xff)这样的语句,启动windows或者PE还可以,启动linux,绝大部分是不行的,除非像是slitaz这种改造过initrd的。 我也不知道为啥虚拟机不能测试g4e,以前版本都是可以的,很奇怪。 晚点会去测试  详情 回复 发表于 2023-3-27 10:12
回复

使用道具 举报

17#
发表于 2023-3-27 11:36:11 | 显示全部楼层
chainloader (0xff)这样的语句,启动windows或者PE还可以,启动linux,绝大部分是不行的,除非像是slitaz这种改造过initrd的。

我觉得只要他是个iso镜像光盘,并且可以在UEFI环境直接启动,链式加载器就可以启动成功。

点评

应该是,启动后 ,过几个阶段 ,找不见光盘了 g4e 2023-3-14 QEMU ubuntu20 转shell下启动 [attachimg]523656[/attachimg] 能到这步 是什么 意思  详情 回复 发表于 2023-3-27 12:39
不是这样子的。 map iso之后,这个(0xff)设备只在g4e环境下有效,一旦退出了OSLoader环境,切入linux kernel,linux kernel会找不到这个iso设备,就无法继续启动了,因此kernel后面的iso-scan/filename=/linux1/ubu  详情 回复 发表于 2023-3-27 11:45
回复

使用道具 举报

18#
发表于 2023-3-27 12:50:54 来自手机 | 显示全部楼层
谢谢liuzhaoyzz详细解释,似乎明白了。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-10 17:06

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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