栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Linux操作系统分析学习总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux操作系统分析学习总结

参考资料:《庖丁解牛Linux操作系统分析》

                   https://gitee.com/mengning997/linuxkernel

一、简介

Linux操作系统分析是从用户的角度对Linux的环境及其使用进行简单的介绍,然后通过Linux操作系统源代码分析了解Linux操作系统与底层硬件、上层应用之间的结构关系、调用关系,熟悉Linux操作系统的配置、安装过程,深入分析Linux操作系统对底层硬件的封装方法。

在课程中对操作系统工作原理、系统调用底层机制、进程的描述创建、进程切换和在系统中的执行过程进行了介绍。同时在课程中也利用qemu和gdb对linux内核的启动流程进行调试,使我对linux系统的运行原理有了更加深入的理解。

二、实验-debug linux kernel

课程中有一个配套的实验:debug linux kernel,主要是利用Qemu和gdb来跟踪调试linux的启动过程,下面对这个实验进行简要的介绍。

2.1 环境配置

在课程中提供的实验流程是基于虚拟机的Ubuntu系统来完成。但在配置环境过程中,经常可能出现一些问题,例如:与系统原有软件包冲突、运行环境配置复杂等,因此我选择了使用在课上学到的Docker技术来完成这个实验。同时我也将Docker镜像文件开源在saaak (王康) · GitHub上,基本达到了开箱即用。

首先编写DockerFile,基于Ubuntu18镜像来实现。

编写使用命令build镜像并run

sudo docker build -t debug-linux-kernel:latest 
docker run 
	-it debug-linux-kernel:latest 
	/bin/bash

 这样就启动好了我们所需要的实验运行环境。

2.2 编译内核

使用命令make defconfig 创建默认配置,然后使用

make menuconfig

打开图形化编译配置选项。

选择kernel hacking->Compile-time checks and compiler options

将Compile the kernel with debug info以及Provide GDB scripts for kernel debugging按Y选择,然后Save并退出。

 在配置完成后使用命令开始编译内核。

make -j4     //4是编译时线程数量

 编译完成后会有kernel ready之类的输出。

 2.3 Qemu及GDB调试

使用命令启动Qemu,其中-S命令是暂停内核启动,等待gdb连接。-s命令是启动server,默认使用1234端口,如需更改调试的端口可以用-gdb tcp:port命令来取代-s命令,其中port是端口号。

qemu-system-x86_64 -kernel arch/x86/boot/bzImage -s -S

启动之后另外打开一个Shell,使用docker ps -a命令找到刚刚启动的环境容器。

使用命令进入容器,注意要将Container_ID替换成你刚刚启动的容器id。

docker exec -it CONTAINER_ID  /bin/bash

输入gdb vmlinux进入gdb调试。

使用命令连接另一个shell的Qemu进程。

target remote :1234
//remote后面要有空格,否则会把remote当成远程主机名来解析

建立连接后会有相应提示

使用b start_kernel命令在start_kernel处设置断点,然后输入c就会运行到start_kernel处并暂停。使用list吗命令可以查看到start_kernel函数附近的代码。

 还可以使用next命令进行单步的调试。

同时也可以使用bt命令查看函数调用的栈信息。

 三、总结

弥补了汇编和操作系统的知识盲区,同时从原来的只会使用Linux命令到现在对Linux系统的运行原理也有一定理解。看到了很多C语言的高级操作,惊叹于Linus等大牛的智慧。
不过自己也有一些不足之处,Linux内核代码已经发展到了两千万行,想在一个学期内对其有深入的理解是办不到的,因此还有许多问题没有找到清晰的答案。不过在将来碰到Linux相关问题时,也能够基于课程所学内容,以及几次实验的操作经验,找到问题的解决方向。

学号:423

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005754.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号