Linux内核调试和工具使用

上传人:jiups****uk12 文档编号:40027376 上传时间:2018-05-22 格式:DOC 页数:84 大小:1.17MB
返回 下载 相关 举报
Linux内核调试和工具使用_第1页
第1页 / 共84页
Linux内核调试和工具使用_第2页
第2页 / 共84页
Linux内核调试和工具使用_第3页
第3页 / 共84页
Linux内核调试和工具使用_第4页
第4页 / 共84页
Linux内核调试和工具使用_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《Linux内核调试和工具使用》由会员分享,可在线阅读,更多相关《Linux内核调试和工具使用(84页珍藏版)》请在金锄头文库上搜索。

1、Linux 内核调试和工具使用内核调试和工具使用1. 摘要摘要Linux 内核调试跟普通用户态 c 程序调试的工作有点不同,如果所添加或修改代码是 以模块形式加载于内核,则除了编码过程中包含的头文件、各种锁、信号量不同外,跟用 户态的 c 程序的调试工作也没什么差别;但如果所修改代码是必须直接加入内核,并且会 随 linux 系统启动而启动,则为了更容易调试,免于因代码错误系统死机而无法获得 bug 环境,就得使用 kgdb 远程调试或通过串口信将打印信息打印到另一台机子上。本文主要 介绍在虚拟机上进行 linux 内核调试时一些常用工具的使用和可能经常会遇到的一些问题 的解决方法。编写此份文

2、档的目的是为了不让一部分同事对 linux 内核编译从未知开始摸 索(将花费大量时间) ,提高工作效率。本文档知识量不高,主要是针对从未接触过 linux 内核编码的同事使用。2. Linux 内核中编码注意项事内核中编码注意项事1.不同版本的内核源码,相同模块中的部分代码可能不同,如一些头文件或接口所在 位置或参数可能不同,因此在编码前要确定在哪一个版本中编码,否者在不同版本进行代 码移植时出现莫名其妙的 bug 是件令人头痛的事情。 Linux 的内核源码放在/usr/src/ 或 /usr/src/kernels 中,查看当前系统所使用的内核的命 令是: uname r3. 调试相关工具

3、使用简介调试相关工具使用简介3.1. samba 工具共享文件夹工具共享文件夹Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器 及客户端程序构成。 samba 是一个工具套件,在 Unix 上实现 SMB(Server Message Block)协议,或者称之为 NETBIOS/LanManager 协议.SMB 协议通常是被 windows 系列用来实现磁盘和打印机共享. 1.安装 samba 工具时,首先要确保虚拟机与 pc 能够相互 ping 通,虚拟机 有自己的的 ip,同时虚拟机的连接模式是 bridged,虚拟机不能上外网没关系。 Pc

4、:虚拟机:2.如果是 redhat 的 linxu 系统,一般都装好了 samba 的图形界面软件,我用的是 centos,是 redhat 其中一个版本,所以也有带。如果没有装这个软件,可以到网上下载, 安装资料很多,也有命令操作的,但比较不方便。4.在打开 samba 服务器软件中进行简单的设置,指定要共享的目录,在“访问”页中 可以设置访问密码,如果只在自己电脑使用也可以不设置。5.注销下用户(虚拟机中的 linux),然后在服务配置中启动 samba 的服务,在 smb 的框框 打勾并启动它:6.这时候在 pc 的 windows 系统就能访问到虚拟机共享的目录了,在我的电脑-工具栏-

5、映 射网络驱动器中将共享目录映射成一个网络驱动器,就可以像本地磁盘一样访问了:3.2. 使用使用 VMware-tools 工具共享工具共享VMmware 自带一个工具可实现虚拟机系统与 pc 系统进行文件共享,无论虚拟机装的 是 linux 系统还是 windows 或其他系统。不过要实现该功能前必须确定 Vmware 软件所在 目录有对应系统 vmare-tools 的镜像文件,如 linux.iso。下面介绍如何实现虚拟机 linux 系 统与 pc 进行文件共享方法。 1. 准备工作在虚拟机 linux 系统启动后,选择菜单 VM-Install VMware Tools 将安装文件

6、linux.iso 载入 光驱,这时在 linux 系统中的光盘驱动器会显示出 Vmware-tools 的安装软件包,例如 VMwareTools-8.1.4-227600.tar.gz(不同版本文件名略有不同) 。2. 安装软件包注意应该安装后者,即 VMwareTools-8.1.4-227600.tar.gz。打开终端,在命令行中通过 命令进行安装。 (1) 将软件包拷贝到临时文件夹 cp VMwareTools-5.5.2-29772.tar.gz /tmp (2)进入/tmp 文件夹 cd /tmp (3) 解压软件 tar zxf VMwareTools-5.5.2-29772.

7、tar.gz 这时/tmp 下回出现一个叫 vmware-tools-distrib 的文件夹 (4) 进入 vmware-tools-distrib cd vmware-tools-distrib (5) 安装软件 ./vmware-install.pl 后面的步骤中会出现很多让你选择的项,一路回车即可。安装成功之后会显示 Enjoy the VMware team。3. 共享文件夹 软件包安装好之后,需要在 Window 下共享文件夹以便在 Linux 下可以访问。 选择菜单 VM-Settings,在弹出的 Virtual Machine Settings 对话框中选择 Options

8、属性 页,在 Settings 中选择 Shared Folers 来设置共享文件夹,后面的步骤太简单就不说了。4. 在 Linux 中查看共享文件 进入/mnt,你会发现这里多了一个名为 hgfs 的文件夹,这个目录下就可以找到你在Windows 下的共享的文件。3.3. 扩容虚拟机磁盘容量扩容虚拟机磁盘容量一般我们在安装一台虚拟机时,一开始给它分配的硬盘空间不会很多,比如 8G 或更 少,但在工作中可能因为编译升级内核、装载工具时,原先分配的空间被使用完,需要更 多的硬盘空间。这时候除了重装一个虚拟机外,我们可以使用在线扩容磁盘空间容量的方 法实现。以下介绍两种扩容方法: a.要扩容虚拟机

9、的硬盘容量,首先要让虚拟机能检查到它有额外的硬盘空间可以使 用,这里有两种方法来增加虚拟机的硬盘容量 a)使用 Vmware-tools 工具增加硬盘容量,这种方式比较简单。 1, 点击工具栏 VM-setting,在 Hardware 页点击 Add 按钮,选择 Hard Disk 增加一个磁盘,后面操作看你磁盘的实际分配情况了,可按如下图设置:可按实际需求增加一个或多个磁盘(做 raid 磁盘阵列就是这样增加磁盘的):b)上图出现了好多硬盘,可能有人看了烦,那么这里就介绍另一种方法,直接 对一个虚拟硬盘进行扩容,这个方法复杂点。 1,首先要使用 vmware 的自带工具 vmware-vd

10、iskmanager.exe,我们可以在 windos 的命令行中进入到 vmware 的安装目录,也就是 vmware- vdiskmanager.exe 所在目录,执行 vmware-vdiskmanager -x 20Gb “Other Linux 2.6.x kernel-cl3.vmdk” 其中 -x 20Gb 表示扩大至 20Gb,详细帮助输入 vmware-vdiskmanager 回车即可查看。Other Linux 2.6.x kernel-cl3.vmdk 为虚拟硬盘完整路径名,路径 中含空格,所以需用引号引起来。若你有两个 vmdk 文件,其中一个比另一个多-flat,如

11、 Red Hat Linux.vmdk 和 Red Hat Linux-flat.vmdk,选择不带- flat 的那个。 命令敲完会显示虚拟磁盘扩容的执行进度,这个过程比较慢,耐心等待。2,虚拟磁盘扩容成功后,会显示如下信息,表示磁盘扩容成功,可以看到我 们硬盘已经扩容到 20G:3,虚拟磁盘扩容成功后只表示这个磁盘有 20G 的容量,但除了之前的 8G 已 经被使用,剩下的 12G 是未被使用的原始空间,也没有没分区,必须先将其分区 后 linux 系统才能发现该部分磁盘空间,这里就用到了分区工具,这里使用的是 gparted-live-0.6.4-1.iso(下载地址 http:/ 。

12、4,首先按 F2 进入虚拟机的 BIOS 设置(如果进不去一直按 Ctrl+Alt+Insert 键,然后快速按 F2,或者在工具栏选择 WM-power-power on to BIOS) ,将虚拟 机的启动方式首选为 cd 启动(待分区调整结束后需改回原样,或将 Hard Drive 调 作第一启动项):5,进入系统后按默认选择 GParted Live (Default settings),直接 Enter。6,默认不更改 keymap,直接 Enter。7,系统语言设置,输入 26,回车。注:26 表示简体中文。8,选择图形系统模式,按默认的(0) ,直接回车。9,这时候就进入磁盘分区

13、界面,可以显示当前虚拟机有多少个磁盘以及分区 的情况(右边的 12G 是我已分区完并加入逻辑卷的,本来是一片白色的空磁盘空 间):b,使用 gparted 分区工具的好处是能够动态扩容某一格式的文件系统大小,也就是如 果我硬盘里还有未被分区的磁盘空间,我们可以直接增加到已有分区中(方法很简单, 操作时按照提示就可完成) 。还有另一种简单方法是创建一个某种文件系统类型的磁盘 分区,并在 linux 系统中将其 mount 到一个文件夹中使用。 1,但如果一个分区的文件系统使用的是 lvm 格式,那么就不能使用这个工具直 接扩展它的大小,必须在 linux 系统中进行扩容,因为 centos 系统

14、就是使用 lvm 管理分 区,我们就介绍 lvm 的扩容方法,所以这里就直接将空闲的 12G 空间直接右击-新建, 格式化成一个无文件系统的分区/dev/sda3,也就如下图的/dev/sda4(/dev/sda3 在先前已 被我加入到逻辑卷中了,所以文件系统会显示 lvm2)2,退出系统,双击 Exit,选择 shutdown,OK。提示取出 CD,恢复 VMware Workstation BIOS 第一启动项为硬盘启动。 3,进入系统后,打开终端,显示当前的硬盘信息,会发现新创建的一个分区 /dev/sda3:4,现在我们将新创建的分区 sda3 加入到已有的逻辑卷中,这里涉及到 LVM

15、 的 基础知识,想了解更多的可以 google 学习。下面是简单操作: pvcreate /dev/sda3 /* 初始化一个物理卷*/ vgextend VolGroup00 /dev/sda3 /* 将这个物理卷添到逻辑卷组中 */ lvextend -L +12G /dev/VolGroup00/LogVol00 /* 将该逻辑卷组中的一个逻辑卷扩 容 12G */ resize2fs /dev/VolGroup00/LogVol00 /* 重新设置文件系统大小*/ 5,操作完后使用 df 命令查看磁盘使用情况,可以看到磁盘逻辑卷已经扩容成功:3.4. 打印内核调试信息方法打印内核调试信

16、息方法在调试 linux 内核代码时,我们经常会用 printk 将调试信息打印到终端上,但如果我们调试 的代码会随内核启动时一起启动,或者调试模块时出 bug 死机了,这时就不能查看死机前 打印的全部信息了。下面就介绍将内核调试信息打印到另一台虚拟机上。 1,首先要 clone 或重新安装一台虚拟机,两台内核版本可以不一致。要调试内核代码 的虚拟机叫做目标机,用于查看调试信息的虚拟机叫做调试机(暂且随 kgbd 的叫法) ,目 标机要增加一个串口设备,配置如下:而开发机也要增加一个串口设备,配置如下:2,进入目标机的/boot/grub/grub.conf,这是 linux 系统的启动引导配置文件,将某个内核 的调试信息输出到终端重定向输出到串口,如下图:3,进入调试机,打开一个终端确认一下系统是否已经安装 minicom,如果没有请自行 安装。4,配置 minicom(需要 root 用户),执行 minicom s 后出现配置界面使用向下键选择 serial port setup(串口设置) ,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号