wlsk888 发表于 2022-11-10 16:02:16

为什么U盘引导ubuntu live ISO 出错?

菜单为:
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
希望大佬们帮忙?

caocaofff 发表于 2022-11-10 16:13:26

提示没找到ISO文件,路径不对?

liuzhaoyzz 发表于 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
}


wlsk888 发表于 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

liuzhaoyzz 发表于 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里面的名字。


wlsk888 发表于 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和initrdhttp://chuantu.xyz/t6/742/1668153843x2890373663.jpg
http://chuantu.xyz/t6/742/1668153884x2890373662.jpg

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

liuzhaoyzz 发表于 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版本是多少的?开机启动的时候屏幕顶端可以看到的。

wlsk888 发表于 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

liuzhaoyzz 发表于 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里面的名字。

wlsk888 发表于 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

飞黄腾达9 发表于 2022-11-11 17:59:25

ISO 出错?

wlsk888 发表于 2022-11-11 18:02:04

飞黄腾达9 发表于 2022-11-11 17:59
ISO 出错?

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

liuzhaoyzz 发表于 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校验值对吗?

不点 发表于 2022-11-12 14:00:24

本帖最后由 不点 于 2022-11-12 14:03 编辑

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

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

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

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

liuzhaoyzz 发表于 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?

不点 发表于 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 下的写法一样不一样呢?

liuzhaoyzz 发表于 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,这块我不确定,我没有测试过。

不点 发表于 2022-11-12 15:27:33

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

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

liuzhaoyzz 发表于 2022-11-12 15:38:45

不点 发表于 2022-11-12 15:27
平时基本不用 g4e,偶尔用过。貌似 g4e 的 map 用法,变化很大耶。我印象中,是 yaya 的样本菜单里面的 m ...

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

不点 发表于 2022-11-12 16:08:31

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

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

2011whp 发表于 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)后 提取。

liuzhaoyzz 发表于 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好像不管用?



不点 发表于 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 了。

2011yaya2007777 发表于 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 次版本有人反馈。可是后来又莫名其妙的没事了。
我每天测试一下看看。

liuzhaoyzz 发表于 2022-11-12 21:27:26

静候佳音!

不点 发表于 2022-11-12 22:02:29

2011yaya2007777 发表于 2022-11-12 21:01
我觉得使用 kernel 和 initrd 函数启动 linux,与 2021-11-05 补丁没有关系,而是与 2021-10-21 补丁有关 ...

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

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

2011yaya2007777 发表于 2022-11-12 22:13:07

由于使用了 map 函数,所以有可能与补丁有关系。不过我已经测试了我编译的最新版本,已经测试成功了。现在正在测试从官网下载的最新版本。

2011yaya2007777 发表于 2022-11-12 22:15:34

官网的2022-10-27版本测试正常!

2011yaya2007777 发表于 2022-11-12 22:18:01

菜单就是liuzhaoyzz的,只不过是iso的存放路径不同。

不点 发表于 2022-11-12 23:19:11

yaya 测试正常,但 liu 版主测试出问题,楼主也遇到失败。

这个现象,说明不稳定。

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

出问题的时候,要看失败的现象:是不是死机了。没死机,与死机,是不一样的,有着不一样的原因。这能帮助判断出问题的大致方向。
页: [1] 2 3 4
查看完整版本: 为什么U盘引导ubuntu live ISO 出错?