Weston应用案例

Weston应用案例

本文档涉及案例包括:

•          systemctl 命令的使用

•          Weston 桌面的使能与关闭

•          将启动log打印在开发板屏幕上

•          Kernel启动logo的定制替换

1.     预定开发板

2.     systemctl 命令的使用

systemctl是linux 系统管理工具集Systemd的主要命令。

例如对系统的管理,在云实验室的板子以下命令,会看到对应的现象。

systemctl reboot  重启系统

systemctl poweroff 关机, 关机后点击下面的Reset-EVK图标重新给开发板上电

system suspend 让系统进入suspend状态

关机和进入suspend后都需要点击下面的Reset-EVK按钮重启开发板。

还有用于管理systemd里各种服务的启动、停止、重启、查看状态等:

systemctl enable

systemctl start

systemctl status

systemctl stop

systemctl kill

systemctl restart

systemctl analyze

其中systemctl-analyze可以用于分析启动耗时,具体参看《系统启动时间分析案例》。

2.     Weston 桌面的使能与关闭

systemctl stop weston 关闭weston桌面,可以看到屏幕变黑了


systemctl start weston 使能weston桌面,如下图

3.     将启动log打印在开发板屏幕上

使用fgconsole命令查看开发板屏幕对应的tty序号。

root@imx8mpevk:~# fgconsole

7

第一次启动板子时,在dmesg中找到kernel cmdline

console=ttymxc1,115200 root=/dev/nfs ip=dhcp nfsroot=192.168.100.250:/opt/REAL/NFS/IMX8MPEVK-4-root,v3,tcp

修改defconfig文件使能屏幕作为console:

diff --git a/arch/arm64/configs/imx_v8_defconfig b/arch/arm64/configs/imx_v8_defconfig

index 85762b37006f..16d8a67b5bd3 100644

--- a/arch/arm64/configs/imx_v8_defconfig

+++ b/arch/arm64/configs/imx_v8_defconfig

@@ -1105,3 +1105,5 @@ CONFIG_CORESIGHT_STM=m

CONFIG_CORESIGHT_CPU_DEBUG=m

CONFIG_CORESIGHT_CTI=m

CONFIG_MEMTEST=y

+CONFIG_CMDLINE_FORCE=y

+CONFIG_CMDLINE="console=tty7 console=tty0,115200 earlycon dtb=imx8mp-evk.dtb root=/dev/mmcblk1p2 rootwait rw"

按照上面的代码修改后,重新配置并编译代码

make imx_v8_defconfig

make -j$(nproc)

将编译好的内核Image上传到云实验室开发板tftp目录(参考《编译内核镜像并在云实验室开发板上运行.pdf》)

点击Reset-EVK按钮,启动过程中可以看到log打印在板子的屏幕上。但是启动后不能输入root来login。需要做如下修改并重启开发板:

root@imx8mpevk:~# vi /etc/systemd/system/weston.service

[Unit]

Description=Weston Wayland Compositor

After=graphical.target

[Service]

Type=simple  ExecStart=/usr/bin/weston --tty=7

Restart=always

这样电脑调试串口终端和板子屏幕上的终端都可以输入命令,如上图1和2的位置。

5.     Kernel启动logo的定制替换

Kernel启动过程中,会出现四个小企鹅(对于4核8MP),在实际应用中,希望替换成自己制作的logo。

由于kernel的logo格式是ppm的,所以要将一般的bmp图片转换成ppm格式,首先要有一台ubuntu PC,安装格式转换工具:

sudo apt update

sudo apt install netpbm

比如我们用u-boot里的图片freescale.bmp

git clone https://github.com/nxp-imx/uboot-imx.git

cp uboot-imx/tools/logos/freescale.bmp ~/

执行图片转换:

bmptopnm freescale.bmp > logo_linux.pnm

pnmquant 224 logo_linux.pnm > logo_linux_clut224.pnm

pnmtoplainpnm logo_linux_clut224.pnm > logo_linux_clut224.ppm

rm logo_linux.pnm logo_linux_clut224.pnm

默认情况下,kernel启动过程中四个小企鹅是和cpu 核数相关,所以需要修改代码,让我们的新logo只显示一份,kernel源码做如下修改并重新编译(参考《编译内核镜像并在云实验室开发板上运行.pdf》):

diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c

index e24b29c4fa0f..74122612f863 100644

--- a/drivers/video/fbdev/core/fbmem.c

+++ b/drivers/video/fbdev/core/fbmem.c

@@ -693,7 +693,7 @@ int fb_show_logo(struct fb_info *info, int rotate)

               return 0;

       count = fb_logo_count < 0 ? num_online_cpus() : fb_logo_count;

-       y = fb_show_logo_line(info, rotate, fb_logo.logo, 0, count);

+       y = fb_show_logo_line(info, rotate, fb_logo.logo, 0, 1);

       y = fb_show_extra_logos(info, y, rotate);

       return y;

编译后上传新镜像并重新运行,效果如下,可以看到kernel的小企鹅已替换为我们制作的logo。

 

Weston应用案例