驱动开发的一个难点就是调试,因为应用程序不管怎么弄都不会怎么样,最多不过是段错误。可是驱动程序如果出问题,那么整个系统可能就会崩溃掉。如果有个驱动程序调试时,总是崩溃,那么这时候就应该使用netconsole了。
netconsole是把远程服务器上内核打印的log通过网络传递到本地输出,实时传输过来本地。所以就算驱动使系统崩溃了,本地也会保留一些log,这样就可以方便调试了。
本地操作:
nc -ulp 6699服务器操作:
rmmod netconsolemodprobe netconsole netconsole=@/em2,6699@192.168.0.129/
em2 服务器网卡名(可以ssh进入的)192.168.0.129 本地ip
有一些blog对这个netconsole配置比较复杂,不过都能使用(最好最后面加上本地的mac地址,如果不加的花有可能会让网络死掉)
eg:本地为192.168.0.129,服务器上em1的ip为:192.168.0.128
1、首先在本地上运行命令: nc -ulp 6699
2、然后ssh em1网卡上的ip 进入服务器
3、在服务器中执行命令:modprobe netconsole netconsole=@/em1,6688@192.168.0.129/本地网卡的MAC/
FATAL: Error inserting netconsole (/lib/modules/2.6.32-279.el6.x86