Linux内核调试
文章平均质量分 70
通过qemu对Linux内核进行调试
lqonlylove
这个作者很懒,什么都没留下…
展开
-
基于aarch64分析kernel源码 六:kernel_init进程(1号进程)、kthreadd进程(2号进程)
kernel_init进程(1号进程)、kthreadd进程(2号进程)分析原创 2023-10-10 17:20:45 · 455 阅读 · 0 评论 -
基于aarch64分析kernel源码 五:idle进程(0号进程)
kernel中0号进程分析原创 2023-10-09 16:26:35 · 798 阅读 · 0 评论 -
基于aarch64分析kernel源码 四:printk 内核打印
将信息记录到 log 中;调用控制台驱动来将信息输出。从上图可看出,其核心是一个叫做log buffer的循环缓冲区,printk作为生产者将消息存入该缓冲区,右边的log服务模块作为消费者可从log buffer中读取消息。这样设计有以下几个优点:1、控制台和日志模块初始化前,内核的启动日志可以暂存到log buffer中。待它们初始化完成后,再输出相应信息。2、在printk log输出太快,而log服务的处理速度不足时,防止log信息丢失。原创 2023-09-02 11:41:32 · 825 阅读 · 0 评论 -
基于aarch64分析kernel源码 三:启动代码分析
1、通过__HEAD将启动代码链接到文件开始位置。2、调用y ,进行初始化相关操作。3、调用调用函数。4、函数进入C语言环境初始化内核。原创 2023-07-30 11:37:20 · 960 阅读 · 1 评论 -
基于aarch64分析kernel源码 二:确定第一行代码
第一行代码通过链接脚本进行确定。是通过编译后生成的。原创 2023-07-10 21:06:32 · 722 阅读 · 0 评论 -
基于aarch64分析kernel源码 一:环境搭建
6、生成调试compile_commands.json。1、查找ubuntu仓库中aarch64编译器。使用initramfs根文件系统。2、使用gdb调试kernel。2、配置busybox。3、配置kernel。原创 2023-07-09 17:12:03 · 1046 阅读 · 0 评论 -
qemu搭建arm嵌入式linux开发环境
交叉编译(Cross_Compile)是指编译源代码的平台和执行源代码编译后程序的平台是两个不同的平台。BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装载到内存中然后跳转到操作系统所在的空间,启动操作系统运行。Linux,全称GNU/Linux,是一原创 2022-06-27 08:37:46 · 2545 阅读 · 1 评论 -
Linux 内核调试 十:搭建ARM GDB的调试环境
一、源码下载GDB: The GNU Project Debugger (sourceware.org)http://ftp.gnu.org/gnu/gdb/BuildingCrossGDBandGDBserver - GDB Wiki (sourceware.org)二、工具链选择1、目标机工具链onlylove@ubuntu:~/My/gcc/gcc-linaro-4.9.4-2017.01/bin$ pwd/home/onlylove/My/gcc/gcc-linaro-4.9.4-20原创 2022-05-06 06:57:08 · 2501 阅读 · 1 评论 -
Linux 内核调试 九:Linux 内核调试环境搭建
qemu.pdf (cmu.edu)GDB usage — QEMU 7.0.50 documentation搭建 Linux 内核网络调试环境(vscode + gdb + qemu) - 知乎 (zhihu.com)一、环境win10 + vscode + vmware + ubuntu + gdb + qemu + linux kernel。环境版本win10Windows 10 家庭中文版vscode1.66.2vmware15ubuntu.原创 2022-05-05 06:45:01 · 3087 阅读 · 0 评论 -
Linux 内核调试 八:qemu使用initramfs文件系统
https://blog.csdn.net/song_lee/article/details/106027410一、介绍initramfs 即 initram file system,翻译成中文意思就是初始 ram 文件系统,基于 tmpfs,是一种大小灵活,直接作用在内存中的文件系统。initramfs 包含的工具和脚本,在正式的根文件系统的初始化脚本 init 启动之前,就被挂载。initramfs 是可选的,内核编译选项默认开启 initramfs(initrd)。以下情况下考虑使用 init.原创 2022-05-04 08:17:59 · 3864 阅读 · 0 评论 -
Linux 内核调试 七:qemu网络配置
参考:Documentation/Networking - QEMUQEMU’s new -nic command line option - QEMUQEMU新的-nic选项 - 知乎 (zhihu.com)一、网络基础知识QEMU 中的网络分为两部分:虚拟机网络设备(qemu提供给虚拟机的虚拟网卡)。宿主机网络后端设备(虚拟机往虚拟网卡写入的数据都会由网络后端设备流出到真实的网络环境中)。每个部件都有一系列选项。默认情况下,QEMU 将为来宾创建一个 SLiRP 用户网络后端和一.原创 2022-05-02 09:06:12 · 8866 阅读 · 3 评论 -
Linux 虚拟网络设备
一、tun/tap(虚拟网卡)TUN/TAP设备浅析(一) – 原理浅析 - 简书 (jianshu.com)(3条消息) Linux-虚拟网络设备-tun/tap_sld880311的专栏-CSDN博客_linux tap理解Linux虚拟网卡设备tun/tap的一切 | 骏马金龙 (junmajinlong.com)Linux-虚拟网络设备-tun/tap_sld880311的专栏-CSDN博客_linux tap1、特点TUN 和 TAP 设备是 Linux 内核虚拟网络设备,纯软件实现。原创 2022-02-13 23:07:06 · 1781 阅读 · 0 评论 -
Linux 内核调试 六:qemu-system-arm仿真vexpress-a9
参考资料:https://zhuanlan.zhihu.com/p/340362172https://www.jianshu.com/p/91baa4d140a2https://blog.csdn.net/aggresss/article/details/54942848https://qemu.readthedocs.io/en/latest/system/arm/vexpress.htmlhttps://github.com/openLuat/LuatOS-qemu-vexpress-a9.原创 2022-01-23 01:20:47 · 2585 阅读 · 0 评论 -
Linux 内核调试 五:qemu简单使用测试
https://qemu.readthedocs.io/en/latest/system/invocation.html一、启动uboot仿真qemu-system-arm -M vexpress-a9 -m 256 -kernel u-boot -nographic启动日志:onlylove@ubuntu:~/My/vexpress-a9$ ./qemu-system-arm -M vexpress-a9 -m 256 -kernel u-boot -nographicU-Boot 2.原创 2022-01-23 01:15:40 · 1803 阅读 · 0 评论 -
Linux 内核调试 四:qemu-system-arm功能选项整理
参考资料:https://qemu.readthedocs.io/en/latest/about/index.htmlonlylove@ubuntu:~/My/qemu/qemu-lq$ ./qemu-system-arm -hQEMU emulator version 6.2.0Copyright (c) 2003-2021 Fabrice Bellard and the QEMU Project developersusage: qemu-system-arm [options] [dis.原创 2022-01-23 01:12:57 · 2414 阅读 · 0 评论 -
Linux 内核调试 三:《QEMU ARM guest support》翻译
原文路径:https://wiki.qemu.org/Documentation/Platforms/ARMQEMU通常对ARM客户端有很好的支持。它支持近五十种不同的机器。我们支持这么多的原因是ARM硬件比x86硬件变化更大。ARM CPU通常内置于由许多不同公司使用不同设备创建的"片上系统"(SoC)设计中,然后这些SoC内置于机器中,即使它们使用相同的SoC,这些机器也可能进一步变化。即使有五十个板,QEMU也不能覆盖ARM硬件生态系统的一小部分。由于 ARM 系统在基本方面存在很大差异,因此.原创 2022-01-23 01:09:44 · 1225 阅读 · 0 评论 -
Linux 内核调试 二:ubuntu20.04安装qemu
一、第一种方法使用 apt-get install qemu 命令进行安装,安装过程如下:onlylove@ubuntu:~$ sudo apt-get install qemuReading package lists... DoneBuilding dependency tree Reading state information... DoneThe following NEW packages will be installed: qemu0 upgraded, 1 n原创 2022-01-23 01:06:01 · 10157 阅读 · 0 评论 -
Linux 内核调试 一:概述
一、为什么需要ARM模拟系统ARM平台的软件开发工作,可以划分为2类:应用程序的开发系统开发(内核、文件系统、驱动程序)1、应用程序的开发我们在开发嵌入式项目的时候,一般都是先在x86平台上把大部分的功能开发完成,然后再交叉编译,得到在ARM平台的可执行程序或者库文件。再通过scp指令或者NFS远程挂载的方式,把这些文件复制到ARM板子上之后执行。一般而言,应用程序就是利用硬件产品的各种资源、外设,来完成特定的功能,比如:数据采集、控制外部设备、网络传输等等。主要的特征就是与外部的各种设备进转载 2022-01-22 22:51:53 · 299 阅读 · 0 评论