构建调试Linux内核网络代码的环境MenuOS系统
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了构建调试Linux内核网络代码的环境MenuOS系统,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2584字,纯文字阅读大概需要4分钟。
内容图文
1.下载Linux内核,解压
mkdir shanyan3 #创建实验目录
cd shiyan3
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz
#也可以在浏览器中输入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
可以看到解压后
2.安装编译工具
sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev
3.安装qemu虚拟机
sudo apt install qemu
4.配置编译内核生成bzImage文件
make defconfig #默认生成.config ,也可以make x86_64_defconfig为64配置,而make i386_defconfig为32为x86配置 make menuconfig # Kernel hacking—>Compile-time checks and compiler options ---> [*] Compile the kernel with debug info make # 或者使用make -j4,其中4为多核CPU核心数,可以加快编译过程
make x86_64_defconfig成功如下图
make menuconfig出现下图,按上下键,选中kernel hacking,回车,再选中Compile-time checks and compiler options按下回车,再选中 [*] Compile the kernel with debug info
找到按下键盘y键开启此选项。下面要保存退出,按键盘上左右键,选中save回车,选中ok回车。再一步一步选择exit,按下回车,直到回到terminal。
make -j4生成bzImage文件,路径为linux-5.0.1/arch/x86/boot/bzImage
5.测试qemu虚拟机是否能正常启动
qemu-system-x86_64 -kernel linux-5.0.1/arch/x86/boot/bzImage
会出现kernel panic问题在于需要挂载文件系统
6.制作文件系统
过程为:制作根文件系统镜像,形成根目录结构(可以用busybox,这里是直接拷贝老师的根文件)
git clone https://github.com/mengning/menu.git cd menu
sudo ln -s /usr/bin/qemu-system-x86_64 /usr/bin/qemu #创建qemu的软链接
sudo apt-get install gcc-multilib make rootfs#Makefile中的命令中的目录与我们自己的不符,需要根据自己的实际修改再编译,如下图所示
#会发现shiyan3目录下生成了rootfs.img,使用如下命令可以再次运行QEMU
cd ..
qemu-system-x86_64 -kernel linux-5.0.1/arch/x86_64/boot/bzImage -initrd rootfs.img
运行成功后按回车可以输入命令,现在只有help、version和quit三个命令,可以尝试自己添加更多的命令
Makefile中的命令中的目录与我们自己的不符,根据自己的实际修改,这里是我修改后的。
7.gdb调试
启动gdbserver
qemu-system-x86_64 -kernel linux-5.0.1/arch/x86_64/boot/bzImage -initrd rootfs.img -append nokaslr -s -S
打开另一个terminal,输入gdb,运行gdb。
file shiyan3/linux-5.0.1/vmlinux break start_kernel #设置断点 target remote:1234 #继续运行 list #查看断点处相关源代码
8.将TCP网络通信程序的服务端集成到MenuOS系统中
git clone https://github.com/mengning/linuxnet.git cd linuxnet/lab2 make cd ../../menu/ make rootfs
9将TCP网络通信程序的客户端也集成到MenuOS系统中
../linuxnet/lab3 make rootfs #这里同样需要修改Makefile中命令中的目录
现在可以输入replthi和hello了
内容总结
以上是互联网集市为您收集整理的构建调试Linux内核网络代码的环境MenuOS系统全部内容,希望文章能够帮你解决构建调试Linux内核网络代码的环境MenuOS系统所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。