本文环境基于unbuntu16.04、Linux-5.0.1和QEMU2.5.0
1 mkdir ~/linuxlab 2 cd ~/linuxlab 3 cp /mnt/hgfs/networking/linux-5.0.1.tar.xz ./ #因为wget下载的速度太慢,直接从本机拷贝了一份 4 tar -xvf linux-5.0.1.tar.xz 5 cd linux-5.0.1 6 7 8 ## 安装编译内核相关的库 9 sudo apt-get install build-essential flex libncurses-dev libelf-dev bison libssl-dev 10 11 make i386_defconfig 12 make menuconfig 13 --- 先进入Kernel hacking 14 --- 再进入Compile-time checks and compiler options 15 --- 选择Compile the kernel with debug info,这样会使编译好的内核有调试信息 16 17 make #编译内核
1 cd ~/linuxlab 2 sudo apt-get install qemu 3 #先安装git 4 sudo apt-get install git 5 git clone https://github.com/mengning/menu.git 6 make rootfs 7 8 cd menu 9 #修改Makefile文件 10 qemu-system-x86_64 -kernel ../linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img 11 #启动 12 make rootfs
cd ~/linuxlab
#下载程序
git clone https://github.com/mengning/linuxnet.git
cd linuxnet/lab2
#将lab2中的测试文件拷贝
make
cd ../../menu/
make rootfs
cd ~/linuxlab
cd linuxnet/lab3
---此处记得修改Makefile文件,参照上面
make rootfs
输入repkyhi 再输入hello即可看到结果
cd ~/linuxlab/menu
vim Makefile
#修改其中的参数,在qemu后面加上-append nokaslr -s -S参数
make rootfs
#此时出现的是一个stop的qemu,等待连接
##另外一个终端
gdb
file ~/linuxlab/linux-5.0.1/vmlinux
#连接刚刚停止的qemu
target remote:1234
#在start_kernel处打上断点
b start_kernel
#运行
run
#可以看到已经在start_kernel函数处停止运行了
原文:https://www.cnblogs.com/luhaipeng/p/12017810.html