sudo LANG=C grub-mkconfig -o /boot/grub/grub.cfg 这样跑。
sudo 默认不继承你 shell 里的环境变量,所以你得作为参数告诉它。
相同的错误,它依旧无效
离线
strluck 说:复现,而且LANG=C也没能拯救我
$ export LANG=C $ sudo grub-mkconfig -o /boot/grub/grub.cfg 正在生成 grub 配置文件 ... 找到 Linux 镜像:/boot/vmlinuz-linux-zen 找到 initrd 镜像:/boot/intel-ucode.img /boot/initramfs-linux-zen.img Found fallback initrd image(s) in /boot: intel-ucode.img initramfs-linux-zen-fallback.img 找到 Linux 镜像:/boot/vmlinuz-linux-lts 找到 initrd 镜像:/boot/intel-ucode.img /boot/initramfs-linux-lts.img Found fallback initrd image(s) in /boot: intel-ucode.img initramfs-linux-lts-fallback.img 警告: os-prober 将运行以检测其它可引导分区。 将使用 os-prober 的输出,以检测分区中可引导的二进制文件,并为其创建新的启动项。 /usr/share/grub/grub-mkconfig_lib: 第 237 行:printf: “$”:无效格式字符 在
fdisk -l的部分信息
设备 起点 末尾 扇区 大小 类型 /dev/nvme0n1p2 206848 239615 32768 16M Microsoft 保留 /dev/nvme0n1p3 239616 488869887 488630272 233G Microsoft 基本数据 /dev/nvme0n1p4 488869888 490231806 1361919 665M Windows 恢复环境 /dev/nvme0n1p5 490231808 934828031 444596224 212G Linux 文件系统 /dev/nvme0n1p6 934828032 968382463 33554432 16G Linux swap /dev/nvme0n1p7 968382464 972576767 4194304 2G EFI 系统
不过你 EFI 在最后一个分区 我第一次见 那你 /dev/nvme0n1p1 是 esp 吗
efi是我手动分配的,所以它在最后面;/dev/nvme0n1p1 是没有分配的。被我删除了。
离线
好哦,我没有复现……
你单执行 os-prober 命令如何?
看这个帖子后 https://bbs.archlinux.org/viewtopic.php?id=279042
查了下翻译文件
我晓得为啥你没有复现了
你没装win10 。。。
https://translationproject.org/PO-files … 2.zh_CN.po
这个翻译文件中
#: util/grub.d/10_windows.in:85
#, c-format
msgid "Found %s on %s (%s)\\n"
msgstr "在 %2$s (%3$s) 中发现了 %1$s\\n"
我觉得是这里的 $ 在作祟
删除后 我运行正常了
我刚给grub的中文翻译组写了封邮件
期待维护者的回复
离线
啊咧,这个 coreutils 的 printf 竟然不支持指定顺序……我觉得你应该也给 coreutils 的人发封邮件报告一下。
离线
sudo touch /usr/local/bin/grub-mkconfig ; sudo nano /usr/local/bin/grub-mkconfig
LC_ALL=C /bin/bash -c "/usr/bin/grub-mkconfig -o /boot/grub/grub.cfg"
sudo chmod +x /usr/local/bin/grub-mkconfig
sudo grub-mkconfig -o /boot/grub/grub.cfg
离线
最近编辑记录 yi (2022-09-02 16:35:40)
离线
啊咧,这个 coreutils 的 printf 竟然不支持指定顺序……我觉得你应该也给 coreutils 的人发封邮件报告一下。
我尝试理解了许久
好吧 我放弃了
这不是我所能理解的
开源社区的贡献 好难
离线
sudo touch /usr/local/bin/grub-mkconfig ; sudo nano /usr/local/bin/grub-mkconfig
LC_ALL=C /bin/bash -c "/usr/bin/grub-mkconfig -o /boot/grub/grub.cfg"
sudo chmod +x /usr/local/bin/grub-mkconfig
sudo grub-mkconfig -o /boot/grub/grub.cfg
其实把 我觉得如果你既然有了
grub-mkconfig
这个东西 那后面就不用
-o /boot/grub/grub.cfg
了呀
再者 这还有个 aur 包 专门是这个命令
离线
啊咧,这个 coreutils 的 printf 竟然不支持指定顺序……我觉得你应该也给 coreutils 的人发封邮件报告一下。
那边邮件回复我了
提到你说的这个
不愧是大佬们 一语就道破了问题所在
感谢您报告的 bug。我进行了简单的排查,问题如论坛用户“依云”所说,是“coreutils 的 printf 不支持指定顺序”引起的。其实准确地说,打印这个出问题的字符串时调用的是 bash 自带的 printf 命令,不是来自 coreutils 的 /usr/bin/printf,不过两者都不支持指定顺序,这一点和 C 语言的 printf(通常由 glibc 实现)不一样,在国外用户提的问题 https://unix.stackexchange.com/question … ash-printf 中可以看到更详细的例子。
指定顺序的功能可以让翻译更通顺,不过 printf 不支持的话,也没有什么办法,只能尽量在不改变顺序的前提下提供一个比较通顺的翻译,此字符串的翻译我已经改为“发现了 %s,位于 %s (%s)”。
另外,我检查了 grub 翻译文件中所有使用了指定顺序功能的字符串,它们总共使用了三种 printf 实现:
1 grub 自己实现的 printf,在引导阶段使用,因为此时无法使用 glibc 的 printf
2 glibc 的 printf,例如 grub 提供的各种用户空间工具命令调用的 printf 函数
3 bash printf,例如 os-prober 调用的 printf其中只有 2 可以指定顺序。我已经修正了情况 1 和 3 的所有字符串。您可以在 https://translationproject.org/PO-files … 2.zh_CN.po 下载修改过的翻译文件并编译使用,看看问题是否已修正。但是上游可能要等到 grub 下个版本发布时才会使用修改过的翻译文件。
下来就等待 grub 包下次更新了
最近编辑记录 puzzle (2022-09-03 20:09:27)
离线
原来 bash 也内建了 printf。我只发现 zsh 内建了 printf,支持指定参数顺序(大概是直接用的 glibc 的)。
离线
sudo LANG=C grub-mkconfig -o /boot/grub/grub.cfg 这样跑。
sudo 默认不继承你 shell 里的环境变量,所以你得作为参数告诉它。
解决了我的问题,感谢
离线
设置了LANG=C后好像又有了新bug:/
[root@scarecrow-arch scarecrow]# grub-mkconfig -o /boot/grub/grub.cfg
正在生成 grub 配置文件 ...
找到主题:/boot/grub/themes/Xenlism-Arch/theme.txt
找到 Linux 镜像:/boot/vmlinuz-linux-zen
找到 initrd 镜像:/boot/amd-ucode.img /boot/initramfs-linux-zen.img
Found fallback initrd image(s) in /boot: amd-ucode.img initramfs-linux-zen-fallback.img
警告: os-prober 将运行以检测其它可引导分区。将使用 os-prober 的输出,以检测分区中可引导的二进制文件,并为其创建新的启动项。/usr/share/grub/grub-mkconfig_lib: 第 237 行:printf: “$”:无效格式字符在
[root@scarecrow-arch scarecrow]
[root@scarecrow-arch scarecrow]# LANG=C grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found theme: /boot/grub/themes/Xenlism-Arch/theme.txt
Found linux image: /boot/vmlinuz-linux-zen
Found initrd image: /boot/amd-ucode.img /boot/initramfs-linux-zen.img
Found fallback initrd image(s) in /boot: amd-ucode.img initramfs-linux-zen-fallback.img
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Found Windows Boot Manager on /dev/nvme1n1p1@/efi/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for UEFI Firmware Settings ...
/etc/grub.d/proxifiedScripts/linux: line 200: version_find_latest: command not found
只找到两个讨论,但都没啥用
https://bbs.archlinux.org/viewtopic.php?id=279415
https://forum.endeavouros.com/t/latest- … izer/30447
最近编辑记录 Scarecrow928 (2022-10-02 22:09:17)
离线
/etc/grub.d/proxifiedScripts/linux
你这是用了什么第三方的东西么?
离线
/etc/grub.d/proxifiedScripts/linux
你这是用了什么第三方的东西么?
用了grub-customizer,装了个grub皮肤,看起来是grub-customizer的bug,按照这个回复,删除/etc/grub.d/proxifiedScripts文件夹和/etc/grub.d/LS_linux,再运行grub-customizer将重新生成以上两个文件,就没那个问题了
最近编辑记录 Scarecrow928 (2022-10-05 09:19:43)
离线
只需要重新安装 GRUB 软件包:https://wiki.archlinux.org/title/GRUB_(简体中文)#安装
例如
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
再执行
grub-mkconfig -o /boot/grub/grub.cfg
您将得到一个符合设备语言设置的 GRUB 界面。
最近编辑记录 wordlesswind (2022-11-14 23:22:43)
离线