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

以下是构建调试Linux内核网络代码的环境MenuOS系统的完整步骤:

步骤1:在虚拟机中安装Linux系统 (推荐Ubuntu 18.04)

1.1点击右上角的新建虚拟机

da2769d6b7f904c820f6def788ba5812.png

1.2 选择虚拟机镜像,然后点击下一步

9cee90166d7e4c729ec79ed7c403748b.png

1.3 输入Ubuntu 所需要的一切信息,然后一直点下一步!

eb7a07aacc18d7f836bd0bd688c0ea7f.png

Ubuntu就此安装完成

d38541cc4035d41aab74b44537174dba.png

步骤二:下载Linux内核(Linux-5.0.1)

get 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

sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev #安装内核编译所需的库

make i386_defconfig #生成32位x86的配置文件

执行上述命令之后:可以看见文件结构中已经有了linux-5.0.1文件夹

3112b4f07c6f1a9e3e5b3275698d1f58.png

步骤3:制作带有debug调试的内核

make menuconfig #执行make menuconfig之后,会跳出一个图形化界面,就在图形化界面中完成以下操作,如果没有跳出,或者报错,自行解决界面大小适应问题:安装vmware tool,或者在设置中调整分辨率。

1:选择 Kernel hacking

2:选择 Compile-time checks and compiler options

3:选择 [ ]Compile the kernel with debug info

4:按Y 前面就多了一个 [*] Compile the kernel with debug info

5:选择 save

6:按 esc,直到退出图形化界面

f2544c5eb399649aee938f6f83f08999.png

步骤4: 编译

输入make指令

开始制作根文件系统:

步骤1:下载并加载QEMU虚拟机,并加载内核

sudo apt install qemu # 安装qemu命令

qemu-system-i386 -kernel linux-5.0.1/arch/x86/boot/bzImage #qemu虚拟机加载 linux-5.0.1内核,这条命令可以不用执行,因为后面构造menuOS的makefile中是包含了这条命令的

如果提示错误,请修改qemu中的makefile文件

1cddd99c71ea2626d0419af8933ffc31.png

步骤2:构造MenuOs

#下载menu系统,并在LinuxKernel目录下建一个子目录rootfs,当作menuOS的根目录

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

mkdir rootfs

sudo apt-get install libc6-dev-i386 #安装libc6-dev-i386

步骤3:编译并加载

cd menu

make rootfs

完成后应该有以下界面:

3e7f2bd0ceac765dd77c0512c6b0241e.png

执行Gdb调试测试

步骤一:启动gdb server

关闭打开的menu OS 系统界面

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

步骤二:建立gdb连接(从另外一个命令行窗口打开)

gdb

file ~/LinuxKernel/linux-5.0.1/vmlinux

break start_kernel

target remote:1234

步骤三:测试gdb连接

在gdb窗口,按下c

观看调试信息,和menu OS系统启动停滞,在按下Enter后,继续执行,则表示gdb测试成功

3e8999f4c006112504ed6d68cbb0541b.png

构建Menu OS的网络功能

在这里首先看一下目前的文件结构·

abfda8dceeb5338ffe6470503e593374.png

步骤一:将TCP网络通信程序集成到MenuOS中

cd linux-5.0.1

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

cd linuxnet/lab2

make

cd ../../../menu/

make rootfs #改一下Makefile

3aebc1cfa35a2f233e065a608dc5edb3.png

步骤2:将TCP通信的客户端集成到MenuOS中

cd ../linux-5.0.1/linuxnet/lab3

Make rootfs

在这里同样需要修改make file

62e0dea33fc99fbd242e0b50d2749ae8.png

当menuOS中包含replyhi和hello命令时,就已经制作成功了

6ce1b950346b6083ad999c5d1ee21ec4.png

到此,构建调试Linux内核(32位)网络代码的环境MenuOS系统完成。

来源:https://www.cnblogs.com/AmosYang6814/p/12027988.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值