构建调试Linux内核网络的环境Menuos系统
一.Linux内核源码下载
下载网址为:
https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz
下载完成后放入home/MenuOS中
然后解压缩包:
tar -xvf linux-5.0.1.tar
二.安装内核编译工具
sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses dev
make x86_64_defconfig #生成64位x86的配置文件
make menuconfig #配置编译内核
三.准备qemu模拟器加载内核
**1.下载安装QEMU **
cd ..
sudo apt install qemu
qemu-system-x86_64 -kernel linux-5.0.1/arch/x86_64/boot/bzImage
#构建MenuOS的根文件目录rootfs
mkdir rootfs
#git clone所给的munuOS文件
git clone https://github.com/mengning/menu.git
cd menu
sudo apt-get install libc6-dev-i386
2.构造MenuOS
需要编辑一下menu目录下Makefile文件的如下内容
然后在~/MenuOS/menu路径下执行make rootfs命令,
成功在能看到如下界面
四.MenuOS上能够完成TCP客户端和服务器发送和接收hello/hi
1.把程序集成至MenuOS中测试
'''
cd ..
git clone https://github.com/mengning/linuxnet.git
cd ./linuxnet/lab2
make
cd ../../menu/
make rootfs
'''
在QEMU下测试输入如下命令:
Replyhi
Hello
五.GDB进行内核代码跟踪
首先,修改menu目录下的Makefie文件
此时在~/MenuOS/menu路径下输入 make rootfs
出现下图所示情况。此时不需要关闭终端以及QEMU界面
gdb
file ./linux-5.0.1/vmlinux
target remote:1234
break start_kernel
list
gdb跟踪到内核代码start_kernel
构建调试Linux内核网络的环境Menuos系统的更多相关文章
- 学习构建调试Linux内核网络代码的环境MenuOS系统
构建调试Linux内核网络代码的环境MenuOS系统 一.前言 这是网络程序设计的第三次实验,主要是学习自己编译linux内核,构建一个具有简易功能的操作系统,同时在系统上面进行调试linux内核网络 ...
- 构建调试Linux内核网络代码的环境MenuOS系统
构建MenuOS系统 1.将指定文件拷贝到本地: git clone https://github.com/mengning/linuxnet.git 此过程可能需要输入github账号和密码. 2. ...
- 在qemu环境中用gdb调试Linux内核
简介 对用户态进程,利用gdb调试代码是很方便的手段.而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试.其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qem ...
- Gdb远程调试Linux内核遇到的Bug
知识共享许可协议本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/gdb-bug 本博客同步在http://www.cn ...
- 用qemu+gdb tcp server+CDT调试linux内核启动-起步
用qemu+gdb tcp server+CDT调试linux内核启动-起步 说明: 环境信息与 用virtualbox+模拟串口+CDT调试linux内核 TCP IP协议栈-起步 提到的一样,并且 ...
- Linux内核--网络栈实现分析(十一)--驱动程序层(下)
本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7555870 更多请查看专栏,地 ...
- Linux内核--网络栈实现分析(七)--数据包的传递过程(下)
本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7545855 更多请查看专栏,地 ...
- Linux内核--网络栈实现分析(三)--驱动程序层+链路层(上)
本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7497260 更多请看专栏,地址 ...
- Linux内核--网络栈实现分析(一)--网络栈初始化
本文分析基于内核Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7488828 更多请看专栏, ...
随机推荐
- oracle之dblink
当用户要跨本地Oracle数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据.下面讲介绍 ...
- mysqli报错注入常见函数
以下均摘自<代码审计:企业级Web代码安全架构>一书 1.floor() select * from test where id=1 and (select 1 from (select ...
- Java源码之HashMap的hash篇
提到哈希,我们脑袋中立马就会闪过一个方法,就是hashCode(),没错.就是这个! 我们知道HashMap是通过 数组+链表 的结构进行数据存储的,有数组就会有索引,而HashMap内的数据要存储在 ...
- Mybatis和Mybatis-Plus时间范围查询,亲测有效
一.mysql 1.传入时间范围参数类型是字符串 <if test="startTime!=null and startTime.trim() neq ''"> and ...
- vue简单案例_动态添加删除用户数据
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Python实现自动生成小学四则运算题目
Github地址: https://github.com/guoyuyi/gyy.github.io/blob/%E4%BD%9C%E4%B8%9A1/zy1.py 题目描述: 通过python语言编 ...
- 8.ExecutorService-执行器服务
- JVM学习目录
JVM学习目录 JVM的整体结构 1.类加载子系统 类加载子系统 2.运行时数据区 运行时数据区总览 堆.栈.方法区的详细图解 2.1.程序计数器 程序计数器 2.2.本地方法栈 本地方法栈 2.3. ...
- Java高级开发必会的50个性能优化的细节(珍藏版)
在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能. ● 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短 ...
- 简单说说Restful API
前言: 最近一段时间,一直在低头敲代码,开发平台对外交互的API接口,功能已经大体完成了,回过头来看看自己的接口设计文档,不胜感慨,想当初自己也是为"接口名称"想破了脑袋,各种百度 ...



