您尚未登录。

#16 2022-08-23 22:04:46

strluck
会员
注册时间: 2022-08-22
帖子: 6

Re: 生成引导文件出错

依云 说:

sudo LANG=C grub-mkconfig -o /boot/grub/grub.cfg 这样跑。

sudo 默认不继承你 shell 里的环境变量,所以你得作为参数告诉它。

相同的错误,它依旧无效

离线

#17 2022-08-23 22:06:54

strluck
会员
注册时间: 2022-08-22
帖子: 6

Re: 生成引导文件出错

puzzle 说:
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 是没有分配的。被我删除了。

离线

#18 2022-08-31 14:21:26

puzzle
会员
注册时间: 2019-01-08
帖子: 13

Re: 生成引导文件出错

依云 说:

好哦,我没有复现……

你单执行 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的中文翻译组写了封邮件
期待维护者的回复

离线

#19 2022-08-31 14:33:21

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,919
个人网站

Re: 生成引导文件出错

啊咧,这个 coreutils 的 printf 竟然不支持指定顺序……我觉得你应该也给 coreutils 的人发封邮件报告一下。

离线

#20 2022-09-02 16:32:07

yi
会员
注册时间: 2022-09-02
帖子: 9

Re: 生成引导文件出错

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

离线

#21 2022-09-02 16:34:10

yi
会员
注册时间: 2022-09-02
帖子: 9

Re: 生成引导文件出错

https://ibb.co/kxmH4CH

最近编辑记录 yi (2022-09-02 16:35:40)

离线

#22 2022-09-02 20:48:46

puzzle
会员
注册时间: 2019-01-08
帖子: 13

Re: 生成引导文件出错

依云 说:

啊咧,这个 coreutils 的 printf 竟然不支持指定顺序……我觉得你应该也给 coreutils 的人发封邮件报告一下。

我尝试理解了许久
好吧 我放弃了
这不是我所能理解的

开源社区的贡献 好难

离线

#23 2022-09-02 20:51:35

puzzle
会员
注册时间: 2019-01-08
帖子: 13

Re: 生成引导文件出错

yi 说:
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 包 专门是这个命令

离线

#24 2022-09-03 20:08:37

puzzle
会员
注册时间: 2019-01-08
帖子: 13

Re: 生成引导文件出错

依云 说:

啊咧,这个 coreutils 的 printf 竟然不支持指定顺序……我觉得你应该也给 coreutils 的人发封邮件报告一下。

那边邮件回复我了
提到你说的这个
不愧是大佬们 一语就道破了问题所在

Wenbin Lv 说:

感谢您报告的 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)

离线

#25 2022-09-03 20:58:03

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,919
个人网站

Re: 生成引导文件出错

原来 bash 也内建了 printf。我只发现 zsh 内建了 printf,支持指定参数顺序(大概是直接用的 glibc 的)。

离线

#26 2022-09-21 17:25:12

linux_beginner
会员
注册时间: 2022-09-21
帖子: 6

Re: 生成引导文件出错

依云 说:

sudo LANG=C grub-mkconfig -o /boot/grub/grub.cfg 这样跑。

sudo 默认不继承你 shell 里的环境变量,所以你得作为参数告诉它。


解决了我的问题,感谢

离线

#27 2022-10-02 22:07:28

Scarecrow928
会员
注册时间: 2022-10-02
帖子: 2

Re: 生成引导文件出错

设置了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)

离线

#28 2022-10-02 23:20:54

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,919
个人网站

Re: 生成引导文件出错

/etc/grub.d/proxifiedScripts/linux

你这是用了什么第三方的东西么?

离线

#29 2022-10-05 09:18:29

Scarecrow928
会员
注册时间: 2022-10-02
帖子: 2

Re: 生成引导文件出错

依云 说:

/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)

离线

#30 2022-11-14 23:16:48

wordlesswind
会员
注册时间: 2022-11-14
帖子: 1

Re: 生成引导文件出错

只需要重新安装 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)

离线

页脚