dmesg use CST timestamp
痛点说明
当前板子集成的是 busybox dmesg,打印内核日志不支持 CST 时间戳格式,无法与应用层日志时间对齐
root@qualcomm:~# busybox dmesg --help
BusyBox v1.29.2 (2021-07-28 06:25:45 UTC) multi-call binary.
Usage: dmesg [-c] [-n LEVEL] [-s SIZE]
Print or control the kernel ring buffer
-c Clear ring buffer after printing
-n LEVEL Set console logging level
-s SIZE Buffer size
-r Print raw message buffer
时间戳格式
[ 74.247018] overflow FE mux_index 4
[ 74.269371] overflow FE mux_index 4
[ 74.294086] overflow FE mux_index 4
交叉编译 dmesg@util-linux
git clone https://github.com/util-linux/util-linux.git
sudo apt install autopoint autoconf automake libtool
mkdir build
./tools/config-gen all
# --prefix 必须是绝对路径
export PATH=$PATH:<path-to-cross-compile>
./configure --host=aarch64-linux-gnu --prefix=/home/luyang/code/tt/util-linux/build
make dmesg -j8
$ file dmesg
dmesg: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=64098e1379e47231f4f3b1578fa842bc3d1d1251, with debug_info, not strippedfile dmesg
编译报错及解决方案
fatal error: sys/random.h: No such file or directory
`vim lib/randutils.c +30`
修改前:`# include <sys/random.h>`
修改后:`# include </usr/include/linux/random.h>`
结果验证
把 dmesg 推到板子的 /userdata 目录下,然后登录板子进入 /userdata 目录
root@qualcomm:/userdata# while true; do ./dmesg; ./dmesg --time-format iso -c; echo; date; sleep 1; done
Sat Jan 1 00:01:03 CST 2000
[ 74.247018] overflow FE mux_index 4
[ 74.269371] overflow FE mux_index 4
[ 74.294086] overflow FE mux_index 4
[ 74.294564] overflow FE mux_index 4
[ 74.295046] FE overflow 16 mux_index 4 temp_flow 0x10
[ 74.295709] FE overflow 0 mux_index 4 temp_flow 0x0
[ 74.231740] overflow FE mux_index 4
[ 74.247018] overflow FE mux_index 4
[ 74.269371] overflow FE mux_index 4
[ 74.294086] overflow FE mux_index 4
[ 74.294564] overflow FE mux_index 4
[ 74.295046] FE overflow 16 mux_index 4 temp_flow 0x10
[ 74.295709] FE overflow 0 mux_index 4 temp_flow 0x0
2000-01-01T00:01:03,774136+08:00 overflow FE mux_index 4
2000-01-01T00:01:03,789414+08:00 overflow FE mux_index 4
2000-01-01T00:01:03,811767+08:00 overflow FE mux_index 4
2000-01-01T00:01:03,836482+08:00 overflow FE mux_index 4
2000-01-01T00:01:03,836960+08:00 overflow FE mux_index 4
2000-01-01T00:01:03,837442+08:00 FE overflow 16 mux_index 4 temp_flow 0x10
2000-01-01T00:01:03,838105+08:00 FE overflow 0 mux_index 4 temp_flow 0x0