构建调试Linux内核网络代码的环境MenuOS系统
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了构建调试Linux内核网络代码的环境MenuOS系统,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2771字,纯文字阅读大概需要4分钟。
内容图文
![构建调试Linux内核网络代码的环境MenuOS系统](/upload/InfoBanner/zyjiaocheng/945/43d0e17fb00c4354a2f4224d27ee49f3.jpg)
工作环境:虚拟机下Ubuntu18.04.3(64位)
一、下载编译内核
首先在主目录下创建Linux Kernel文件夹,然后下载内核,解压,命令如下:
mkdir LinuxKernel cd ~/LinuxKernel/ wget https://cdn.kernel.org/pub/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
这里有一个小建议:如果内核下载过慢,可以考虑换个源,方法:将/etc/apt/source.list拷贝,然后双击拷贝文件,点击其他,切换源(我用的是aliyu)
安装编译内核所需要的依赖包,这里可以一起install,但是建议一条一条执行,条理清楚,不容易乱:
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
编译内核
cd /linux-5.0.1/ sudo cp /boot/config-xxx -r .config #使用现存内核的配置文件:(xxx处使用TAB补全) sudo make oldconfig sudo make localmodconfig sudo make menuconfig
出现如下界面:
依次选择 Kernel hacking ->Compile-time checks and compiler options ->[ ]Compile the kernel with debug info,然后点击Y键,选择“save”,然后一路“exit”
sudo make
编译内核时间一般在30分钟左右
如果想要升级内核可以键入以下命令(不建议随便升级内核)
sudo make modules_install 安装modules sudo make install #升级 sudo shutdown -r now #重启 uname -a #查看内核版本
二、装载QEMU
cd .. #回到上个目录 sudo apt install qemu #下载qemu qemu-system-x86_64 -kernel linux-5.0.1/arch/x86_64/boot/bzImage #在64位环境下编译32位需安装 mkdir rootfs #制作qemu根目录 git clone https://github.com/mengning/menu.git cd menu sudo apt-get install libc6-dev-i386 #在64位环境下编译32位
此时需要修改~/MenuOS/menu目录下Makefile文件下的一行内容,因为实验楼的系统是Linux 3.18.6,这里要改为5.0.1,修改之后如下qemu-system-x86_64 -kernel ../linux-5.0.1/arch/x86_64/boot/bzImage -initrd ../rootfs.img(注意在Makefile修改命令时开头需加上TAB键,否则会报错)
make rootfs
进入如下界面:输入help
三、验证MenuOS的网络
将TCP网络通信程序的服务端集成到MenuOS 系统中,命令如下
cd .. git clone https://github.com/mengning/linuxnet.git cd ./linuxnet/lab2 make cd ../../menu/ make rootfs
再将TCP网络通信程序的客户端集成到MenuOS系统中,在此之前需要先修改lab3下的Makefile文件,使其内容如下:
qemu-system-x86_64 -kernel ../../linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img
cd .. cd ./linuxnet/lab3 make rootfs
客户端和服务端都集成入MenuOS后,此时可以在QEMU下输入replyhi,然后输入hello得到如下结果:
四 gdb调试
先修改menu目录下的Makefie文件,在上一次修改的那一行末尾添加 -append nokaslr -s -S
重启qemu:
cd ../../menu make rootfs
千万不要关闭此终端和QEMU界面
再重新开启一终端,如在MenuOS目录所在的用户家目录下,在这个终端内使用gdb,输入如下命令:
gdb file ~/MenuOS/linux-5.0.1/vmlinux target remote:1234 break start_kernel c list
结果如下图,可以清楚看到gdb追踪到start_kernel
函数,断点在init/mian.c
的538行:
内容总结
以上是互联网集市为您收集整理的构建调试Linux内核网络代码的环境MenuOS系统全部内容,希望文章能够帮你解决构建调试Linux内核网络代码的环境MenuOS系统所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。