跟踪分析Linux内核的启动过程这次作业不需要编译,于是使用实验楼的环境。在shell中使用下面的命令启动qemu qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 可以看到成功的进入MenuOS。 因为没有学过《软件工程C编码实践篇》,所以首先简略看一下MenuOS的代码,main函数在test.c
目录前言前置知识ARM Versatile Express开发板简介ARM处理器家族简介安装qemu-system-arm安装交叉编译工具交叉编译ARM32 Linux内核交叉编译ARM32 Busybox使用busybox制作initramfs使用QEMU启动ARM32 Linux内核模拟vexpress-a9开发板模拟vexpress-a15开发板参考 前言本文介绍采用 qemu 模拟ARM
转载
2024-05-09 11:48:31
0阅读
QEMU的核心初始化流程客户系统运行之前,QEMU作为全系统模拟软件,需要为客户系统模拟出CPU、主存以及I/O设备,使客户系统就像运行在真实硬件之上,而不用对客户系统做修改。如概览部分所示,由用户为客户系统指定需要的虚拟CPU资源(包括CPU核心数,SOCKET数目,每核心的超线程数,是否开启NUMA等等),虚拟内存资源,具体参数设置参见${QEMU}/qemu-options.hx。创建QEM
转载
2024-03-19 12:22:29
342阅读
CentOS 7 安装a. U盘安装,请选择minimal版本。(DVD那个版本,后面需要把DVD的iso还要放在u盘目录下,但DVD超过4G,用ntfs不好搞)
b. 制作启动盘,Mac可用unetbootin,win下可以用大白菜那个启动u盘制作工具,把iso写入u盘,同时把iso原始文件复制到u盘目录下
c. 机器插上u盘启动
d. 启动菜单按tab,此时出现类似vmlinuz initrd
转载
2024-03-04 16:38:19
180阅读
文章目录编译内核下载qemu构建initramfs根文件系统1.编译Busybox2.生成initrd3.测试根文件系统gdb调试内核参考文献 编译内核# make menuconfig // 调整编译选项在内核编译选项中,开启如下"Compile the kernel with debug info"Kernel hacking —> Compile-time checks and co
转载
2024-03-26 07:01:34
411阅读
IoT安全基本功系列——内核的编译与qemu启动搞IoT安全绕不开的知识笔者想要完整的整理linux系统从内核的编译,文件系统的制作,bootloader引导内核启动,最终至一个块设备,字符设备,网卡驱动的编写。做这件事的目的是,笔者发现对于IoT设备的固件模拟,在开机时获取root shell,以及驱动作为攻击面的漏洞挖掘等方面的工作,都绕不开这块内容。为什么要写这个系列文章本篇文章有可能是一个
转载
2024-08-31 07:44:14
44阅读
#一、使用gdb分析QEMU代码#使用gdb不仅可以很好地调试代码,也可以利用它来动态地分析代码。使用gdb调试QEMU需要做一些准备工作:1, 编译QEMU时需要在执行configure脚本时的参数中加入--enable-debug。2, 从QEMU官方网站上下载一个精简的镜像——linux-0.2.img。linux-0.2.img只有8MB大小,启动后包含一些常用的shell命令,用于QEM
转载
2024-05-25 13:36:50
441阅读
目录启动代码分析RISC-V系统定时器初始化任务创建以及栈帧初始化启动第一个任务使用GDB跟踪任务启动过程 最近在学RISC-V架构,有幸找到了一个非常好的课程《循序渐进,学习开发一个RISC-V上的操作系统》,学完后受益匪浅,但是课程上开发的操作系统毕竟只是教学用,想对比学习一下实际商用的RTOS的实现。FreeRTOS以前也用过,是一个非常
前言服务器安装kvm的时候,如果没有安装桌面(一般不会安装,节省资源),就需要使用命令去创建虚拟机。要支持 KVM,Intel CPU需要 vmx 或者 AMD CPU 需要svm 扩展。环境介绍操作系统:CentOS Linux release 7.5.1804 (Core)查看CPU是否支持KVM egrep 'vmx|svm' /proc/cpuinfo --color=au
转载
2024-06-12 13:09:44
1288阅读
参考:Documentation/Networking - QEMUQEMU’s new -nic command line option - QEMUQEMU新的-nic选项 - 知乎 (zhihu.com)一、网络基础知识QEMU 中的网络分为两部分:虚拟机网络设备(qemu提供给虚拟机的虚拟网卡)。宿主机网络后端设备(虚拟机往虚拟网卡写入的数据都会由网络后端设备流出到真实的网络环境中)。每个
转载
2024-03-15 07:46:40
272阅读
昨天听别人讲使用Qemu和gdb来实现源码级内核调试,今天试了一下,果然非常方便,现简单的记录一下。 Qemu是一个开源的虚拟机软件,能够提供全系统的仿真,可以运行在多个平台上,并仿真多个别的平台。Qemu虚拟机是采用动态翻译来实现CPU的仿真的,对硬件的依赖程度低,通过它提供的众多参数,你能够对虚拟的机器进行定制以满足你的需求。 要想对内核进行调试,那自然需要重新编译内
转载
2024-08-11 14:50:47
97阅读
qemu命令启动虚拟机@TOC qemu-system-i386 -smp 4 -m 2048 -net nic,model=rtl8139 -drive file=/home//zhanghaiyong/xuniji/xp -cdrom /home/zhanghaiyong/DEEP_GHOST_XP_SP3_V2016_02.iso -boot d欢迎使用Markdown编辑器你好! 这是你第
目录前言qemu用户模式+IDAqemu用户模式+GDB方式一(gdb remote)方式二(gdb attach)qemu系统模式+GDB系统模式+IDA总结 前言调试环境:Ubuntu16.04IDA6(6以上版本都行)gdb-multiarch(支持不同架构)gdbserver(不同架构不同版本,网上可自行找到别人编译好的直接使用)qemu用户模式+IDA1,qemu调试模式挂起程序sud
转载
2024-05-02 21:34:02
102阅读
这阵子一直在研究qemu 磁盘io路径的源码,发现直接看代码是意见非常低效率的事情,qemu是一个比较庞大的家伙(源码部分大概154MB,完全由C语言来完成),整个结构也都非常地复杂,所以从代码上研究qemu最好的办法只有debug之。不断地收集更多的debug信息去获取源码所蕴含的道理。 很多人第一反应可能就是使用一些类似与Eclipse, gdb 这一类强大的debugger,我当然也不
转载
2024-07-14 06:28:30
69阅读
对于KVM虚拟机,一般启动我们会用 virsh create ×××.xml 方式启动,其实底层还是调用了qemu-kvm命令行去执行,只不过virsh在启动前做了一些准备工作。有时候,我们需要用qemu-kvm方式去启动虚拟机,比如本人想做基于KVM的linux内核调试。1、生成命令行 如果正在跑一个虚拟机,可以根据域ID或者虚拟机名城生成命令行:virsh domxml-to-native q
转载
2023-10-20 18:34:04
477阅读
四月19号,新版本的QEMU 7.0 发布,本版主要包含了对英特尔 AMX 指令集支持 (高级矩阵扩展),该指令集主要用于对英特尔至强服务器的扩展,该指令集提供了新的自定义 TMM“TILE”寄存器和用于操作这些寄存器中数据的指令,例如用于矩阵乘法的 TMUL(Tile matrix MULtiply)。另一个主要的变化是改善了镜像的fleecing备份。当前系统创建快照,然后通过写前
转载
2024-02-24 00:35:46
27阅读
本文译自Fabrice Bellard大神的文章《QEMU, a Fast and Portable Dynamic Translator》,如有翻译不当之处,请斧正。 摘要在本文中,我们将展示QEMU的内部机制。QEMU是一个快速的机器模拟器,它使用了独创的可移植动态翻译器。QEMU可以在若干种宿主机(x86,PowerPC,ARM以及Sparc)上
转载
2023-09-18 09:20:41
626阅读
QEMU 是一套由法布里斯·贝拉(Fabrice Bellard)所编写的以 GPL 许可证分发源码的模拟处理器,在GNU/Linux 平台上使用广泛。简单来说,QEMU 是一个虚拟机,与常见的 Vmware/VirtualBox 不同的是,QEMU 可以模拟不同平台的硬件,使得我们在 x86 设备上可以运行其他架构的程序。本文主要讲述如何编译符合 qemu 要求的内核,使用 qemu 成功运行内
转载
2024-04-02 17:52:36
275阅读
虚拟机运行概览首先直观的了解一下利用QEMU运行客户虚拟机的流程。在命令行中运行QEMU的系统模式的可执行文件,参数声明虚拟CPU的个数,内存大小,指定已经安装好的硬盘镜像,启动QEMU虚拟机主窗口。启动命令格式举例:qemu-system-x86_64 --enable-kvm -cpu host \
-smp cores=4,threads=2,sockets=4 \
-m 16384
转载
2024-03-08 14:28:33
2383阅读
文章目录本章目标实现原理文件存放引导原理具体实现实验结果引导固件工具格式化和固件格式化对比下一步工作 本章目标我们的大目标是制作一个光盘,该光盘实现两个功能:存放引导代码,用来加载应用程序到内存,并跳转到应用程序处执行程序存放应用程序,这个引用程序是作为一个文件放到光盘中为了实现这个目标,本章作两个预备工作:制作一个光盘并格式化成文件系统,可以存放应用程序,我们选取FAT12格式的文件系统在格式
转载
2024-03-20 15:22:04
39阅读