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

第一步:下载,编译linux内核

mkdir LinuxKernel
cd LinuxKernel
wget https://mirror.bjtu.edu.cn/kernel/linux/kernel/v5.x/linux-5.0.1.tar.xz
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 make menuconfig #配置编译需要的debug信息,如下图所示make -j4 多核make,提升速度#升级内核重启一直报错,所以就跳过了这一步

第二步 构造MenuOS

cd ~/LinuxKernel/
sudo apt install qemu
git clone https://github.com/mengning/menu.git
mkdir rootfs
sudo apt-get install libc6-dev-i386
#修改Makefile,使用一个软连链接将qemu和emu-system-i386链接起来
cd menu

vim Makefile
qemu -kernel ../linux-3.18.6/arch/x86/boot/bzImage -initrd ../rootfs.img  #修改前
qemu -kernel ../linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img #修改后
:wq

sudo ln -s /usr/bin/qemu-system-i386  /usr/bin/qemu

make rootfs#初始化根目录

第三步 gdb调试

qemu -kernel ../linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img -append  nokaslr -s -S#打开QEMU
#打开另一个终端
gdb
file ~/LinuxKernel/linux-5.0.1/vmlinux
break start_kernel
target remote:1234
c
list

第四步:构建MenuOS的网络功能

#将 TCP 网络通信程序的服务端集成到 MenuOS 系统中
cd ~/LinuxKernel
git clone https://github.com/mengning/linuxnet.git
cd linuxnet/lab2
make
cd ../../menu/
make rootfs 

#将 TCP 网络通信程序的客户端集成到 MenuOS 系统中
cd ~/LinuxKernel
git clone https://github.com/mengning/linuxnet.git
cd linuxnet/lab3
make rootfs #记得在Makefile中更改一下linux内核的版本#

原文地址:https://www.cnblogs.com/yxzh-ustc/p/12024309.html

时间: 2024-11-07 02:50:59

构建调试Linux内核(32位)网络代码的环境MenuOS系统的相关文章

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

构建MenuOS系统 1.将指定文件拷贝到本地: git clone https://github.com/mengning/linuxnet.git 此过程可能需要输入github账号和密码. 2.进入目录linuxnet,使用make命令编译根文件系统: cd linuxnet make rootfs 3.在Makefile文件中有一条指令用于开启menu系统(不需要自己输入): qmenu -kernel ../../linux-3.18.6/arch/x86/bzImage -initr

大杀招之使用QEMU调试Linux内核代码

Linux内核代码的调试非常麻烦,一般都是加printk, 或者用JTAG调试. 这里的方法是用QEMU来调试Linux内核.因为QEMU自己实现了一个gdb server, 所以可以非常方便的使用gdb来调内核. 这对内核的学习也非常有帮助. 为了尽量不多花时间在QEMU设置上,这里直接使用以下的内核image: http://free-electrons.com/community/demos/qemu-arm-directfb/ 1. QEMU的安装 这个可以自己去QEMU的官网下载编译,

使用QEMU调试Linux内核代码

Linux内核代码的调试非常麻烦,一般都是加printk, 或者用JTAG调试.这里的方法是用QEMU来调试Linux内核.因为QEMU自己实现了一个gdb server, 所以可以非常方便的使用gdb来调内核. 这对内核的学习也非常有帮助. 为了尽量不多花时间在QEMU设置上,这里直接使用以下的内核image: http://free-electrons.com/community/demos/qemu-arm-directfb/ 1,QEMU的安装 这个可以自己去QEMU的官网下载编译,如果

调试Linux内核环境MenuOS系统

调试Linux内核环境MenuOS系统 一.实验简介 本文采用自己搭建环境的方式对gdb进行了模拟. (1)工具介绍 1)QEMU介绍 QEMU是一个主机上的VMM(virtual machine monitor),通过动态二进制转换来模拟CPU,并提供一系列的硬件模型,使guest os认为自己和硬件直接打交道,其实是同QEMU模拟出来的硬件打交道,QEMU再将这些指令翻译给真正硬件进行操作.通过这种模式,guest os可以和主机上的硬盘,网卡,CPU,CD-ROM,音频设备和USB等设备进

用KGdb和VMware调试Linux内核,System Call

Linux的内核和System Call不好调试,参考这里: http://stackoverflow.com/questions/5999205/cannot-step-into-system-call-source-code 简单来说,如果想在本机调试system call,那么当你进入system call时,系统已经在挂起状态了,那么它又怎样能响应用户的输入? 所以,有一个UML(http://user-mode-linux.sourceforge.net/)的方式,把内核当成一个进程启

VELT-0.1.5开发:使用kgdb调试Linux内核

VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件,将可以在visual studio的IDE中进行Linux应用程序的开发(包括编译和调试),也可以进行uboot和linux内核的编译,并根据编译时的错误信息正确定位到源码.目前的版本是0.1.4,仅支持vs2013.此插件可以在CSDN下载频道下载(http://download.csdn.net/detail/lights

跟踪调试Linux内核的启动过程

跟踪调试Linux内核的启动过程---使用gdb 符钰婧 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 本次的实验是使用gdb跟踪调试内核从start_kernel到init进程启动,并分析启动的过程. 1.首先是在实验楼虚拟机上进行调试跟踪的过程. (1) 先构造一个简单的Linux系统 (2) 接下来使用gdb跟踪调试内核 启动(窗口被冻结) 另开一个shell窗口(水平分割)

调试linux内核环境搭建方法(ddd+busybox+qemu+linux3.5.4内核)

环境搭建 1.1.准备工作 (1).qemu虚拟机 (2).busybox软件 (3).linux-3.5.4内核 (4).ddd 调试工具(终端中输入 sudo apt-get install ddd 安装) 1.2.编译内核 (1)建立工作目录:mkdir -p ~/work/qemu (2)切换到此目录:cd ~/work/qemu (3)下载 linux内 核 (4)解压内核:tar -jxvf linux-3.5.4.tar.bz2 (5)切换到linux-3.5.4目录: cd li

route-显示并设置Linux内核中的网络路由表

route命令 网络配置 route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由.要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现. 语法 route(选项)(参数) 选项 -A:设置地址类型: -C:打印将Linux核心的路由缓存: -v:详细信息模式: -n:不执行DNS反向查找,直接显示数字形式的IP地址: -e:netstat格式显示路由表: -net:到一个网络的路由表: -host:到一个主机的路