Qemu开源实战(三)

3,193 阅读2分钟

本周综述

  1. 配置Linux工具环境
  2. 配置vscode及Clion的gdb环境
  3. 初步阅读代码

配置Linux工具环境

主要尝试和完成了两件和QEMU没有关系的事情:

  • 在Ubuntu中使用TIM
  • 加速github仓库拉取速度

在Ubuntu中使用TIM

为了团队的实时沟通,在Ubuntu使用TIM是有必要的。

参考链接: www.lulinux.com/archives/13…

如果Ubuntu系统是英文环境,会出现中文显示不出来的情况,参照此处的Issue,在/opt/deepinwine/tools/run.sh中将WINE_CMD所在行修改为:

WINE_CMD="LC_ALL=zh_CN.UTF-8 deepin-wine"

加速Github仓库拉取速度

参考链接:myriad-dreamin.github.io/qemu-book/#…

但在electron-ssr正常的情况下,访问速度不理想,故又尝试了使用Gitee作为中转的方式。

配置vscode及Clion的gdb环境

了解gdb命令行调试指令

由于之前没有使用gdb调试命令进行调试的经验,此处做初步了解和尝试。

参考链接:blog.csdn.net/liigo/artic…

配置vscode环境

参考链接: myriad-dreamin.github.io/qemu-book/#…

其中,launch.json文件配置如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "QEMU x86_64 Linux",
            "type": "cppdbg",
            "request": "launch",
            "targetArchitecture": "x86_64",
            "program": "${workspaceRoot}/x86_64-softmmu/qemu-system-x86_64",
            "args": [
                "-m",
                "1024",
                // "-enable-kvm",
                "-drive",
                "if=virtio,file=test.qcow2,cache=none",
                "-vnc :1"
            ],
            "stopAtEntry": true,
            "cwd": "${workspaceRoot}",
            "externalConsole": true
        }
    ]
}

由于vscode调试过程中难以使用sudo权限,故此处暂时不设置-enable-kvm

但是调试运行的过程中发现,由于某种不知名的原因,导致处理-vnc :1指令时由于错误退出gdb,尝试解决无果,经由组员建议改为使用Clion。

配置Clion环境

参考链接:myriad-dreamin.github.io/qemu-book/#…

其中,我自己的参数等配置如下:

需要注意的是,如果需要使用kvm,则需要使用root账户即用sudo命令打开Clion,否则会提示Permission Denied

实测enable kvm之后速度大幅增加。

初步阅读代码

组内的同学整理出了开始运行调用的函数及出现的位置,组内分工之后,接下来几周需要关注QEMU中hw/core部分的代码。而/hw/文件夹包含了所有模拟虚拟机中虚拟硬件的代码。

首先在debug模式下观察并分析了main_loop函数其中的函数调用,以了解整体架构,同组同学已经分析,不再赘述。

接下来要从void machine_run_board_init(MachineState *machine)void soundhw_init(void)这两个函数开始深入分析hw相关部分在main函数中起到的作用。