无忧启动论坛

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

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

  [复制链接]
跳转到指定楼层
1#
发表于 2022-11-10 16:02:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
菜单为:
root (hd0,0)
kernel /vmlinuz boot=casper iso-scan/filename=/ubuntu.iso locale=zh_CN.UTF-8
initrd /initrd
启动最后,显示错误:
Unable to find a medium containing a live file system
希望大佬们帮忙?
2#
发表于 2022-11-10 16:13:26 | 只看该作者
提示没找到ISO文件,路径不对?
回复

使用道具 举报

3#
发表于 2022-11-10 17:12:40 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-11-10 17:15 编辑

#grub4dos
title /linux/ubuntu/ubuntu-20.10-desktop-amd64.iso
find --ignore-floppies --ignore-cd --set-root /linux/ubuntu/ubuntu-20.10-desktop-amd64.iso
map /linux/ubuntu/ubuntu-20.10-desktop-amd64.iso (hd32)
map --hook
kernel (hd32)/casper/vmlinuz boot=casper iso-scan/filename=/linux/ubuntu/ubuntu-20.10-desktop-amd64.iso noprompt noeject
initrd (hd32)/casper/initrd

#grub2
menuentry "/linux/ubuntu/ubuntu-20.10-desktop-amd64.iso-loopback.cfg" "/linux/ubuntu/ubuntu-20.10-desktop-amd64.iso" {
search --no-floppy --set --file $2
export iso_path=$2
loopback -d loop;loopback loop $2
set root=loop
configfile (loop)/boot/grub/loopback.cfg
}

menuentry "/linux/ubuntu/ubuntu-20.10-desktop-amd64.iso" "/linux/ubuntu/ubuntu-20.10-desktop-amd64.iso" {
set gfxpayload=keep
search --no-floppy --set --file $2
loopback loop $2
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/linux/ubuntu/ubuntu-20.10-desktop-amd64.iso noprompt noeject
initrd (loop)/casper/initrd
}


点评

grub.cfg是在(hd0,1)的/EFI/GRUB/目录下的 而ubuntu.iso是放在(hd0,0)的/PE/目录下的 这个应该怎么改? 你的我改成 find --ignore-floppies --ignore-cd --set-root /pe/ubuntu.iso map /pe/ubuntu.iso (hd32)  详情 回复 发表于 2022-11-10 18:34
回复

使用道具 举报

4#
 楼主| 发表于 2022-11-10 18:34:43 | 只看该作者
liuzhaoyzz 发表于 2022-11-10 17:12
#grub4dos
title /linux/ubuntu/ubuntu-20.10-desktop-amd64.iso
find --ignore-floppies --ignore-cd -- ...

grub.cfg是在(hd0,1)的/EFI/GRUB/目录下的
而ubuntu.iso是放在(hd0,0)的/PE/目录下的
这个应该怎么改?
你的我改成
find --ignore-floppies --ignore-cd --set-root /pe/ubuntu.iso
map /pe/ubuntu.iso (hd32)
map --hook
kernel (hd32)/casper/vmlinuz boot=casper iso-scan/filename=/pe/ubuntu.iso noprompt noeject
initrd (hd32)/casper/initrd
运行最后提示,找不到/pe/ubuntu.iso
could not find the iso /pe/ubuntu.iso

点评

/pe/ubuntu.iso所在的分区是什么分区? 比如ntfs,ext4?  详情 回复 发表于 2022-11-11 07:56
回复

使用道具 举报

5#
发表于 2022-11-11 07:56:00 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-11-11 08:12 编辑
wlsk888 发表于 2022-11-10 18:34
grub.cfg是在(hd0,1)的/EFI/GRUB/目录下的
而ubuntu.iso是放在(hd0,0)的/PE/目录下的
这个应该怎么改? ...

/pe/ubuntu.iso所在的分区是什么分区?
比如ntfs,ext4?
你用的grub4dos版本是多少的?启动的时候在屏幕的顶端可以看到,建议用最新版本。

grub.cfg是在(hd0,1)的/EFI/GRUB/目录下的

grub.cfg是grub2的引导菜单,你的菜单是grub4dos的,grub4dos的引导菜单是/menu.lst.
grub4dos_UEFI的引导菜单是/EFI/grub/menu.lst
你倒底是BIOS,还是UEFI启动?BIOS/UEFI启动,vmlinuz应该改成vmlinuz.efi,看下你的ubuntu.iso里面的名字。


点评

我打错了,确实是menu.lst,ubuntu.iso所在分区是exFat,采用UEFI启动,ISO里面是vmlinuz和initrd 如果我用grub2的Partnew方式启动过这个U盘里的ubuntu.iso 上面的出错GRUB4菜单命令就会正常启动这个UBUNTU了  详情 回复 发表于 2022-11-11 16:05
回复

使用道具 举报

6#
 楼主| 发表于 2022-11-11 16:05:11 | 只看该作者
liuzhaoyzz 发表于 2022-11-11 07:56
/pe/ubuntu.iso所在的分区是什么分区?
比如ntfs,ext4?
你用的grub4dos版本是多少的?启动的时候在屏幕 ...

我打错了,确实是menu.lst,ubuntu.iso所在分区是exFat,采用UEFI启动,ISO里面是vmlinuz和initrd


如果我用grub2的Partnew方式启动过这个U盘里的ubuntu.iso
上面的出错GRUB4菜单命令就会正常启动这个UBUNTU了,原因未知。。。

点评

我看了下你的这个截图,你的字体跟yaya推荐的/EFI/grub/unifont.hex.gz字体不一致。 BIOS下面的grub4dos与UEFI下面的grub4dos所使用的字体似乎不同,而且可能会影响启动成功率,我以前因为这个问题困扰了很久。  详情 回复 发表于 2022-11-13 09:04
按说grub4dos是支持FAT32/NTFS/EXFAT/UDF/ISO9600/EXT2/EXT3/EXT4分区的呀,为啥会找不到/pe/ubuntu.iso???奇怪。 另外ubuntu-livecd是否支持exfat,还有待验证,我测试了放在NTFS分区是没问题的。 对于ubu  详情 回复 发表于 2022-11-11 16:10
回复

使用道具 举报

7#
发表于 2022-11-11 16:10:20 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-11-11 16:11 编辑
wlsk888 发表于 2022-11-11 16:05
我打错了,确实是menu.lst,ubuntu.iso所在分区是exFat,采用UEFI启动,ISO里面是vmlinuz和initrd

按说grub4dos是支持FAT32/NTFS/EXFAT/UDF/ISO9600/EXT2/EXT3/EXT4分区的呀,为啥会找不到/pe/ubuntu.iso???奇怪。

另外ubuntu-livecd是否支持exfat,还有待验证,我测试了放在NTFS分区是没问题的。

对于ubuntu这种发行版,启动脚本init/systemd过程中能够完美支持挂载ubuntu.iso,iso-scan/filename=/pe/ubuntu.iso就是干这事儿的,不建议采用partnew方式启动!

你还没有回答我的问题,你用的grub4dos版本是多少的?开机启动的时候屏幕顶端可以看到的。

点评

grub4dos for_uefi 2022-01-18  详情 回复 发表于 2022-11-11 17:19
回复

使用道具 举报

8#
 楼主| 发表于 2022-11-11 17:19:51 | 只看该作者
liuzhaoyzz 发表于 2022-11-11 16:10
按说grub4dos是支持FAT32/NTFS/EXFAT/UDF/ISO9600/EXT2/EXT3/EXT4分区的呀,为啥会找不到/pe/ubuntu.iso ...

grub4dos for_uefi 2022-01-18

点评

1、换用最新版本的grub4dos for_uefi . 2、UEFI启动,vmlinuz应该改成vmlinuz.efi,看下你的ubuntu.iso里面的名字。  详情 回复 发表于 2022-11-11 17:32
回复

使用道具 举报

9#
发表于 2022-11-11 17:32:18 | 只看该作者
wlsk888 发表于 2022-11-11 17:19
grub4dos for_uefi 2022-01-18

1、换用最新版本的grub4dos for_uefi .
2、UEFI启动,vmlinuz应该改成vmlinuz.efi,看下你的ubuntu.iso里面的名字。
回复

使用道具 举报

10#
 楼主| 发表于 2022-11-11 17:54:05 | 只看该作者
已换用最新2022-9-15的uefi
并且iso分区已经格成ntfs
ubuntu是18版本。ISO里面的casper/目录下没有vmlinuz.efi啊
启动最后,还是显示错误:
Unable to find a medium containing a live file system

点评

把ubuntu.iso放在本地硬盘,试试看,是不是iso下载过程中出错了?  详情 回复 发表于 2022-11-12 11:07
回复

使用道具 举报

11#
发表于 2022-11-11 17:59:25 | 只看该作者
ISO 出错?

点评

我换官网下载的ubuntu 20版本也是一样  详情 回复 发表于 2022-11-11 18:02
回复

使用道具 举报

12#
 楼主| 发表于 2022-11-11 18:02:04 | 只看该作者

我换官网下载的ubuntu 20版本也是一样
回复

使用道具 举报

13#
发表于 2022-11-12 11:07:01 | 只看该作者
wlsk888 发表于 2022-11-11 17:54
已换用最新2022-9-15的uefi
并且iso分区已经格成ntfs
ubuntu是18版本。ISO里面的casper/目录下没有vmlinu ...

把ubuntu.iso放在本地硬盘,试试看,是不是iso下载过程中出错了?或者优盘读写有问题?iso的md5校验值对吗?
回复

使用道具 举报

14#
发表于 2022-11-12 14:00:24 | 只看该作者
本帖最后由 不点 于 2022-11-12 14:03 编辑

liu 版主,假如 ubuntu 不再支持 isoscan/filename=..... 这个参数呢?

找不到 iso 文件的信息,是 ubuntu 的启动代码发出的,不是 grub4dos 发出的。

grub4dos 能把控制权递交给 ubuntu,任务就完成了。后续的事,与 grub4dos 无关。

grub4dos 的鞭子再长,也不能伸到 ubuntu 的里面去操纵 ubuntu 的启动过程。

点评

最近的几个ubuntu发行版,15-20都是支持isoscan/filename=启动参数的,我测试过几个版本都支持。以后估计ububtu应该也不会放弃。 could not find the iso /pe/ubuntu.iso这样的提示应该是grub4dos抛出的,我分析  详情 回复 发表于 2022-11-12 14:23
回复

使用道具 举报

15#
发表于 2022-11-12 14:23:40 来自手机 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-11-12 14:42 编辑
不点 发表于 2022-11-12 14:00
liu 版主,假如 ubuntu 不再支持 isoscan/filename=..... 这个参数呢?

找不到 iso 文件的信息,是 ubun ...


最近的几个ubuntu发行版,15-20都是支持isoscan/filename=启动参数的,我测试过几个版本都支持。以后估计ubunbtu应该也不会放弃。

could not find the iso /pe/ubuntu.iso这样的提示应该是grub4dos抛出的,我分析要么是楼主的路径或者文件名写的不对,要么是优盘有问题。

Unable to find a medium containing a live file system这样的提示应该是ubuntu抛出的。到这里的话可能就是ubuntu的问题,比如文件分区格式不支持extFS/NTFS,可能放在FAT32/EXT分区就可以。debian_livecd就是这样子,不支持extfs/NTFS,抛出类似的错误。
也可能是启动参数变化,启动参数变化楼主可以看看ubuntu.iso里面的grub.cfg启动菜单,或者是isolinux菜单,照葫芦画瓢即可解决问题。
看下是不是initrd名字写的不对,看下iso里面是不是叫做initrd.lz?

点评

我刚刚注意到,他在适应 UEFI。 UEFI 下的 光盘仿真命令,与 bios 下一样吗? 我看他的写法,完全是 bios 下的写法。 liu 版主,您熟悉 UEFI 下的 grub4dos,那么,究竟与 bios 下的写法一样不一样呢?  详情 回复 发表于 2022-11-12 14:40
回复

使用道具 举报

16#
发表于 2022-11-12 14:40:06 | 只看该作者
liuzhaoyzz 发表于 2022-11-12 14:23
最近的几个ubuntu发行版,15-20都是支持isoscan/filename=启动参数的,我测试过几个版本都支持。以后估 ...

我刚刚注意到,他在使用 UEFI。

UEFI 下的 光盘仿真命令,与 bios 下一样吗?

我看他的写法,完全是 bios 下的写法。

liu 版主,您熟悉 UEFI 下的 grub4dos,那么,究竟与 bios 下的写法一样不一样呢?

点评

BIOS/UEFI版本的grub4dos,命令方面从最终用户来说感觉不到有太大的区别。比如常用的find,map,kernel,initrd这样子的命令。其他的命令ls,geometry,cat,displaymem等等感觉没啥变化。 略有区别的可能是内部变量地  详情 回复 发表于 2022-11-12 14:50
回复

使用道具 举报

17#
发表于 2022-11-12 14:50:04 来自手机 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-11-12 14:57 编辑
不点 发表于 2022-11-12 14:40
我刚刚注意到,他在使用 UEFI。

UEFI 下的 光盘仿真命令,与 bios 下一样吗?


BIOS/UEFI版本的grub4dos,命令方面从最终用户来说感觉不到有太大的区别,这与yaya的努力有关。比如常用的graphicsmode,find,map,kernel,initrd,chainloader这样子的命令。其他的命令ls,geometry,cat,displaymem,uuid等等感觉没啥变化。

略有区别的可能是内部变量地址变了,这块我基本没有涉及到,我只是用前面的几个常用命令。

g4d用户可以无缝切换到g4e,区别就是在作为第一引导的情况下,g4d是基于MBR扇区引导,默认菜单是/menu.lst,/boot/menu.lst,/boot/grub/menu.lst,g4e是基于文件引导,默认菜单是/EFI/grub/menu.lst。
另外g4d支持pxe,间接支持ipxe。g4e似乎不支持pxe/ipxe,这块我不确定,我没有测试过。

点评

平时基本不用 g4e,偶尔用过。貌似 g4e 的 map 用法,变化很大耶。我印象中,是 yaya 的样本菜单里面的 map 命令,就与 bios 的不一样。详细情况,可能 liu 版主了解。我只是提醒:不要因为用法差别而导致楼主的问题  详情 回复 发表于 2022-11-12 15:27
回复

使用道具 举报

18#
发表于 2022-11-12 15:27:33 | 只看该作者
liuzhaoyzz 发表于 2022-11-12 14:50
BIOS/UEFI版本的grub4dos,命令方面从最终用户来说感觉不到有太大的区别,这与yaya的努力有关。比如常 ...

平时基本不用 g4e,偶尔用过。貌似 g4e 的 map 用法,变化很大耶。我印象中,是 yaya 的样本菜单里面的 map 命令,就与 bios 的不一样。详细情况,可能 liu 版主了解。我只是提醒:不要因为用法差别而导致楼主的问题出现。

点评

我发在3楼的菜单,是我实测可以启动的菜单,适用于g4d/g4e,从最终用户来讲没有感觉到有什么区别。  详情 回复 发表于 2022-11-12 15:38
回复

使用道具 举报

19#
发表于 2022-11-12 15:38:45 来自手机 | 只看该作者
不点 发表于 2022-11-12 15:27
平时基本不用 g4e,偶尔用过。貌似 g4e 的 map 用法,变化很大耶。我印象中,是 yaya 的样本菜单里面的 m ...

我发在3楼的菜单,是我实测可以启动的菜单,适用于g4d/g4e,从最终用户来讲没有感觉到有什么区别。

点评

不如您自己下载 ubuntu 试试,看究竟成功不成功,以便推断楼主问题的症结在哪里。现在光是问和答,看似省力,其实费劲。  详情 回复 发表于 2022-11-12 16:08
回复

使用道具 举报

20#
发表于 2022-11-12 16:08:31 | 只看该作者
liuzhaoyzz 发表于 2022-11-12 15:38
我发在3楼的菜单,是我实测可以启动的菜单,适用于g4d/g4e,从最终用户来讲没有感觉到有什么区别。

不如您自己下载 ubuntu 试试,看究竟成功不成功,以便推断楼主问题的症结在哪里。现在光是问和答,看似省力,其实费劲。
回复

使用道具 举报

21#
发表于 2022-11-12 16:36:36 | 只看该作者
刚从  itellyou下载测试,可以启动

title ubuntu20
root (hd0,0)
kernel /vmlinuz file=/cdrom/preseed/ubuntu.seed maybe-ubiquity iso-scan/filename=/ubuntu20.iso quiet splash ---
initrd /initrd


楼主 ,可以 先试 把两个文件 复制出来,(这个情况:即 上面的实践)

然后再试,map  (0xff)后 提取。

点评

你看他在6楼的截图,就是提取出来启动测试的,不知道他是从哪里获取vmlinuz,initrd的,如果不匹配肯定是不行的,不建议提取出来,没有必要。  详情 回复 发表于 2022-11-13 10:06
回复

使用道具 举报

22#
发表于 2022-11-12 18:45:26 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-11-13 17:02 编辑

Index of /ubuntu-releases/18.04.6/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/18.04.6/

文件名称: ubuntu-18.04.6-desktop-amd64.iso
文件大小: 2.34 GB (2,514,124,800 字节)
修改时间: 2022年11月12日,16:56:04
MD5: 98307E18A0B46583A26C34D4B1738D8A
SHA256: F730BE589AA1BA923EBE6ECA573FA66D09BA14C4C104DA2C329DF652D42AFF11
下载了上面这个 ubuntu-18.04.6-desktop-amd64.iso。

I:\EFI\grub\menu.lst
graphicsmode -1 800
find --set-root /EFI/grub/unifont.hex.gz
font /EFI/grub/unifont.hex.gz
color normal=0x07 highlight=0xE1 helptext=0x07 heading=0x02
timeout 3
default 1

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
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
pause


测试了成堆的grub4dos-for_UEFI,
grub4dos-for_UEFI-2021-10-21可以启动ubuntu-18.04.6-desktop-amd64.iso,√
2021-10-21 changelog:2021-10-21 grub4dos-for_UEFI-2021-10-21.7z
更新信息(update log): 2021-10-21 7eceae9@chenall Update release.yml 编译 环境 修改为 ubuntu-18.04 对应源码(sources):



grub4dos-for_UEFI-2021-11-05启动失败×,看了下changelog,
2021-11-05 grub4dos-for_UEFI-2021-11-05.7z
更新信息(update log): 2021-11-05 43d22e2@yaya . 修复管道符‘|’后面紧接call(或者goto)标签时,必须补空格。issues #341 . 迁就有bug的ISO光盘镜像。
“迁就有bug的ISO光盘镜像。”好像有问题。
后面的版本我又试了,很多无法启动ubuntu-18.04.6-desktop-amd64.iso。

@2011yaya2007777,请看下。
而且后面的版本,debug 3好像不管用?



GPT-TEST-2022-11-12-18-02-16.png (5.52 KB, 下载次数: 253)

GPT-TEST-2022-11-12-18-02-16.png

grub4dos-for_UEFI-2021-10-21.7z

987.53 KB, 下载次数: 1, 下载积分: 无忧币 -2

点评

这个图片:blksize=800,也就是 2KB,也就是光盘的 blksize。既然是光盘,为何还要检查其分区表是否合法?应该跳过检查才对啊?  详情 回复 发表于 2022-11-13 06:09
赞!赞!赞!还是版主厉害!找到 bug 了。  详情 回复 发表于 2022-11-12 18:57
回复

使用道具 举报

23#
发表于 2022-11-12 18:57:55 | 只看该作者
liuzhaoyzz 发表于 2022-11-12 18:45
Index of /ubuntu-releases/18.04.6/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror https://mi ...

赞!赞!赞!还是版主厉害!找到 bug 了。
回复

使用道具 举报

24#
发表于 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
回复

使用道具 举报

25#
发表于 2022-11-12 21:27:26 来自手机 | 只看该作者
静候佳音!
回复

使用道具 举报

26#
发表于 2022-11-12 22:02:29 | 只看该作者
2011yaya2007777 发表于 2022-11-12 21:01
我觉得使用 kernel 和 initrd 函数启动 linux,与 2021-11-05 补丁没有关系,而是与 2021-10-21 补丁有关 ...

多年以来,一直被 gcc 编译器困扰,是相当难受的事情。

如果有可能的话,转换编译器。比如转换到 clang。
回复

使用道具 举报

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

使用道具 举报

28#
发表于 2022-11-12 22:15:34 来自手机 | 只看该作者
官网的2022-10-27版本测试正常!
回复

使用道具 举报

29#
发表于 2022-11-12 22:18:01 来自手机 | 只看该作者
菜单就是liuzhaoyzz的,只不过是iso的存放路径不同。
回复

使用道具 举报

30#
发表于 2022-11-12 23:19:11 | 只看该作者
yaya 测试正常,但 liu 版主测试出问题,楼主也遇到失败。

这个现象,说明不稳定。

不稳定的原因,除了 gcc 编译出的 cpu 指令含有错误以外,另一种可能性,就是代码体积变大以后,覆盖了原先存放变量的数据空间。还有一种常见的可能性是,堆栈空间给的太小,有些主板的 int 中断调用需要较多的堆栈空间,从而发生了堆栈溢出,造成失败,或死机。

出问题的时候,要看失败的现象:是不是死机了。没死机,与死机,是不一样的,有着不一样的原因。这能帮助判断出问题的大致方向。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-26 04:04

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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