Windows X86 QEMU搭建Ubuntu20.04开发环境

  1. 目录

    概要

    安装QEMU

    下载Ubuntu镜像

    在QEMU中安装Ubuntu

    QEMU启用加速

    主机连接虚拟机

    VScode搭建远程开发环境

    QEMU快照

    下载内核源码


    概要

本文介绍在Windows10 上通过QEMU运行Ubuntu20.04 并搭建开发环境,在虚机环境学习Linux驱动开发。

  1. 安装QEMU

    1. 链接:QEMU for Windows – Installers (64 bit)
    2. 下载最新版安装包后双击运行安装,博主安装的是qemu-w64-setup-20250422
    3. 将QEMU安装目录添加进环境变量
  2. 下载Ubuntu镜像

    1. 链接:Get Ubuntu Server | Download | Ubuntu
    2. 博主安装的是20.04.6,得到镜像ubuntu-20.04.6-live-server-amd64.iso
  3. 在QEMU中安装Ubuntu

    1. 打开cmd,进入希望虚拟机安装的目录
    2. 创建系统盘:
      qemu-img create -f qcow2 ubuntu-20.04.5-live-server-arm64.img 256G
      1. ubuntu-20.04.5-live-server-arm64.img:生成的系统盘文件名,可自定
      2. 256G:系统盘大小,按需设置,博主偏向设较大
    3. 安装镜像至系统盘
      1. 执行命令:

        qemu-system-x86_64 -m 2048 -smp 16 ubuntu-20.04.5-live-server-arm64.img -cdrom ubuntu-20.04.6-live-server-amd64.iso
        1. -m 2048:虚拟机内存大小,单位KB

        2. -smp 16:虚拟机核数,并非直接使用物理核,可以设置较大,可以提升速度

        3. ubuntu-20.04.5-live-server-arm64.img:第2步中创建的系统盘名称

        4. -cdrom ubuntu-20.04.6-live-server-amd64.iso:下载的Ubuntu镜像

      2. 执行命令即会进入Ubuntu的installer节目,按指引完成安装

      3. 安装完成后关闭虚拟机

    4. 从系统盘启动

      1. 执行命令:

        qemu-system-x86_64 -m 2048 -smp 16 ubuntu-20.04.5-live-server-arm64.img
      2. 即可从系统盘启动镜像 
  4. QEMU启用加速

    1. 上述启动命令未启用加速引擎,运行速度较慢,启用加速后可以较大提升速率
    2. QEMU支持多种加速引擎,如haxm、tcg、whpx,执行命令查看当前QEMU版本所支持的引擎
      qemu-system-x86_64 -accel help
    3. 博主当前版本仅支持tcg和whpx,测试tcg加速效果不明显,遂采用whpx

    4. whpx是基于hyper-v的,使用需开启hyper-v功能

    5.  博主启用后仍不可使用whpx,在pwershell中分别执行下述命令后重启才可使用
    6. Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
      bcdedit /set hypervisorlaunchtype auto
    7. 至此whpx启用完成
    8. 更新命令,增加-machine accel=whpx表示启用whpx加速
    9. qemu-system-x86_64 -m 2048 -smp 16 -machine accel=whpx ubuntu-20.04.5-live-server-arm64.img 
    10. 本次启动即可发现运行速度有较大提升
  5. 主机连接虚拟机

    1. 上述启动的虚拟机会以nat模式共享主机网络实现上网,但是主机和虚拟机之间不可直接通信,导致开发困难
    2. QEMU支持直接映射虚拟机网络至主机loop back,如映射虚拟机的ssh端口22至本机127.0.0.1:2222,后续主机可通过该地址连接虚拟机ssh
    3. 更新启动命令增加参数-netdev user,id=net0,hostfwd=tcp::2222-:22 -device virtio-net-pci,netdev=net0
    4. qemu-system-x86_64 -m 2048 -smp 16 -machine accel=whpx ubuntu-20.04.5-live-server-arm64.img -netdev user,id=net0,hostfwd=tcp::2222-:22 -device virtio-net-pci,netdev=net0
      1.  -netdev user,id=net0设置网络模式为user,即nat模式,id=net0为索引名供后续参数使用
      2. hostfwd=tcp::2222-:22:映射虚拟机22端口至主机2222端口
      3. -device virtio-net-pci,netdev=net0:使用虚拟网卡设备virtio-net-pci,索引为之前的user模式网络接口
    5. 即可使用127.0.0.1:2222连接虚拟机ssh
  6. VScode搭建远程开发环境

    1. 因虚拟机命令行使用不便,随通过VScode插件实现远程编写代码即命令行操作
    2. 安装remote ssh
    3. 配置ssh
    4. 之后点击连接
    5. 注意VScode上方搜索栏会弹出选项机输入密码操作
    6. 在文件栏可打开远程服务器的目录
    7. 终端也会自动连接远程ssh
    8. 配置密钥登陆
    9. powershell执行ssh-keygen.exe生成密钥,目录在user目录下.ssh
    10. 将公钥文件id_ed25519.pub上传服务器,直接在windows窗口将文件拖入vscode的文件栏即可上传文件
    11. 将公钥文件写入Linux home目录下.ssh中的
    12. 后续即可实现密钥登陆,无需填写密码
    13. 若虚拟机环境变化,如更换了虚拟机,即使再次配置了公钥也可能会无法连接,原因是本地已存在之前的ssh相关缓存文件,解决办法是删除known_hosts文件后重新连接
  7. QEMU快照

    1. 运行虚拟机后在虚拟机界面执行atrl+art+2可切换至QEMU控制台,在该控制台可对当前虚拟机执行快照操作
    2. 快照命令如下
    3. savevm snapshot_name # 创建快照 
      info snapshots # 查看快照列表 
      loadvm snapshot_name # 恢复快照
    4. savevm可能报错

    5. 原因是开启了加速,可以先去掉加速启动参数-machine accel=whpx启动一次,报错快照后再重新启用加速启动

  8. 下载内核源码

    1. 安装依赖
    2. sudo apt install build-essential libncurses-dev flex bison libssl-dev dpkg-dev dwarves libelf-dev
    3.  下载和当前系统版本匹配的源码
    4. sudo apt source linux-image-unsigned-$(uname -r)
    5. 版本号并不一定完全相同,注意辨别
    6. 进入到下载的源码目录
    7. 获取当前内核配置写入.config
    8. sudo make oldconfig -j16
    9. 编译 
    10. sudo make -j16
    11. 随后即可加载所需ko进行调试 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值