色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

netconsole的使用簡介

嵌入式與Linux那些事 ? 來源:嵌入式與Linux那些事 ? 2023-02-17 14:46 ? 次閱讀

開發環境

客戶端

開發板:FireFly-RK3399

Linux 4.4

IP:192.168.137.110

服務端

VMware Workstation Pro16,ubuntu 18.04

IP:192.168.137.100

MAC0cc1ed

netconsole簡介

netconsole模塊可以讓printk信息(輸出到控制臺的信息)通過網絡(UDP)發送到遠程主機。

與串口控制臺不同,netconsole不需要串口線和串口。另外,它可以輕易地將多臺服務器的內核信息收集到一臺服務器上。

當設備上串口無法使用時,使用netconsole將日志信息保存到遠程主機更方便、可行。

netconsole模塊不能用于獲取crash dump,也不能進行一般的控制臺輸入輸出。

netconsole模塊不能獲得網絡相關的kernel panic,以及與操作系統啟動到網絡和netconsole模塊啟動之間發生的pnic相關的內核信息。

netconsole編譯

netconsole 可以獨立編譯為模塊手動加載,也可以編譯進內核自動加載,本例使用的是第一種。

編譯為獨立模塊

netconsole默認是沒有編譯進內核,需要手動編譯到內核或編譯成模塊。

在內核目錄下執行make menuconfig 開啟以下選項

DeviceDrivers>Networkdevicesupport>Networkconsoleloggingsupport

將內核重新編譯后燒寫到開發板上。

手動編譯netconsole模塊

makeCONFIG_NETCONSOLE=m-C/home/zhongyi/code/rk3399_linux_release_v2.5.1_20210301/kernelM=/home/zhongyi/code/rk3399_linux_release_v2.5.1_20210301/kernel/drivers/netmodulesCROSS_COMPILE=/home/zhongyi/code/rk3399_linux_release_v2.5.1_20210301/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-

之后,就會在模塊目錄下生成netconsole.ko的文件,這個文件就是我們所需的。

將netconsole編譯進內核

如自定義內核啟用netconsole只需將以下內核選項打開即可(編譯為模塊).

CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y

如果將netconsole編譯進內核自動加載,則需要在內核啟動參數中傳遞進去,并且還要確保網卡驅動在netconsole驅動前加載。

netconsole加載

將netconsole.ko通過共享目錄發送到開發板,給予權限,這個需要預先知道服務端的IP地址以及MAC地址。

日志服務器在同一內網, 直接通過ping獲取服務器目的MAC:

$ping-c1192.168.1.103>/dev/null
$arp-n192.168.1.103
AddressHWtypeHWaddressFlagsMaskIface
192.168.1.103ether08461d:82Ceth0
1234

日志服務器不在同一內網, 獲取網關目的MAC:

$netstat-rn|grep^0.0.0.0
0.0.0.0192.168.1.10.0.0.0UG000eth0
$ping-c1192.168.1.1>/dev/null
$arp-n192.168.1.1
AddressHWtypeHWaddressFlagsMaskIface
192.168.1.1ether00662a:3cC

執行加載指令

insmodnetconsole.konetconsole=6665@192.168.137.110/eth0,514@192.168.137.100/00299c:ed

各個參數含義如下

netconsole=src-port]@[src-ip]/[],[tgt-port]@/[tgt-macaddr]
wheresrc-portsourceforUDPpackets(defaultsto6665)#開發板上的端口,省略的話默認為6665
src-ipsourceIPtouse(interfaceaddress)#開發板上的IP地址
devnetworkinterface(eth0)#開發板上使用的網卡設備名
tgt-portportforloggingagent(6666)#目的機器的端口,省略的話默認為6666
tgt-ipIPaddressforloggingagent#目的機器的IP地址
tgt-macaddrethernetMACaddressforloggingagent(broadcast)#目的機器的MAC地址

rsyslog服務端設置

開啟514端口

客戶端設置好了,配置rsyslog以在服務器模式下運行

sudovim/etc/rsyslog.conf

取消注釋udp和tcp端口綁定的行:

#providesUDPsyslogreception
module(load="imudp")
input(type="imudp"port="514")

#providesTCPsyslogreception
module(load="imtcp")
input(type="imtcp"port="514")

測試端口是否能通

?~sudonc-vuz192.168.137.110514
Connectionto192.168.137.110514port[udp/syslog]succeeded!

創建接收模板

創建一個模板,指示rsyslog服務器如何存儲傳入的syslog消息,在GLOBAL DIRECTIVES部分之前添加模板:

$templateremote-incoming-logs,"/var/log/%HOSTNAME%/%fromhost-ip%-%$YEAR%-%$MONTH%-%$DAY%.log
*.*?remote-incoming-logs
&~

收到的日志將使用上面的模板進行解析并存儲在目錄/var/log/中,文件命名遵循約定:%HOSTNAME%/%fromhost-ip%-%$YEAR%-%$MONTH%-%$DAY%.log。

完成后保存并關閉文件。然后,使用以下命令檢查Rsyslog配置是否存在語法錯誤:

rsyslogd-f/etc/rsyslog.conf-N1

你應該看到以下輸出:

rsyslogd:version8.32.0,configvalidationrun(level1),masterconfig/etc/rsyslog.conf
rsyslogd:Endofconfigvalidationrun.Bye.

配置啟動文件

以root身份修改/etc/default/rsyslog啟動配置文件

RSYSLOGD_OPTIONS="-m0-r"

-r 選項以允許接受外來日志消息。

-x 禁用掉dns記錄項不夠齊全或其他的日志中心的日志。

-m 修改syslog的內部mark消息寫入間隔時間(0為關閉)。例如-m 180,表示每隔180分鐘(每天8次)在日志文件里增加一行時間戳消息。

-h 默認情況下,syslog不會發送從遠端接受過來的消息到其他主機,而使用該選項,則把該開關打開,所有接受到的信息都可根據syslog.conf中定義的@主機轉發過去。

重啟服務

重新啟動rsyslog服務以使更改生效:

sudosystemctlrestartrsyslog

確認服務是否正在偵聽已配置的端口:

ss-tunelp|grep514
udpUNCONN000.0.0.0:5140.0.0.0:*ino:178435sk:2c<->
udpUNCONN00[::]:514[::]:*ino:178436sk:2dv6only:1<->
tcpLISTEN0250.0.0.0:5140.0.0.0:*ino:178439sk:2e<->
tcpLISTEN025[::]:514[::]:*ino:178440sk:2fv6only:1<->

配置Rsyslog防火墻

如果你的ufw防火墻服務正在運行,請允許rsyslog防火墻端口:

sudoufwallow514/tcp
sudoufwallow514/udp

輸出測試

測試使用的是SysRq鍵在客戶端輸出內核信息。

在開發板上,修改/etc/sysctl.conf啟動SysRq。

kernel.sysrq=1

執行下列命令,使修改生效。

sysctl-p

執行下列命令向控制臺輸出內核信息。

root@firefly:~/mnt/module#echoh>/proc/sysrq-trigger
[10224.626165]sysrq:SysRq:HELP:loglevel(0-9)reboot(b)crash(c)terminate-all-tasks(e)memory-full-oom-kill(f)kill-all-tasks(i)thaw-filesystems(j)sak(k)show-backtrace-all-active-cpus(l)show-memory-usage(m)nice-all-RT-tasks(n)poweroff(o)show-registers(p)show-all-timers(q)unraw(r)sync(s)show-task-states(t)unmount(u)force-fb(V)show-blocked-tasks(w)dump-ftrace-buffer(z)

在服務器的/var/log/192.168.137.110目錄下即可看到生成的日志文件。

?192.168.137.110cat192.168.137.110-2022-10-16.log
2022-10-16T2254.777180+08:00192.168.137.110[10224.626165]sysrq:SysRq:
2022-10-16T2254.777180+08:00192.168.137.110loglevel(0-9)
2022-10-16T2254.777180+08:00192.168.137.110[10224.626165]sysrq:SysRq:
2022-10-16T2254.777180+08:00192.168.137.110loglevel(0-9)
2022-10-16T2254.777180+08:00192.168.137.110reboot(b)
2022-10-16T2254.777180+08:00192.168.137.110crash(c)
2022-10-16T2254.777180+08:00192.168.137.110reboot(b)
2022-10-16T2254.777180+08:00192.168.137.110crash(c)
2022-10-16T2254.777180+08:00192.168.137.110terminate-all-tasks(e)
2022-10-16T2254.777180+08:00192.168.137.110terminate-all-tasks(e)
2022-10-16T2254.777180+08:00192.168.137.110memory-full-oom-kill(f)
2022-10-16T2254.777180+08:00192.168.137.110memory-full-oom-kill(f)
2022-10-16T2254.777180+08:00192.168.137.110kill-all-tasks(i)
2022-10-16T2254.777180+08:00192.168.137.110kill-all-tasks(i)
2022-10-16T2254.777180+08:00192.168.137.110thaw-filesystems(j)
2022-10-16T2254.777180+08:00192.168.137.110thaw-filesystems(j)
2022-10-16T2254.777180+08:00192.168.137.110sak(k)
2022-10-16T2254.777180+08:00192.168.137.110sak(k)
2022-10-16T2254.777180+08:00192.168.137.110show-backtrace-all-active-cpus(l)
2022-10-16T2254.777180+08:00192.168.137.110show-backtrace-all-active-cpus(l)
2022-10-16T2254.777180+08:00192.168.137.110show-memory-usage(m)
2022-10-16T2254.777180+08:00192.168.137.110show-memory-usage(m)
2022-10-16T2254.777180+08:00192.168.137.110nice-all-RT-tasks(n)
2022-10-16T2254.777180+08:00192.168.137.110nice-all-RT-tasks(n)
2022-10-16T2254.777180+08:00192.168.137.110poweroff(o)
2022-10-16T2254.777180+08:00192.168.137.110poweroff(o)
2022-10-16T2254.777180+08:00192.168.137.110show-registers(p)
2022-10-16T2254.777180+08:00192.168.137.110show-registers(p)
2022-10-16T2254.777180+08:00192.168.137.110show-all-timers(q)
2022-10-16T2254.777180+08:00192.168.137.110show-all-timers(q)
2022-10-16T2254.777180+08:00192.168.137.110unraw(r)
2022-10-16T2254.777180+08:00192.168.137.110unraw(r)
2022-10-16T2254.777180+08:00192.168.137.110sync(s)
2022-10-16T2254.777180+08:00192.168.137.110sync(s)
2022-10-16T2254.777180+08:00192.168.137.110show-task-states(t)
2022-10-16T2254.777180+08:00192.168.137.110show-task-states(t)
2022-10-16T2254.777180+08:00192.168.137.110unmount(u)
2022-10-16T2254.777180+08:00192.168.137.110unmount(u)
2022-10-16T2254.777180+08:00192.168.137.110force-fb(V)
2022-10-16T2254.777180+08:00192.168.137.110force-fb(V)
2022-10-16T2254.777180+08:00192.168.137.110show-blocked-tasks(w)
2022-10-16T2254.777180+08:00192.168.137.110show-blocked-tasks(w)
2022-10-16T2254.900989+08:00192.168.137.110dump-ftrace-buffer(z)
2022-10-16T2254.900989+08:00192.168.137.110dump-ftrace-buffer(z)
2022-10-16T2254.900989+08:00192.168.137.110

若進入192.168.137.110目錄無權限,則執行 sudo chmod 777 192.168.137.110 賦予權限。

其他監聽方法

netcat

在沒有syslogd在運行的主機上可以使用 netcat/socat 接收來自遠程主機的消息:

nc-u-l-p/nc-u-l
netcat-u-l-p/netcat-u-l
socatudp-recv:-

舉例

~sudonetcat-l-p514-u
[sudo]passwordforzhongyi:
[263.748032]sysrq:SysRq:HELP:[263.748032]sysrq:SysRq:HELP:loglevel(0-9)loglevel(0-9)reboot(b)reboot(b)crash(c)crash(c)terminate-all-tasks(e)terminate-all-tasks(e)memory-full-oom-kill(f)memory-full-oom-kill(f)kill-all-tasks(i)kill-all-tasks(i)thaw-filesystems(j)thaw-filesystems(j)sak(k)sak(k)show-backtrace-all-active-cpus(l)show-backtrace-all-active-cpus(l)show-memory-usage(m)show-memory-usage(m)nice-all-RT-tasks(n)nice-all-RT-tasks(n)poweroff(o)show-registers(p)poweroff(o)show-registers(p)show-all-timers(q)show-all-timers(q)unraw(r)sync(s)show-task-states(t)unraw(r)sync(s)show-task-states(t)unmount(u)force-fb(V)unmount(u)force-fb(V)show-blocked-tasks(w)show-blocked-tasks(w)dump-ftrace-buffer(z)dump-ftrace-buffer(z)

dmesg

-n/--console-level 控制kernel message console 輸出級別, 設置輸出level為debug(-n 8):

dmesg-n8

uboot中的netconsole

uboot下的netconsole類似于kernel下的telnet等網絡終端功能,將網絡作為輸入輸出的終端,這樣就便于我們在PC端通過網絡登錄設備uboot中運行命令。

uboot下netconsole的實現在drivers/net/netconsole.c中,uboot開啟netconsole只需要在配置文件configs/firefly-rk3399_defconfig加入CONFIG_NETCONSOLE=y 即可。重新編譯uboot,燒寫到設備上。

設置環境變量nc,設置CONFIG_NETCONSOLE_BUFFER_SIZE覆蓋默認緩沖區大小,設置環境變量ncip為通信對端ip,格式為:,不設置時為默認值6666,發送端口和接收端口可以分別設置,ncinport和ncoutport,

setenvipaddr192.168.137.110
setenvnc'setenvstdoutnc;setenvstdinnc'
setenvncip192.168.137.100
saveenv
runnc

uboot進入netonsole模式,此時串口控制臺就沒有輸出了。

在服務器上執行

./tools/netconsole192.168.137.110

就可以在PC端運行uboot命令了。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9681

    瀏覽量

    87260
  • UDP協議
    +關注

    關注

    0

    文章

    70

    瀏覽量

    13036
  • Uboot
    +關注

    關注

    4

    文章

    126

    瀏覽量

    28869
  • LINUX內核
    +關注

    關注

    1

    文章

    317

    瀏覽量

    22176
  • RK3399
    +關注

    關注

    2

    文章

    212

    瀏覽量

    25655

原文標題:【調試】netconsole的使用

文章出處:【微信號:嵌入式與Linux那些事,微信公眾號:嵌入式與Linux那些事】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    ipnc rdk5.1 移植wifi的問題

    dmesg | tail [ 6.099604] netconsole: Unknown symbol config_group_init (err 0) [ 6.103494] netconsole
    發表于 06-22 05:11

    DAC簡介

    文章目錄一、DAC簡介一、DAC簡介
    發表于 08-09 08:18

    TraceX使用簡介

    TraceX使用簡介TraceX 軟件生成跟蹤bufTrace APItx_trace_enabletx_trace_enabletx_trace_event_filtertx_trace_event_unfiltertx_trace_disabletx_trace_isr_enter_inserttx_trace
    發表于 02-22 06:59

    FPGA簡介

    (06)FPGA資源評估1.1 目錄1)目錄2)FPGA簡介3)Verilog HDL簡介4)FPGA資源評估5)結語1.2 FPGA簡介FPGA(Field Programmable Gate
    發表于 02-23 06:31

    NoOs簡介

    NoOs文章目錄NoOs簡介代碼目錄API 說明移植快速上手更多示例License簡介NoOs 名字的寓意取自于:“NoOs is not an operating system”。NoOs 的目標是提供類似RTOS的開發方式,代碼量比.
    發表于 03-01 07:52

    電感元件簡介與展望

    電感元件簡介與展望 電感元件原理,磁性鐵電材料,磁性電感元件分類,電感元件制程簡介,電感元件規格與應用。
    發表于 11-20 14:19 ?21次下載

    ANOTO技術簡介

    ANOTO技術簡介 一、Anoto技術簡介 Anoto技術主要體現為三個組成部分:數碼紙、數碼筆及Anoto軟件平臺。 二、數碼紙
    發表于 09-17 18:11 ?3472次閱讀
    ANOTO技術<b class='flag-5'>簡介</b>

    手機簡介

    手機簡介
    發表于 12-19 10:27 ?701次閱讀

    Windows CE簡介、特點及應用

    Windows CE簡介、特點及應用 一、Windows CE簡介  
    發表于 01-11 08:43 ?4525次閱讀

    Netconsole實例源代碼分析

    Netconsole是Linux2.6版內核的一個新的特性。它允許將本機的dmesg系統信息,通過網絡的方式傳送到另一臺主機上。這樣,就可以實現遠程監控某臺機子的kernel panic信息了。使用起來非常方
    發表于 04-18 00:11 ?25次下載

    ISE10.1使用簡介

    ISE10.1使用簡介 ISE10.1使用簡介
    發表于 02-18 18:16 ?9次下載

    Proteus示波器簡介

    Proteus 中示波器的操作 簡介簡介基于 proteus7.8 版本
    發表于 03-22 11:19 ?15次下載

    POE簡介

    POE簡介
    發表于 11-01 08:27 ?0次下載
    POE<b class='flag-5'>簡介</b>

    FST 簡介

    FST 簡介
    發表于 11-14 21:08 ?0次下載
    FST <b class='flag-5'>簡介</b>

    netconsole的使用

    netconsole模塊可以讓printk信息(輸出到控制臺的信息)通過網絡(UDP)發送到遠程主機。
    的頭像 發表于 02-17 15:51 ?576次閱讀
    主站蜘蛛池模板: 日韩特黄特色大片免费视频 | 精品国产国偷自产在线观看 | 一区二区三区国产 | 99国产精品久久人妻 | 国内久久久久影院精品 | 亚洲另类国产综合在线 | 爱情岛论坛网亚洲品质 | 日韩人妻无码专区一本二本 | 久久亚洲AV成人无码动态图 | 日韩免费一区 | 亚洲精品久久久久一区二区三 | 中文字幕在线不卡精品视频99 | 色多多污污在线播放免费 | 国产啪视频在线播放观看 | 国语大学生自产拍在线观看 | 一级做a爰片久久毛片一 | 亚洲 欧美无码原创区 | 亚洲一区自拍高清亚洲精品 | 久久AV喷吹AV高潮欧美 | 日本2021免费一二三四区 | 亚洲国产欧美日韩在线一区 | 亚洲国产AV精品一区二区蜜芽 | 亚洲AV无码乱码国产麻豆P | av亚洲2017色天堂 | 色老头色老太aaabbb | 娇妻被朋友玩得呻吟在线电影 | 手机伊在人线香蕉2 | 色cccwww| 99久久人妻无码精品系列性欧美 | 又大又硬又爽免费视频 | 亚洲乱色视频在线观看 | 成人小视频在线免费观看 | 肉欲横流(NP高H) | 黄色三级视频在线观看 | 麻生希第一部快播 | 一级毛片在线免费视频 | 欧美97色伦影院在线观看 | 国产精品一区第二页 | 乌克兰粉嫩摘花第一次 | 一级毛片全部免 | 人妻超级精品碰碰在线97视频 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品