遮蔽核心啟動列印資訊

2021-10-09 10:34:20 字數 2915 閱讀 7077

最近做的4412板子終於經過測試形成產品,在這之前需要把核心啟動過程中的列印資訊去掉,並且更換啟動logo,下面講講自己去掉列印資訊的過程。

一 去掉列印資訊方法很多,我使用乙個相對比較簡單的,就是將下面選項的[*]去掉

device drivers  ---> 

character devices  --->

[* ]   support for console on virtual terminal 

這樣printk的列印資訊就不會輸出在顯示器或lcd上。

將列印資訊去掉後,莫名其妙的會出現因為讀取檔案系統失敗而啟動不了的情況,報錯:kernel panic - not syncing: vfs。根據網上查詢到的資料,因為系統啟動過程中,磁碟emmc的初始化和讀取檔案系統是在兩個不同的執行緒中進行的,遮蔽掉列印資訊後,主線程,及掛在檔案系統的執行緒執行時間縮短,以至於當主線程準備掛載檔案系統的時候,emmc的初始化還沒有完成,所以啟動會失敗。這個時候我們可以再uboot的啟動引數中加入rootdelay=1,延遲系統掛在檔案系統的時間,從而使系統順利啟動。

其實還有一種更簡單的方法,不僅能將核心的列印資訊遮蔽掉,而且使用者態的配置列印資訊也能遮蔽,就是在uboot引數中將顯示器console=/dev/null,注意不要改動串列埠的console,否則無法使用串列埠看到列印資訊進行除錯。

二 去掉字元介面的游標

在核心的當前目錄進入到drivers/video/console/fbcon.c 檔案

將static void fb_flashcursor(void *private)   和 static void fbcon_cursor(struct vc_data *vc, int mode) 裡的內容注釋掉,使之變成空函式

三 接下來建立自己的啟動logo,方法如下

建立logo:

1、核心預設的logo為drivers/video/logo/logo_linux_clut224.ppm

file logo_linux_clut224.ppm

先得到的大小,然後再用gimp等工具建立乙個同樣大小的png

2、把自己建立的png轉換為只有224色的ppm

pngtopnm logo.png | ppmquant -fs 224 | pnmtoplainpnm > logo_linux_clut224.ppm

如果沒有以上的轉換命令請安裝netpbm工具包

3、覆蓋原來的logo_linux_clut224.ppm檔案,若有logo_linux_clut224.o和logo_linux_clut224.c檔案則刪除

核心配置:

device drivers ->

graphics support ->

[*] support for frame buffer devices

[*] vesa vga graphics support

console display driver support ->

[*] video mode selection support

[*] framebuffer console support

[*]select compiled-in fonts

[*]vga 8x16 font

logo configuration->

[*]bootup logo

[*] standard 224-color linux logo

重新編譯核心

logo居中:

1、設定logo在螢幕中的位置

vi drivers/video/fbmem.c

找到"fb_show_logo_line"函式,把

image.dx = 0;

image.dy = y;

改為image.dx = (info->var.xres/2) - (610/2);

image.dy = (info->var.yres/2) - (206/2);

[注:info->var.xres和info->var.yres是解析度大小

610和206是logo的大小]2、

vi drivers/video/console/fbcon.c

找到"fbcon_prepare_logo"函式,在

logo_height = fb_prepare_logo(info, ops->rotate);

後面加上

logo_height += (info->var.yres/2) - (206/2);

新增新:

在makefile中有這麼一句:extra-y += $(call logo-cfiles,_clut224,ppm)

它的意思是在當前找到以"_clut224"結尾的ppm,然後根據它生成.c檔案,所以新增新的名可以

類似這樣:logo_linux_sullg_clut224.ppm

1.makefile,加入一行

obj-$(config_logo_linux_sullg_clut224)  += logo_linux_sullg_clut224.o

2.kconfig,加入

config logo_linux_sullg_clut224

bool "standard 224-color linux logo for sullg"

default y

3.logo.c,加入

extern const struct linux_logo logo_linux_sullg_clut224;

在"fb_find_logo"中找到"#ifdef config_logo_linux_clut224",在其後加入:

#ifdef config_logo_linux_sullg_clut224

logo = &logo_linux_sullg_clut224;

#endif

linux核心 設定列印資訊

有時除錯核心模組,列印資訊太多了,可以通過修改 proc sys kernel printk檔案內容來控制。預設設定是6 4 1 7 cat proc sys kernel printk 7 4 1 7 該檔案有四個數字值,它們根據日誌記錄訊息的重要性,定義將其傳送到何處。關於不同日誌級別的更多資訊...

WINCE 串列埠列印資訊的遮蔽與開啟

第一種 將下面這句 加入到驅動所在目錄中的sources檔案中即可 cdefines cdefines ddebug 第二種 undef debugmsg define debugmsg x,s nkdbgprintfw s 這樣這個驅動檔案裡的所有除錯資訊都會列印出來,並且不理會debugzone...

定時列印資訊

class cl time event definition.public section.class methods auto exe for event finished of cl gui timer importing sender.endclass.cl time event defini...