标准输入:无效参数

Mar*_*mbo 5 partitioning boot grub2 uefi 20.04

我尝试创建一个安装 Ubuntu 20.04 LTS Desktop 64 位的 UEFI 笔式驱动器。
\n该exFAT分区gpt2包含整个 Ubuntu 20.04 LTS 系统映像。
\nFAT32分区gpt1包含以下文件:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 boot\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 grub\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 x86_64-efi\n\xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 exfat.mod\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 EFI\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 BOOT\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 BOOTX64.EFI\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 grub.cfg\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 grubx64.efi\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mmx64.efi\n\n5 directories, 5 files\n
Run Code Online (Sandbox Code Playgroud)\n

其中该grub.cfg文件包含以下行:

\n
insmod exfat\nsearch --no-floppy --set=root --fs-uuid 7026-67D5\nconfigfile /boot/grub/grub.cfg\n
Run Code Online (Sandbox Code Playgroud)\n

Secure Boot方法从改为Deployed ModeAudit Mode,可以从该分区的文件中正确调用该分区grub.cfg的默认文件。\n事实上,会出现正确的安装选项。\n选择选项后,无限循环并按下键我意识到原因是一个未指定的错误:,重复了很多次。\n这个错误的原因可能是什么?exfatgrub.cfgFAT32

UbuntuESCstdin: invalid argument

\n

更新 1:即使完全禁用安全启动,也会出现相同的错误。

\n

更新2:等待一段时间,出现以下消息:

\n
Unable to find a medium container a live file system\nAttempt interactive netboot from a URL?\nyes no (default yes): _\n
Run Code Online (Sandbox Code Playgroud)\n

更新 3:
\n我发现如果分区不是 exFAT,而是 NTFS,则不会出现该问题。由此我推断insmod exfat,尽管命令传递到具有该文件系统的分区,但 initrd.lz 文件不支持 exfat 文件系统。\n事实上,我还执行了其他测试来几乎完全确认这一点:

\n
insmod exfat\nsearch --no-floppy --set=root --fs-uuid 7026-67D5\nchainloader /efi/boot/bootx64.efi\nboot\n
Run Code Online (Sandbox Code Playgroud)\n

我收到错误消息:

\n
Failed to find fs: Unsupported\nFailed to load image \\efi\\boot\\grubx64.efi: Unsupported\nstart_image() returned Unsupported\n
Run Code Online (Sandbox Code Playgroud)\n

如果 exfat 分区中有 Windows 映像而不是 Ubuntu,则引导加载程序可以正确启动。

\n

有没有办法在 bootx64.efi 和 initrd.lz 文件内部实现 exfat 支持?

\n

Win*_*nix 1

来自这个论坛:


这个问题被提出:

[20.655271] usb usb1-port4: couldn't allocate usb_device
Run Code Online (Sandbox Code Playgroud)

几秒钟后,它会以适当的操作系统徽标重新启动,并显示下一个错误:

stdin: invalid argument
Run Code Online (Sandbox Code Playgroud)

...就像 50 个相同的错误...

Unable to find a medium container a live system
Run Code Online (Sandbox Code Playgroud)

尝试从 URL 进行交互式网络启动?


这个解决方案:

  • 将“iommu=soft”插入可启动 USB 中的 /boot/grub/grub.cfg 对我有帮助。

解决了问题。


概括

听起来您遇到了同样的问题,并且相同的解决方案应该有效。