加载论坛时出错,请强制刷新页面重试。

`/proc/cpuinfo` 里为什么有些字段是大写

lqgmeow

如题,首先感谢大佬们,在 Morefine 3a6000 迷你主机上安装 Loong Arch Linux 基本顺利

然后尝试 fastfetch 的时候先是发现仓库里的版本会 sagmentation fault,然后从 Arch x86 仓库抄了一个 PKGBUILD,删掉 yyjson 依赖就能编译运行了(已经提交 PR,不过我只在本机测试

然而 cpu 型号显示是 Unkown,于是看了下源代码,fastfetch 是通过解析 /proc/cpuinfo 识别 cpu 信息的,而 Loong Arch Linux 上 /proc/cpuinfo 里是 Model Name 而不是 x86 各种发行版上的 model name,导致 fastfetch 不识别。还有很多其他的也是大写的,跟 x86 的发行版不一样。这个是有规范的吗,还是随便的吗?


seeseesee

Debian sid的情况和Arch类似,但识别没问题


lqgmeow

seeseesee 我今天试着改了下 fastfetch 源代码,发现是 /proc/cpuinfo 第一行后面空行的问题……它那个 parse 的函数原本就可以处理大小写了。可能 debian 上的 fastfetch 是打了补丁的?我是这么打补丁的,现在在我机器上没问题了

diff --git a/src/detection/cpu/cpu_linux.c b/src/detection/cpu/cpu_linux.c
index 5b948150..d83948b9 100644
--- a/src/detection/cpu/cpu_linux.c
+++ b/src/detection/cpu/cpu_linux.c
@@ -145,7 +145,7 @@ static const char* parseCpuInfo(FILE* cpuinfo, FFCPUResult* cpu, FFstrbuf* physi
     while(getline(&line, &len, cpuinfo) != -1)
     {
         //Stop after the first CPU
-        if(*line == '\0' || *line == '\n')
+        if((*line == '\0' || *line == '\n') && cpu->name.length > 0)
             break;

         (void)(

就是这么干跟 dev 分支是冲突的……下次更新要重写(


seeseesee

lqgmeow 前几天Debian sid更新了fastfetch,结果更新后出现了你在一楼碰到的问题了,看来以前的版本是手工修正过?要彻底改好估计要在上游打补丁。


lqgmeow

seeseesee 当时发帖第二天作者大佬就在 dev 分支更新了:https://github.com/fastfetch-cli/fastfetch/issues/1204
我也把作者的补丁向后移植到2.21.3,合并在了 PR 里 https://github.com/loongarchlinux/extra/pull/11


知识共享许可协议
本站文章除其作者特殊声明外,一律采用CC BY-NC-SA 4.0许可协议进行授权。
进行转载或二次创作时务必以相同协议进行共享,严禁用于商业用途