Chinaunix首页 | 论坛 | 博客
  • 博客访问: 387480
  • 博文数量: 165
  • 博客积分: 436
  • 博客等级: 下士
  • 技术积分: 887
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-10 02:49
文章分类

全部博文(165)

文章存档

2012年(95)

2011年(70)

分类:

2011-12-20 23:49:37

实验过程:

一、   扩充硬盘

由于虚拟机上的硬盘空间不够,要进行硬盘的扩充,添加了8G的空间,参照博客:

http://www.usr.cc/blog-5845-3102.html

用命令df检查扩充是否成功

以下的实验均在
sdb1下实现。(文件夹路径是/mnt/di/

二、编译linux内核

下载自己要编译的Linux内核的源代码,这个可以从Linux内核的官方网站上得到:

1.一开始尝试使用的内核是Linux2.6.14,根据博文:

进行了内核的裁剪,make之后生成的.img文件

编译错误是的解决方法:

但是出现错误(在arch/文件夹下找不到x86,以及之后的bzImage这个文件,只有x86_64的文件夹。尝试了很多方式都没有实验成功,最后放弃。。。)

2.第二次尝试用linux2.6.30的内核文件。

Make menuconfig    make大约要等待40分钟左右,编译成功

三、  使用Gdb+qemu调试内核

1.安装qemu

ubuntu下使用sudoapt-get install 安装的qemu可能会存在bug,使得无法在断点处停下;因此需要在qemu官方网站上下载最新的版本的源代码包自己进行编译安装:

l  sudo apt-get install zlib1g-dev libsdl-dev

解压源代码后,进入源代码所在目录执行 ./confingure

执行make

执行sudo makeinstall

2.创建QEMU格式的硬盘

qemu-img create –f  qcow2name.img size

例如:qemu-imgcreate –f qcow2 ubuntu9.04.img 4GB

3. 在创建的硬盘上安装操作系统

qemu  –hda  name.img –cdrom  ~/Download/ubuntu9.04.iso –boot d

说明:使用hda指定硬盘镜像,使用CDROM选定光驱。-boot d指从cdrom启动,-boot a是软盘 -boot c 是硬盘;有时安装系统会很慢,这是可以考虑使用kvm来代替。

例如:kvm –hda  ubuntu9.04.img –cdrom./ubuntu-10.04.iso  -boot d

4. 从已经装好操作系统的硬盘启动

qemu –hda ubuntu9.04.img

5.  编译内核。

6. 使用qemu+gdb调试自己编译的Linux内核

a) 在运行make命令的目录下执行命令或写成shell脚本的形式,

qemu –s –S –hda  ./ubuntu9.04.img –kernel./arch/x86/boot/bzImage –append root=/dev/sda

l  -s表示运行虚拟机时将1234端口开启成调试端口;

l  -S表示冷冻虚拟机,等待调试器发出继续运行命令;

l  -kernel表示要调试的内核镜像;

l  -append root=/dev/sda 表示传递给内核的参数。

b)   在另一个终端上运行gdb命令

l  gdb vmlinux
2  target remote localhost:1234

设置断点和单步跟踪
b start_kernel
c
continuing.

获取函数参数和打印栈中的内容
b sys_read

调试内核(待续。。。)

阅读(1507) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~