修改Ubuntu22.04系统图标以及硬件描述
最近一段时间在搞RK3588适配Ubuntu22.04的问题,发现适配之后的系统,在设置界面中的Processor识别不到,另外我也看到过有其他的人修改了上面的Ubuntu的图标,定制成了自己的图片,虽然这些都是不影响功能使用的无关痛痒的问题,但是还是很好奇这个应该是如何修改的。
先说说更换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
的。
那么我们应该如何在这里增加一个呢?
直到我看到了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");
接着编译内核更新之后看一下我们的效果吧!
其实还有就是关于界面中的Disk Capacity
显示为Unknown的问题,这个最终定位到和udisksctl status
命令输出的结果有关系,不知道为什么系统中的结果为空。这个就放到后面再去排查吧。