构建调试Linux内核网络代码的环境MenuOS系统

一、下载内核源码,并配置编译

下载linux内核,解压至net_ws目录下
内核官网:https://www.kernel.org/

安装编译Linux内核所需的依赖:

sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev

下载并解压内核

mkdir net_ws
cd net_ws
tar xvJf linux-5.4.2.tar.xz   #解压内核文件
cd linux-5.4.2/       #进入linux-5.0.1目录

构建调试Linux内核网络代码的环境MenuOS系统_第1张图片
生成编译内核所需的配置文件:

make i386_defconfig

构建调试Linux内核网络代码的环境MenuOS系统_第2张图片

make menuconfig  

构建调试Linux内核网络代码的环境MenuOS系统_第3张图片
出现一个配置界面,按下面操作步骤进行:(使用上下左右按键进行选择和切换)
Kernel hacking -> Compile-time checks and compiler options -> Compile the kernel with debug info 按空格键勾选/取消该选项。
构建调试Linux内核网络代码的环境MenuOS系统_第4张图片
最后,执行make操作,内核编译完成

make

二、下载qemu,编译运行menuOS

首先安装qemu

sudo apt install qemu   #如果提示未找到请先执行sudo apt update
sudo ln -s /usr/bin/qemu-system-i386  /usr/bin/qemu   #建立链接,相当去windows下的快捷方式

构建调试Linux内核网络代码的环境MenuOS系统_第5张图片
在这里插入图片描述
下载MENU OS,并安装编译程序所需的依赖库:

cd net_ws
git clone https://github.com/mengning/menu.git
sudo apt install libc6-dev-i386          #为了支持在64位系统中编译32位程序
mkdir rootfs
cd menu
vim Makefile

修改Makefile中的内容,改为

qemu -kernel /home/netlinux/net_ws/linux-5.4.2/arch/x86/boot/bzImage  -initrd  ../rootfs.img

构建调试Linux内核网络代码的环境MenuOS系统_第6张图片
最后执行make操作

 make rootfs    #初始化根目录

执行成功,效果如图所示:
构建调试Linux内核网络代码的环境MenuOS系统_第7张图片

三、gdb调试内核

关闭所有终端和刚才的启动界面,进行下面的操作:
通过下面的命令在qemu中启动gdb server:

qemu -kernel ../linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img -append  nokaslr -s -S

打开另一个终端进入工作目录menuLab并执行下面的命令:

gdb
file net_ws/linux-5.4.2/vmlinux
break start_kernel
target remote:1234
c
list

可以看到下面的输出信息:
构建调试Linux内核网络代码的环境MenuOS系统_第8张图片
可以看到,程序启动到start_kernel()处暂定执行了

四、menuOS之网络通信

下载测试通信代码:

cd net_ws
git clone https://github.com/mengning/linuxnet.git

修改lab3下的Makefile的qemu为自己电脑的绝对路径

qemu -kernel /home/netlinux/net_ws/linux-5.4.2/arch/x86/boot/bzImage -initrd ../rootfs.img

然后进入menu目录执行如下代码:

make rootfs

在QEMU窗口中输入以下命令:
replyhi
hello
执行结果如下:
构建调试Linux内核网络代码的环境MenuOS系统_第9张图片

你可能感兴趣的:(构建调试Linux内核网络代码的环境MenuOS系统)