【Linux内核分析与驱动编程】内核调试实验-环境搭建

环境:虚拟机Ubuntu18.04
内核版本4.19.23

1 实验环境搭建
1.1 内核源码编译
(1)利用.config进行源码编译
make oldconfig
make –j4
在这里插入图片描述
(2)创建kDebug调试文件夹
在这里插入图片描述
(3)复制bzImage、vmlinux、initrd.img-4.19.23到实验目录中
在这里插入图片描述
1.2 安装ddd
sudo apt-get install ddd
在这里插入图片描述
1.3 安装busybox
(1)解压busybox
tar -jxvf busybox-1.30.1.tar.bz2

在这里插入图片描述
(2)运行menuconfig进行配置
make menuconfig

在这里插入图片描述
在这里插入图片描述
(3)编译
make
在这里插入图片描述
(4)安装
sudo make install
在这里插入图片描述
1.4 制作文件系统
(1)进入kDebug目录,在当前目录下创建一个名为busybox.img,大小为1000M的文件,并将其格式化为ext3的文件系统
dd if=/dev/zero of=./busybox.img bs=1M count=1000
在这里插入图片描述
mkfs.ext3 busybox.img
在这里插入图片描述
(2)将这个虚拟磁盘文件挂载到本地系统中, 并将生成好的busybox的文件拷贝到这个文件里。
sudo mkdir /mnt/disk
sudo mount -o loop ./busybox.img /mnt/disk
sudo cp -rf ~/busybox-1.30.1/_install/* /mnt/disk
在这里插入图片描述
(3)创建必须的文件系统目录
cd /mnt/disk/
sudo mkdir dev sys proc etc lib mnt
在这里插入图片描述
(4)创建rcS文件
cd etc/
sudo mkdir init.d
sudo vi /mnt/disk/etc/init.d/rcS
在这里插入图片描述
(5)将下面内容拷贝到rcS里:
#! /bin/sh
/bin/mount -a
/bin/mount -t sysfs sysfs /sys
/bin/mount -t tmpfs tmpfs /dev
#动态添加虚拟机环境中的设备
/sbin/mdev –s
在这里插入图片描述
(6)修改rcS权限
sudo chmod +x rcS
在这里插入图片描述
(7)卸载虚拟磁盘文件
在这里插入图片描述
1.4 安装qemu
sudo apt-get install qemu
在这里插入图片描述
1.5 gdb+kgdb调试内核
(1)qemu启动目标机

sudo qemu-system-x86_64 -kernel bzImage -initrd initrd.img-4.19.23 -append “root=/dev/sda nokaslr kgdboc=ttyS0,115200 kgdbwait” -boot c -hda busybox.img -k en-us -m 1024 -serial tcp::4321,server
在这里插入图片描述
(2)开发机中调试
在开发机中(另启动一个终端,进入kdebug目录)使用如下命令:
gdb vmlinux
(gdb) target remote localhost:4321
在这里插入图片描述
在这里插入图片描述
(3)观看变量
watch configured
print configured
在这里插入图片描述
下一篇:内核调试实验,指定helloworld作为init入口。

猜你喜欢

转载自blog.csdn.net/iefenghao/article/details/88188637