在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

netconsole的使用

汽車電子技術(shù) ? 來源:嵌入式與Linux那些事 ? 作者:仲一Linux ? 2023-02-17 15:51 ? 次閱讀

開發(fā)環(huán)境

客戶端

開發(fā)板:FireFly-RK3399

Linux 4.4

IP:192.168.137.110

服務(wù)端

VMware Workstation Pro16,ubuntu 18.04

IP:192.168.137.100

MAC:00:0c:29:c1:9c:ed

netconsole簡(jiǎn)介

netconsole模塊可以讓printk信息(輸出到控制臺(tái)的信息)通過網(wǎng)絡(luò)(UDP)發(fā)送到遠(yuǎn)程主機(jī)。

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

當(dāng)設(shè)備上串口無法使用時(shí),使用netconsole將日志信息保存到遠(yuǎn)程主機(jī)更方便、可行。

netconsole模塊不能用于獲取crash dump,也不能進(jìn)行一般的控制臺(tái)輸入輸出。

netconsole模塊不能獲得網(wǎng)絡(luò)相關(guān)的kernel panic,以及與操作系統(tǒng)啟動(dòng)到網(wǎng)絡(luò)和netconsole模塊啟動(dòng)之間發(fā)生的pnic相關(guān)的內(nèi)核信息。

netconsole編譯

netconsole 可以獨(dú)立編譯為模塊手動(dòng)加載,也可以編譯進(jìn)內(nèi)核自動(dòng)加載,本例使用的是第一種。

編譯為獨(dú)立模塊

netconsole默認(rèn)是沒有編譯進(jìn)內(nèi)核,需要手動(dòng)編譯到內(nèi)核或編譯成模塊。

在內(nèi)核目錄下執(zhí)行make menuconfig 開啟以下選項(xiàng)

Device Drivers > Network device support>Network console logging support

將內(nèi)核重新編譯后燒寫到開發(fā)板上。

手動(dòng)編譯netconsole模塊

make CONFIG_NETCONSOLE=m  -C /home/zhongyi/code/rk3399_linux_release_v2.5.1_20210301/kernel   M=/home/zhongyi/code/rk3399_linux_release_v2.5.1_20210301/kernel/drivers/net  modules CROSS_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-

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

將netconsole編譯進(jìn)內(nèi)核

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

CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y

如果將netconsole編譯進(jìn)內(nèi)核自動(dòng)加載,則需要在內(nèi)核啟動(dòng)參數(shù)中傳遞進(jìn)去,并且還要確保網(wǎng)卡驅(qū)動(dòng)在netconsole驅(qū)動(dòng)前加載。

netconsole加載

將netconsole.ko通過共享目錄發(fā)送到開發(fā)板,給予權(quán)限,這個(gè)需要預(yù)先知道服務(wù)端的IP地址以及MAC地址。

日志服務(wù)器在同一內(nèi)網(wǎng), 直接通過ping獲取服務(wù)器目的MAC:

$ ping -c 1 192.168.1.103 > /dev/null
$ arp -n 192.168.1.103
 Address                  HWtype  HWaddress           Flags Mask            Iface
 192.168.1.103            ether   08:00:46:d4:1d:82   C                     eth0
1234

日志服務(wù)器不在同一內(nèi)網(wǎng), 獲取網(wǎng)關(guān)目的MAC:

$ netstat -rn | grep ^0.0.0.0
 0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
$ ping -c 1 192.168.1.1 > /dev/null
$ arp -n 192.168.1.1
 Address                  HWtype  HWaddress           Flags Mask            Iface
 192.168.1.1              ether   00:0f:66:5b:2a:3c   C

執(zhí)行加載指令

insmod netconsole.ko netconsole=6665@192.168.137.110/eth0,514@192.168.137.100/00:0c:29:c1:9c:ed

各個(gè)參數(shù)含義如下

netconsole=src-port]@[src-ip]/[],[tgt-port]@/[tgt-macaddr]
where src-port      source for UDP packets (defaults to 6665)     #開發(fā)板上的端口,省略的話默認(rèn)為6665
src-ip        source IP to use (interface address)                 # 開發(fā)板上的IP地址
dev           network interface (eth0)                             #開發(fā)板上使用的網(wǎng)卡設(shè)備名
tgt-port      port for logging agent (6666)                        #目的機(jī)器的端口,省略的話默認(rèn)為6666
tgt-ip        IP address for logging agent                         #目的機(jī)器的IP地址
tgt-macaddr   ethernet MAC address for logging agent (broadcast)   #目的機(jī)器的MAC地址

rsyslog服務(wù)端設(shè)置

開啟514端口

客戶端設(shè)置好了,配置rsyslog以在服務(wù)器模式下運(yùn)行

sudo vim /etc/rsyslog.conf

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

# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")

測(cè)試端口是否能通

?  ~ sudo nc -vuz 192.168.137.110 514
Connection to 192.168.137.110 514 port [udp/syslog] succeeded!

創(chuàng)建接收模板

創(chuàng)建一個(gè)模板,指示rsyslog服務(wù)器如何存儲(chǔ)傳入的syslog消息,在GLOBAL DIRECTIVES部分之前添加模板:

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

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

日志接收模板參數(shù)的含義可參考:https://www.dandelioncloud.cn/article/details/1517852831246839810

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

rsyslogd -f /etc/rsyslog.conf -N1

你應(yīng)該看到以下輸出:

rsyslogd: version 8.32.0, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: End of config validation run. Bye.

配置啟動(dòng)文件

以root身份修改/etc/default/rsyslog啟動(dòng)配置文件

RSYSLOGD_OPTIONS="-m 0 -r"
  • -r 選項(xiàng)以允許接受外來日志消息。
  • -x 禁用掉dns記錄項(xiàng)不夠齊全或其他的日志中心的日志。
  • -m 修改syslog的內(nèi)部mark消息寫入間隔時(shí)間(0為關(guān)閉)。例如-m 180,表示每隔180分鐘(每天8次)在日志文件里增加一行時(shí)間戳消息。
  • -h 默認(rèn)情況下,syslog不會(huì)發(fā)送從遠(yuǎn)端接受過來的消息到其他主機(jī),而使用該選項(xiàng),則把該開關(guān)打開,所有接受到的信息都可根據(jù)syslog.conf中定義的@主機(jī)轉(zhuǎn)發(fā)過去。

重啟服務(wù)

重新啟動(dòng)rsyslog服務(wù)以使更改生效:

sudo systemctl restart rsyslog

確認(rèn)服務(wù)是否正在偵聽已配置的端口:

ss -tunelp | grep 514
udp    UNCONN   0        0                 0.0.0.0:514            0.0.0.0:*      ino:178435 sk:2c <->                                                           
udp    UNCONN   0        0                    [::]:514               [::]:*      ino:178436 sk:2d v6only:1 <->                                          
tcp    LISTEN   0        25                0.0.0.0:514            0.0.0.0:*      ino:178439 sk:2e <->                                                           
tcp    LISTEN   0        25                   [::]:514               [::]:*      ino:178440 sk:2f v6only:1 <->

配置Rsyslog防火墻

如果你的ufw防火墻服務(wù)正在運(yùn)行,請(qǐng)?jiān)试Srsyslog防火墻端口:

sudo ufw allow 514/tcp
sudo ufw allow 514/udp

輸出測(cè)試

測(cè)試使用的是SysRq鍵在客戶端輸出內(nèi)核信息。

在開發(fā)板上,修改/etc/sysctl.conf啟動(dòng)SysRq。

kernel.sysrq=1

執(zhí)行下列命令,使修改生效。

sysctl -p

執(zhí)行下列命令向控制臺(tái)輸出內(nèi)核信息。

root@firefly:~/mnt/module# echo h > /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)

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

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

若進(jìn)入192.168.137.110目錄無權(quán)限,則執(zhí)行 sudo chmod 777 192.168.137.110 賦予權(quán)限。

其他監(jiān)聽方法

netcat

在沒有syslogd在運(yùn)行的主機(jī)上可以使用 netcat/socat 接收來自遠(yuǎn)程主機(jī)的消息:

nc -u -l -p <port> / nc -u -l <port>
netcat -u -l -p <port> / netcat -u -l <port>
socat udp-recv:<port> -

舉例

~ sudo  netcat -l -p 514 -u 
[sudo] password for zhongyi: 
[  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 輸出級(jí)別, 設(shè)置輸出level為debug(-n 8):

dmesg -n 8

uboot中的netconsole

uboot下的netconsole類似于kernel下的telnet等網(wǎng)絡(luò)終端功能,將網(wǎng)絡(luò)作為輸入輸出的終端,這樣就便于我們?cè)赑C端通過網(wǎng)絡(luò)登錄設(shè)備uboot中運(yùn)行命令。

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

設(shè)置環(huán)境變量nc,設(shè)置CONFIG_NETCONSOLE_BUFFER_SIZE覆蓋默認(rèn)緩沖區(qū)大小,設(shè)置環(huán)境變量ncip通信對(duì)端ip,格式為:不設(shè)置時(shí)為默認(rèn)值6666,發(fā)送端口和接收端口可以分別設(shè)置,ncinportncoutport

setenv ipaddr 192.168.137.110
setenv nc 'setenv stdout nc;setenv stdin nc'
setenv ncip 192.168.137.100
saveenv
run nc

uboot進(jìn)入netonsole模式,此時(shí)串口控制臺(tái)就沒有輸出了。

在服務(wù)器上執(zhí)行

./tools/netconsole 192.168.137.110

就可以在PC端運(yùn)行uboot命令了。

對(duì)啦,最近重溫操作系統(tǒng)時(shí)發(fā)現(xiàn)了一個(gè)免費(fèi)精品好課,閃客的《Linux0.11源碼趣讀》,剛上線第二季了,這個(gè)課給我感覺像在用看小說的心態(tài)學(xué)操作系統(tǒng)源碼,寫的確實(shí)挺牛的,通俗易懂,直指本源,我自己也跟著收獲了很多。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之Kconfig介紹

    #CONFIG_MACVLAN is not set #CONFIG_IPVLAN is not set #CONFIG_VXLAN = y #CONFIG_NETCONSOLE is not set
    發(fā)表于 01-04 10:18

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之Kconfig介紹

    #CONFIG_NETCONSOLE is not set Makefile文件會(huì)根據(jù)這項(xiàng)配置選擇編譯該功能驅(qū)動(dòng)。 menuconfig menuconfig 此關(guān)鍵字是一個(gè)菜單名稱,該菜單名下有一系列的配置選項(xiàng),只有選中該菜單項(xiàng)
    發(fā)表于 01-06 10:02

    DM368 u*** slave模式,接上PC無反應(yīng)

    2.3 spi_davinci spi_davinci.1: Controller at 0xfec66800 console [netcon0] enabled netconsole
    發(fā)表于 05-28 08:57

    RAMDISK文件系統(tǒng)加載報(bào)錯(cuò)invalid compressed format (err=1)

    DaVinci EMAC Linux version updated 4.0 TI DaVinci EMAC: Installed 1 instances. netconsole
    發(fā)表于 06-21 04:15

    appro 啟動(dòng) 阻塞

    of the University of California netconsole: not configured, aborting PPP generic driver version 2.4.2 PPP Deflate
    發(fā)表于 06-21 12:32

    從網(wǎng)上找的歷程做的啟動(dòng)卡

    ??????????????????????????????????????????????????? netconsole: network logging started????????????????????????????????????????? omap_rtc omap_rtc: setting
    發(fā)表于 06-21 16:17

    基于Appro的 IPNC RDK 5.0版本編譯了一個(gè)內(nèi)核,配置開發(fā)板NFS啟動(dòng)輸出了一堆的東西,請(qǐng)問誰能解釋下這是什么原因?

    ] enabled[ 21.349187] netconsole: network logging started[ 21.450925] PPP generic driver version 2.4.2
    發(fā)表于 06-22 07:12

    ipnc rdk5.1 移植wifi的問題

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

    請(qǐng)問DM368無法進(jìn)入IE怎么辦?

    /slhc.ko': -1 Invalid module format[ 5.437686] netconsole: disagrees about version of symbol
    發(fā)表于 07-25 09:46

    Netconsole實(shí)例源代碼分析

    Netconsole是Linux2.6版內(nèi)核的一個(gè)新的特性。它允許將本機(jī)的dmesg系統(tǒng)信息,通過網(wǎng)絡(luò)的方式傳送到另一臺(tái)主機(jī)上。這樣,就可以實(shí)現(xiàn)遠(yuǎn)程監(jiān)控某臺(tái)機(jī)子的kernel panic信息了。使用起來非常方
    發(fā)表于 04-18 00:11 ?25次下載

    怎樣對(duì)FRC機(jī)器人進(jìn)行編程

      通常,無法使用cout或printf查看在標(biāo)準(zhǔn)輸出流中放入的任何內(nèi)容。我強(qiáng)烈建議您使用NetConsole。它需要最少的設(shè)置,然后您可以將其與驅(qū)動(dòng)程序站一起運(yùn)行,它將顯示您輸出的所有內(nèi)容。它可以是非常有用的工具,有助于診斷出問題所在或?yàn)轳{駛員提供一些反饋。
    的頭像 發(fā)表于 09-26 14:42 ?6150次閱讀
    怎樣對(duì)FRC機(jī)器人進(jìn)行編程

    netconsole的使用簡(jiǎn)介

    netconsole模塊可以讓printk信息(輸出到控制臺(tái)的信息)通過網(wǎng)絡(luò)(UDP)發(fā)送到遠(yuǎn)程主機(jī)。
    的頭像 發(fā)表于 02-17 14:46 ?773次閱讀
    主站蜘蛛池模板: www.xxx.国产| 天天摸天天澡天天碰天天弄| 女人张开腿男人桶| 免费网站日本| 国产亚洲精品仙踪林在线播放| 国模掰开| www.a级片| 天堂资源网| 精品久久天干天天天按摩| 操人网站| 丁香综合激情| 久久久久激情免费观看| 亚洲伦理一区二区| 色五夜婷婷| 毛色毛片| 18女毛片| 在线你懂的视频| 一级毛片看真人在线视频| 4444kk在线看片| 乱欲小说又粗又大| 性天堂网| 欧美zooz人禽交免费观看| 国产一区精品视频| 停停五月天| 性欧美另类| 二区三区视频| 日韩免费看| 国产高清在线视频| 人人爽天天爽夜夜爽qc| 黄色xxxx| 亚洲va久久久噜噜噜久久狠狠 | 久久亚洲精选| 一区二区三区高清视频在线观看 | 4hc44四虎www在线影院男同| 曰本a| 亚洲嫩草影院在线观看| 欧美人成在线观看| 成 黄 色 激 情视频网站| 人人精品| 热re66久久精品国产99热| 手机看片1024国产基地|