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

本文详细介绍了如何在Linux环境下下载、编译和升级内核到5.0.1版本,包括配置编译选项、安装依赖包以及通过make install进行升级。此外,还讲解了利用QEMU构建MenuOS根文件系统,并安装了必要的库。最后,通过GDB调试QEMU中的内核,并展示了如何设置断点和追踪start_kernel函数。
摘要由CSDN通过智能技术生成

一、安装Linux内核

1.1下载内核源代码

mkdir LinuxKernel #创建LinuxKernel根目录

cd ~/LinuxKernel/

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz #下载Linux内核,这里用的是5.0.1版本

xz -d linux-5.0.1.tar.xz #解压

tar -xvf linux-5.0.1.tar

cd linux-5.0.1

1.2安装依赖包

sudo apt-get install build-essential

sudo apt-get install libelf-dev

sudo apt-get install libncurses-dev

sudo apt-get install flex

sudo apt-get install bison

sudo apt-get install libssl-dev

1.3配置编译需要的信息

#进入解压出来的目录

cd /linux-5.0.1/

#使用现存内核的配置文件:(xxx处使用TAB补全)

sudo cp /boot/config-xxx -r .config

#应用现存配置文件

sudo make oldconfig

#仅安装已有module

sudo make localmodconfig

#配置其他编译选项

sudo make menuconfig

接着会出现以下界面,依次选择 Kernel hacking ->Compile-time checks and compiler options ->[ ]Compile the kernel with debug info

然后按Y键,选择 Save ,选择Exit直到退出。

513e21995c4d7997fe025739140ab69b.png

1.4 编译

sudo make

1.5 升级内核

#安装modules

sudo make modules_install

#安装

sudo make install

#重启虚拟机

sudo shutdown -r now

#查看内核版本

uname -a

可以看到内核已经更新为Linux 5.0.1

9ffd8b77aadfb5d0712a2c344a50bc3c.png

二、制作根文件目录

QEMU虚拟机加载内核、构造MenuOS

cd ~/LinuxKernel/

sudo apt install qemu#安装qemu命令

qemu-system-x86_64 -kernel linux-5.0.1/arch/x86_64/boot/bzImage

#创建MenuOS根目录

mkdir rootfs

#下载MenuOS

git clone https://github.com/mengning/menu.git

安装libc6-dev-i386并初始化根目录

d menu

sudo apt-get install libc6-dev-i386

make rootfs

得到结果如下,输入help可以看到当前MenuOS中有help,version,quit,time,time-asm等命令

67d0c79c130e4da0e1c24b9d910b5ff0.png

验证MenuOS的网络

将TCP网络通信程序的服务端集成到MenuOS 系统中

cd ~/LinuxKernel/

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

cd linuxnet/lab2

make

cd ../../menu/#这里要修改Makefile文件

make rootfs

将TCP网络通信程序的客户端集成到MenuOS系统中

cd ~/LinuxKernel/

cd linuxnet/lab3

make rootfs

可以得到结果如下

900ab5a65aecc088c9f61eeac70a565c.png

三、GDB调试

重启QEMU

cd ~/LinuxKernel/menu

make rootfs

连接gdb server并调试重新打开一个终端

gdb

file ~/LinuxKernel/linux-5.0.1/vmlinux

target remote:1234

break start_kernel

c

list

结果显示gdb可以追踪到start_kernel函数

来源:https://www.cnblogs.com/xiehuichina/p/12030986.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值