Yuhang Zheng

修改Ubuntu22.04系统图标以及硬件描述

N 人看过

最近一段时间在搞RK3588适配Ubuntu22.04的问题,发现适配之后的系统,在设置界面中的Processor识别不到,另外我也看到过有其他的人修改了上面的Ubuntu的图标,定制成了自己的图片,虽然这些都是不影响功能使用的无关痛痒的问题,但是还是很好奇这个应该是如何修改的。

Screenshot from 2024-11-23 14-15-22

先说说更换Ubuntu22.04系统图标的问题,这个在网上就可以很容易搜到了,链接如下:https://blog.csdn.net/sinat_35773915/article/details/138065266

其实说白了直接替换系统中的文件就可以了:

修改启动界面的logo:

sudo cp 新logo.png /usr/share/plymouth/themes/spinner/watermark.png

修改登陆界面的logo:

sudo cp 新logo.png /usr/share/plymouth/ubuntu-logo.png

修改系统-设置-关于里面的logo

sudo cp 新logo.png /usr/share/pixmaps/ubuntu-logo-icon.png

其实比较麻烦的是修改Processor字段,首先我们需要知道,这个Processor是从那里得到的。经过一番查询,后来找到这个是从/proc/cpuinfo中的model name看到的。

可以看到我们下面是没有这个model name的,所以它这里是显示不出来Processor的。

image-20241123151528978

那么我们应该如何在这里增加一个呢?

直到我看到了Github上的这个提交:https://github.com/Joshua-Riek/linux-rockchip/commit/453cd99e5aa06d6402abae2d6d18ef0ac4194370

可以看到这个作者是修改在cpuinfo信息中增加一个cpu model的信息,该信息是从设备树中的/system路径下获取的cpu,model描述里面的信息,那我们直接也仿照着修改一下就好啦!

diff --git a/arch/arm64/boot/dts/rockchip/OK3588-C-linux.dts b/arch/arm64/boot/dts/rockchip/OK3588-C-linux.dts
index 8ea1203422ac..ff69b0771ae4 100644
--- a/arch/arm64/boot/dts/rockchip/OK3588-C-linux.dts
+++ b/arch/arm64/boot/dts/rockchip/OK3588-C-linux.dts
@@ -2,6 +2,7 @@
 #include "OK3588-C-common.dtsi"
 / {
        model = "Forlinx OK3588 Board";
+       processor = "FET3588-C (Designed by forlinx in BaoDing)";
        compatible = "forlinx,ok3588", "rockchip,rk3588";

        chosen: chosen {
diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c
index e2b1bceebbee..8ae432a30f25 100644
--- a/arch/arm64/kernel/cpuinfo.c
+++ b/arch/arm64/kernel/cpuinfo.c
@@ -24,6 +24,7 @@
 #include <linux/sched.h>
 #include <linux/smp.h>
 #include <linux/delay.h>
+#include <linux/of_platform.h>

 unsigned int system_serial_low;
 EXPORT_SYMBOL(system_serial_low);
@@ -145,6 +146,9 @@ static const char *const compat_hwcap2_str[] = {
 static int c_show(struct seq_file *m, void *v)
 {
        int i, j;
+       struct device_node *np;
+       const char *cpu_model;
+
        bool compat = personality(current->personality) == PER_LINUX32 ||
                      is_compat_task();

@@ -199,6 +203,12 @@ static int c_show(struct seq_file *m, void *v)
                }
                seq_puts(m, "\n");

+               np = of_find_node_by_path("/");
+               if (np) {
+                       if (!of_property_read_string(np, "processor", &cpu_model))
+                               seq_printf(m, "model name\t: %s\n", cpu_model);
+                       of_node_put(np);
+               }
                seq_printf(m, "CPU implementer\t: 0x%02x\n",
                           MIDR_IMPLEMENTOR(midr));
                seq_printf(m, "CPU architecture: 8\n");

接着编译内核更新之后看一下我们的效果吧!

Screenshot from 2024-11-23 15-10-35

image-20241123152249557

其实还有就是关于界面中的Disk Capacity显示为Unknown的问题,这个最终定位到和udisksctl status命令输出的结果有关系,不知道为什么系统中的结果为空。这个就放到后面再去排查吧。

image-20241123153229378