无忧启动论坛

标题: grub2不能识别USB-CDROM吗? [打印本页]

作者: 求道者    时间: 2023-1-30 12:59
标题: grub2不能识别USB-CDROM吗?
本帖最后由 求道者 于 2023-1-30 13:01 编辑

在制作混合ISO,UEFI下启动,能进CDROM的LBA1,启动后进了grub2的shell。
但检测不到任何设备。
是不支持还是没加相关模块。
qemu也能模拟USB-CDROM环境进行测试。

grub-mkimage -o bootx64.efi -c ~/grub-stub.cfg -p /EFI/grub -O x86_64-efi efi_gop efi_uga efinet all_video video video_bochs video_cirrus video_fb videoinfo serial terminfo terminal search search_fs_file search_fs_uuid search_label udf iso9660 ext2 fat exfat ntfs hfsplus part_gpt part_msdos msdospart lvm diskfilter parttool probe normal acpi ohci uhci ahci ehci cat ls chain configfile echo halt reboot ls lsefimmap lsefisystab lsmmap lspci lsacpi lssal linux

mkisofs -V "BOOTISO" -A "FirPE Boot ISO" -U -max-iso9660-filenames -D -R -J -joliet-long -hide-joliet boot.catalog -no-emul-boot -boot-load-size 4 -b grldr -eltorito-alt-boot -no-emul-boot -eltorito-platform efi -eltorito-boot efiboot.img -o ~/efiboot.iso .


作者: wintoflash    时间: 2023-1-30 13:41
因为你加载了本不应该加载的模块
ohci uhci ahci ehci 以及 usbms 等设备本应由固件自行驱动,你加载了grub2的驱动,就导致这些设备不能访问了。
作者: 求道者    时间: 2023-1-30 15:08
wintoflash 发表于 2023-1-30 13:41
因为你加载了本不应该加载的模块
ohci uhci ahci ehci 以及 usbms 等设备本应由固件自行驱动,你加载了gru ...

不加载能够识别吗?
作者: wintoflash    时间: 2023-1-30 15:34
求道者 发表于 2023-1-30 15:08
不加载能够识别吗?

你用grub-mkimage生成bootloader的时候加进去的模块,启动的时候会自动加载。所以不能加这些模块。
作者: 求道者    时间: 2023-1-30 15:36
本帖最后由 求道者 于 2023-1-30 15:37 编辑
wintoflash 发表于 2023-1-30 15:34
你用grub-mkimage生成bootloader的时候加进去的模块,启动的时候会自动加载。所以不能加这些模块。


行,然后就是那个修正链式加载的补丁没有用,而且此故障住出现在光盘文件系统上。
作者: wintoflash    时间: 2023-1-30 15:38
求道者 发表于 2023-1-30 15:36
行,然后就是,那个修正链式加载的补丁没有用,而且此故障住出现在光盘文件系统上。

怎么个“没有用”法?
那个补丁本来就和光盘没关系。
你是没办法在光盘上启动bootmgfw.efi的。
作者: 求道者    时间: 2023-1-30 15:55
wintoflash 发表于 2023-1-30 15:38
怎么个“没有用”法?
那个补丁本来就和光盘没关系。
你是没办法在光盘上启动bootmgfw.efi的。


老故障。
作者: wintoflash    时间: 2023-1-30 15:57
求道者 发表于 2023-1-30 15:55
老故障。

root是啥
作者: 求道者    时间: 2023-1-30 15:57
wintoflash 发表于 2023-1-30 15:57
root是啥

回家我再测测。
作者: wintoflash    时间: 2023-1-30 15:58
本帖最后由 wintoflash 于 2023-1-30 16:01 编辑
求道者 发表于 2023-1-30 15:57
回家我再测测。

打了补丁之后源码里面根本就没有这个报错的语句了。。。
-  if (! dp)
+  if (dp != NULL)
     {
-      grub_error (GRUB_ERR_BAD_DEVICE, "not a valid root device");
-      goto fail;
-    }
作者: 求道者    时间: 2023-1-30 16:46
wintoflash 发表于 2023-1-30 15:58
打了补丁之后源码里面根本就没有这个报错的语句了。。。
-  if (! dp)
+  if (dp != NULL)

行我到时候检查一下源码。
作者: 求道者    时间: 2023-1-30 17:32
wintoflash 发表于 2023-1-30 13:41
因为你加载了本不应该加载的模块
ohci uhci ahci ehci 以及 usbms 等设备本应由固件自行驱动,你加载了gru ...

生成.efi的时候ohci uhci ahci ehci删掉就好了吗?
其他的不用动?
作者: wintoflash    时间: 2023-1-30 17:40
求道者 发表于 2023-1-30 17:32
生成.efi的时候ohci uhci ahci ehci删掉就好了吗?
其他的不用动?

删。
作者: 求道者    时间: 2023-1-30 18:40
wintoflash 发表于 2023-1-30 17:40
删。



这就是要对BOOTMGR.EFI进行处理的那部分吗?
是光盘文件系统大小写敏感的原因?



作者: wintoflash    时间: 2023-1-30 18:58
求道者 发表于 2023-1-30 18:40
这就是要对BOOTMGR.EFI进行处理的那部分吗?
是光盘文件系统大小写敏感的原因?

这就是我前面说过的,bootmgfw.efi内部bug。
bootmgfw.efi处理光盘上文件的路径有问题。
启动efi文件时,bootloader会向efi文件传递一个uefi设备路径,以使得该efi文件获知自己所在的位置。
比如假设bootmgfw.efi位于某cdrom iso9660文件系统上,
正确的uefi设备路径应该为 USB1/CDROM0/boot/bootmgfw.efi (仅为示例)
但是,bootmgfw.efi 所期待的路径却是 USB1/CDROM0/ESP/boot/bootmgfw.efi (仅为示例)
虽然bootmgfw.efi不在ESP里面,但是却要求传递的路径里面包含ESP。
(上文中的ESP指的是ISO的El Torito FAT 软盘镜像 efiboot.img)

bootmgfw.efi还有一个bug,就是只认第一个光盘(CDROM0),有多个光盘的话就拉稀了。
作者: 求道者    时间: 2023-1-30 19:10
本帖最后由 求道者 于 2023-1-30 19:15 编辑
wintoflash 发表于 2023-1-30 18:58
这就是我前面说过的,bootmgfw.efi内部bug。
bootmgfw.efi处理光盘上文件的路径有问题。
启动efi文件时 ...

听起来手动设置一下文件夹大小写也可以把。

生成的这个.efi有点大,如果只希望在U盘上的udf iso9660 fat上用,以及必要之时能在救援模式下正常用。
哪些模块可以不用?


作者: wintoflash    时间: 2023-1-30 19:26
本帖最后由 wintoflash 于 2023-1-30 19:30 编辑
求道者 发表于 2023-1-30 19:10
听起来手动设置一下文件夹大小写也可以把。

生成的这个.efi有点大,如果只希望在U盘上的udf iso9660 f ...

你没看懂。
------
video_bochs video_cirrus serial hfsplus msdospart parttool lsefimmap lsefisystab lsmmap lspci lsacpi lssal 都删了。

不需要读lvm,删 lvm 和 diskfilter
不需要ext4,删 ext2
不需要exfat/ntfs,删exfat/ntfs
作者: 求道者    时间: 2023-1-30 19:28
wintoflash 发表于 2023-1-30 19:26
你没看懂。

还包括ESP啊。
作者: 求道者    时间: 2023-1-30 23:20
本帖最后由 求道者 于 2023-1-30 23:28 编辑
wintoflash 发表于 2023-1-30 19:26
你没看懂。
------
video_bochs video_cirrus serial hfsplus msdospart parttool lsefimmap lsefisyst ...


后面两个报错不用管了。
一个一直都有的小问题。
内嵌菜单里我没有用insmod。
外置菜单清空了。

看起来有点像grub自己使用insmod的时候,insmod没有加载。

说起来grub-mkimage里的ehci模组就是类似于grub4dos里的USB2驱动吧?

然后链式启动应该是修好了,不过是忘记把生成的efi塞到FAT里了。


作者: wintoflash    时间: 2023-1-31 08:14
本帖最后由 wintoflash 于 2023-1-31 08:19 编辑
求道者 发表于 2023-1-30 23:20
后面两个报错不用管了。
一个一直都有的小问题。
内嵌菜单里我没有用insmod。

这个问题你自己想办法。insmod是在kernel里面的。估计你自己菜单写得有问题。
ehci是usb2.0驱动。grub2里面的ehci/ohci/uhci/ahci驱动都不怎么靠谱。你用官方grub2启动windows,这些驱动没意义。
作者: 求道者    时间: 2023-1-31 09:15
本帖最后由 求道者 于 2023-1-31 10:06 编辑
wintoflash 发表于 2023-1-31 08:14
这个问题你自己想办法。insmod是在kernel里面的。估计你自己菜单写得有问题。
ehci是usb2.0驱动。grub2 ...


我内嵌菜单没用insmod指令,外置菜单已经清空了。
他还是报这个错误。

很多人也说这个USB2.0驱动根本没法用。
一用就不加载设备。
看主线自己能不能抢救一下。
主要是寻思如果grub2的usb2支持如果到位。
那么grub2替换grub4dos需要做的额外努力也会更少。
老机子的BIOS USB经常跑在1.1,超级慢。

然后NTBOOT有移植到主线的mod吗?
作者: wintoflash    时间: 2023-1-31 10:31
求道者 发表于 2023-1-31 09:15
我内嵌菜单没用insmod指令,外置菜单已经清空了。
他还是报这个错误。
主要是寻思如果grub2的usb2支持如果到位。
那么grub2替换grub4dos需要做的额外努力也会更少。
老机子的BIOS USB经常跑在1.1,超级慢。

没map,这些都是白扯,只能启linux,启不了windows。
然后NTBOOT有移植到主线的mod吗?

没有。我写的ntboot就是wimboot套了个壳,根据wim/vhd路径自动修改bcd。
作者: 求道者    时间: 2023-1-31 10:36
wintoflash 发表于 2023-1-31 10:31
没map,这些都是白扯,只能启linux,启不了windows。

没有。我写的ntboot就是wimboot套了个壳,根据 ...

也没,你在USB1.1下用wimboot加载PE也非常慢,usb --init就快多了。
作者: 求道者    时间: 2023-1-31 12:04
wintoflash 发表于 2023-1-31 08:14
这个问题你自己想办法。insmod是在kernel里面的。估计你自己菜单写得有问题。
ehci是usb2.0驱动。grub2 ...
  1. set root='cd0'
  2. search --no-floppy --efidisk-only --label BOOTISO --set root
  3. search --no-floppy --label UFI --set root
  4. set prefix=($root)/BOOT/GRUB2

  5. configfile ($prefix)/grub.cfg
复制代码

这是内嵌菜单。
作者: wintoflash    时间: 2023-1-31 12:11
求道者 发表于 2023-1-31 12:04
这是内嵌菜单。
  1. configfile ($prefix)/grub.cfg
复制代码

这个显然不对吧。$prefix/grub.cfg
作者: 求道者    时间: 2023-1-31 13:23
wintoflash 发表于 2023-1-31 12:11
这个显然不对吧。$prefix/grub.cfg

我换掉试试。
作者: zncs520    时间: 2023-7-18 09:22
学习学习了
作者: zsyloveyp    时间: 2023-7-18 12:54
顶下
作者: nowayer    时间: 2023-12-9 06:17
提示: 作者被禁止或删除 内容自动屏蔽




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