linux怎么导出内核中的文件?

linux怎么导出内核中的文件?,第1张

linux内核之模块参数及导出符号

1. 模块参数

用 “module_param (参数名,参数类型,参数读 / 写权限) ” 为模块定义一个参数,例如下列代码定义了 1 个整型参数和 1 个字符指针参数:

1 static char *book_name = "dissecting Linux Device Driver"

2 module_param(book_name, charp, S_IRUGO)

3 static int book_num = 4000

4 module_param(book_num, int, S_IRUGO)

在装载内核模块时,用户可以向模块传递参数,形式为 “insmode 模块名 参数名 = 参数值,如果不传递,参数将使用模块内定义的缺省值。参数类型可以是 byte 、 short 、 ushort 、 int 、 uint 、 long 、 ulong 、 charp (字符指针)、 bool 或 invbool (布尔的反),在模块被编译时会将 module_param 中声明的类型与变量定义的类型进行比较,判断是否一致。模块被加载后,在 /sys/module/ 目录下将出现以此模块名命名的目录。在此模块的目录下还将出现 parameters 目录,其中包含一系列以参数名命名的文件节点,这些文件的权限值就是传入module_param ()的 “参数读 / 写权限” ,而文件的内容为参数的值。

insmod命令加载模块后,通过查看 “/var/log/messages” 日志文件可以看到内核的输出:

# tail -n 2 /var/log/messages

tail -n 2表示输入文件的最后2行

2. 导出符号

Linux 的 “/proc/kallsyms” 文件对应着内核符号表,它记录了符号以及符号所在的内存地址。模块可以使用如下宏导出符号到内核符号表中:

EXPORT_SYMBOL( 符号名 )

EXPORT_SYMBOL_GPL( 符号名 )

导出的符号可以被其他模块使用,只需使用前声明一下即可。 EXPORT_SYMBOL_GPL ()只适用于包含 GPL许可权的模块。

如果符号名是“e_symbol”,从 “/proc/kallsyms” 文件中找出 e_symbol 的相关信息:

# grep e_symbol /proc/kallsyms

8000af1c t e_symbol [export_symb]

方法/步骤

打开sqlserver2008,连接成功后,选择需要导出表的数据库--任务---生成脚本

显示:生成和发布脚本窗口--简介(某些可能关闭该页面的,可以省略该步骤),点击下一步

显示:生成和发布脚本窗口--选择对象--按照图片 *** 作即可

显示:生成和发布脚本窗口--设置脚本编写选项--按照图片 *** 作即可

点击完高级以后,d出--高级脚本编写选项,选择常规--要编写的脚本的数据类型--架构和数据   (该步很重要)--选择完点击确定--点击下一步

显示:生成和发布脚本窗口--摘要--下一步--完成

导出方法有很多,这里推荐给你一个最方便的方法:

进入到日志存放目录,假设要导出的日志文件名为 a.log

通过 ifconfig 命令获取服务器 ip

利用python的辅助工具监听80端口,前提是有root权限,命令为:

python -m SimpleHTTPServer 80

直接从服务器ip的80端口下载 a.log 就行:如果本地是windows,通过浏览器访问 http://server_ip/a.log 即可下载;如果本地是linux,通过命令行执行命令 wget http://server_ip/a.log 即可下载


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7540262.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存