分类:
2011-12-20 23:49:37
实验过程:
一、 扩充硬盘
由于虚拟机上的硬盘空间不够,要进行硬盘的扩充,添加了8G的空间,参照博客:
http://www.usr.cc/blog-5845-3102.html
用命令df检查扩充是否成功 二、编译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 l 解压源代码后,进入源代码所在目录执行 ./confingure l 执行make l 执行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 设置断点和单步跟踪 获取函数参数和打印栈中的内容
以下的实验均在sdb1下实现。(文件夹路径是/mnt/di/)
2 target remote localhost:1234
b start_kernel
c
continuing.
b sys_read
调试内核(待续。。。)