使用 qemu 来模拟 nvme 设备

使用qemu调试NVME driver 编译完成后,将image拷贝到buildboot的output目录下(根据自己保存的目录 最终的目录名称应该都一样)。于是想了一个办法,新拉了一个Linux内核版本,目前我使用的是linux-6.8.8版本,于是编译Linux。但是这里遇到参考博客评论区遇到的问题,使用ls-l /dev/n*命令找nvme设备,没有找到任何设备。然后执行上面的qemu命令运行qemu,可以正常看到nvme设备,此时就可以调试nvme驱动代码。另外,builidroot可以下载最新的版本,进入网站下载,进行解压。 阅读详情
AI摘要

博客介绍了使用QEMU模拟NVMe设备的方法。首先要确认QEMU支持NVMe设备,若不支持需重新编译或更换系统;接着介绍了创建NVMe虚拟设备的两种方法;最后说明了启动虚拟机的两种方式,一是用QEMU直接启动,二是用virsh启动并需编辑配置。

使用 qemu 模拟 nvme 设备,本篇可以参考。引用本文请注明出处: 使用 qemu 来模拟 nvme 设备_qemu nvme-优快云博客

通过文件在当前系统模拟 nvme 设备,请参考: 使用文件来模拟 nvme 设备_configshell-fb-优快云博客

1. 确认 qemu 支持 nvme 设备
 

qemu-kvm -device help
...
name "nvme", bus PCI, desc "Non-Volatile Memory Express"
...

如果有如上输出,说明可以使用 qemu 来模拟 nvme 设备。否则,请重新编译 qemu 或者更换支持的系统。

2. 创建 nvme 虚拟设备

方法一:

dd if=/dev/zero of=/path/to/nvme.img bs=1M count=4096

 方法二:

qemu-img create -f raw /path/to/nvme.raw 50G

3. 启动

方法一: 使用 qemu 直接启动虚拟机

qemu-kvm -enable-kvm -m 2048 -smp 1 /path/to/vm.qcow2 -boot c -drive file=/path/to/nvme.raw,if=none,id=D22 -device nvme,drive=D22,serial=1234

说明:

vm.qcow2 是一台已经安装好操作系统的虚拟机镜像。

方法二: 使用  virsh 启动虚拟机

编辑 <vm> 配置

virsh edit <vm>

将

<domain type='kvm'>

改为

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

再 "</domain>"(最后一行)上一行添加

  <qemu:commandline>
    <qemu:arg value='-drive'/>
    <qemu:arg value='file=/path/to/nvme.raw,if=none,id=D22'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='nvme,drive=D22,serial=1234'/>
  </qemu:commandline>

启动虚拟机:

virsh start <vm>

FEMU:基于QEMU的NVMe SSD模拟器编译、配置与三种模式实战 在存储系统与固件开发领域,NVMe SSD的硬件模拟是研究新型文件系统、测试驱动和探索存储架构的关键技术。其核心原理在于通过软件精确模拟SSD的控制器行为、FTL(闪存转换层)逻辑及闪存物理特性,从而在虚拟化环境中构建完整的存储栈闭环。这项技术的价值在于能够低成本、高灵活性地复现各种硬件场景,包括极端故障和尚未面世的设备原型。典型的应用场景包括存储算法研究、系统性能评估以及教育实验。本文聚焦于FEMU这一基于QEMU的高性能NVMe SSD全栈模拟器,详细解析其支持的黑盒SSD、开放通道SSD和NoSSD三 阅读详情

相关推荐

nvme-env:运行模拟的NVMe设备的原型环境

nvme-env:运行模拟的NVMe设备的原型环境

QEMU文档之NVME模拟

QEMU通过"nvme","nvme-ns"和"nvme-subsys"设备提供NVME模拟。 1 增加NVME设备 1.1 控制器模拟 QEMU模拟的NVME控制器为NVME spec V1.4。所有强制特性有如下异常和限制: (1)当设备上电时SMART/Health log page上的数据被重置; (2)中断合并不支持且默认是禁用的; 在QEMU PCI总线上添加一个NVME控制器最简单的方法为增加如下参数: -drive file=n...

flyingnosky的专栏 4133

QEMU PCIe设备实现

PCIe 设备虚拟化QEMU中的实现 包括处理中断的硬件以及Linux如何响应和处理终端。技术分析分享

关于使用qemu-nvme创建OC SSD设备pblk,以及lightnvm子系统介绍

目录   欢迎一起研究pblk的小伙伴入群,qq群:851435225 1:下载qemu-nvme源码,配置安装 2:制作qemu系统 3:启动系统 4:进入系统加载pblk驱动,初始化nvme设备,创建/删除pblk设备 a:编辑pblk驱动模块,安装 b:查看nvme设备信息 c:创建pblk设备 d:删除一个pblk设备 5:数据规则 a:部分数据读取规则: b:磨...

zlsh007的专栏 4432

Ubuntu终端AI编程助手配置:Claude Code接入DeepSeek模型全攻略

在软件开发领域,AI编程助手正成为提升开发效率的重要工具。其核心原理是通过大语言模型理解自然语言指令,生成、解释或调试代码。这类工具的技术价值在于将AI能力无缝集成到开发工作流中,减少上下文切换,实现更流畅的人机协作。常见的应用场景包括代码生成、错误调试、代码重构和技术问答等。本文聚焦于在Ubuntu系统中,将流行的终端AI助手Claude Code的后端模型从原版Claude替换为DeepSeek。通过配置环境变量实现API端点和模型的映射,这一过程涉及Node.js环境管理、npm包安装和关键环境变量设

weixin_42527654的博客 376

大学计算 - NumPy库的矩阵运算 实训答案

本文介绍了三个NumPy矩阵操作的实验练习。第一关练习ndarray类型操作,包括矩阵构造、元素平方和计算、矩阵乘积运算和逆矩阵行列式计算;第二关针对matrix类型,涉及绝对值最大值获取、特定矩阵乘积运算和转置矩阵特征值计算;第三关实现Moore-Penrose伪逆矩阵计算,并与NumPy内置pinv函数结果比较误差。实验涵盖了NumPy核心矩阵操作,展示了从基础运算到高级矩阵分解的应用,帮助掌握科学计算中的矩阵处理技巧。

2403_89314916的博客 308

QEMU -machine accel=kvm或-enable-kvm或-accel kvm选项启用 KVM

启用 KVM 您的 Linux 内核和硬件必须支持KVM(基于内核的虚拟机)完全虚拟化,并且必须加载必要的内核模块。有关详细信息,请参阅KVM。 要在 KVM 模式下启动 QEMU,请附加-enable-kvm到其他启动选项。要检查是否为正在运行的 VM 启用了 KVM,请输入#QEMU 监视器并键入info kvm。 笔记: 该参数accel=kvm的的-machine选择等同于-enable-kvm或-accel kvm选项。 CPU型号host需要KVM 如果您使用 GUI 工具启动 VM

allway2的博客 5816

华为OD新系统机试真题 4.26 -最大化游戏试玩资格分发

华为OD机试新系统真题【最大化游戏试玩资格分发】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD新系统机试 4月26号真题【最大化游戏试玩资格分发】。

qq_45776114的博客 825

qemu nvme 磁盘镜像

qemu nvme

baidu_38316985的博客 621

CP AUTOSAR标准之AUTOSAR OS(AUTOSAR_SWS_OS)(二)

AUTOSAR OS是一个Operating System,即操作系统。它最核心的功能是管理任务和事件的调度,不同任务间的同步流,并且提供监控和错误处理功能。或者用最简化理解就是一个函数调度器。

CoolBreeze的博客 653

展锐平台wifi连接性问题解决方案

对于断开连接的问题,需要从kernel log中确认下,是上 层主动发起的断开(会下发disconnect的命令),还是CP侧上报的断开事件。同学,别退出呀,我可是全网最牛逼的 WIFI/BT/GPS/NFC分析博主,我写了上百篇文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦。1、出现wifi连接正常,但无法上网问题,首先确认其他手机是否可以正常上网,排除网络自身问题;3 路由器配置问题,出现过一个案例,恢复出场设置问题就解决了,具体根因。

手机-手表蓝牙开发工程师的博客 2022

QEMU-NVMe 开源项目使用教程

QEMU-NVMe 开源项目使用教程 1. 项目介绍 QEMU-NVMe 是一个基于 QEMU 的开源项目,专门用于模拟 NVMe 设备,特别是 Open-Channel SSD(OCSSD)设备。该项目通过修改 QEMU 的 NVMe 设备实现,使其能够暴露为 Open-Channel 2.0 设备。此外,它还支持元数据、SGLs、预定义数据、错误恢复和错误注入等功能。 2. 项目快速启动 2....

gitblog_00559的博客 1263

AI应用工程师面试指南与参考答案

摘要:AnkerAI应用工程师职位面向2024/25届毕业生,要求计算机相关专业背景,强调工程实现与技术探索能力。岗位职责包括全栈开发、AI技术整合(如大模型、图像识别)、团队AI赋能及系统优化。职位更看重编程实践能力(Python/Java等)和学习潜力,而非单纯算法知识。成功候选人将参与智能化产品开发,获得导师指导和技术成长机会。面试准备应聚焦项目经验展示、业务需求理解和技术解决方案能力,通过结构化回答和实操案例体现工程思维与创新潜力。

郑伟强dev的专栏 407

用户态虚拟化IO通道实现概览及实践(下)

2)在spdk_nvmf_tgt_new_qpair的调用流程中执行nvmf_vfio_user_poll_group_add函数,该函数中主动填充了一个SPDK_NVMF_FABRIC_COMMAND_CONNECT的fabric命令的请求交给spdk_nvmf_request_exec_fabrics来处理,并在命令完成后的回调函数handle_queue_connect_rsp中注册周期轮询的poller函数vfio_user_poll_vfu_ctx,处理针对模拟设备的配置空间相关访问请求。

weixin_60043341的博客 748

开篇词:学习系统分析师的好处?核心考点有哪些?

系统分析师备考指南 系统分析师是IT行业的高级专业人才,具备系统分析与设计能力,能指导开发团队工作。学习系统分析师不仅能获得职业晋升的"黄金跳板",还能全面提升技术架构思维和业务理解能力。 核心价值: 职业发展:晋升管理岗位的硬性要求,突破职业天花板 能力提升:构建T型知识结构,培养架构思维和软技能 市场竞争力:成为"业务+技术"桥梁,获得国家级专业认证 考试内容: 计算机基础知识(硬件、操作系统、网络等) 系统分析专业知识(软件工程、架构设计等) 进阶知识(企业信息

数据知道的博客 5936

7.29华为OD机试真题 新系统 - 能量对撞 (Java/Py/C/C++/Js/Go)

7.29华为OD机试真题 新系统 - 能量对撞 (Java/Py/C/C++/Js/Go)

算法大师! 1315

DRAM模拟持久化设备的原理、实现与调试实战

DRAM作为高速易失性内存,断电即失,而持久化设备断电不丢数据,两者看似对立,却在工程中常通过软件抽象将DRAM模拟为持久化存储,用于开发调试阶段的高效验证。其核心原理是在DRAM之上叠加块映射、持久化备份与掉电恢复模拟层,让上层软件感知不到真实硬件缺席。这一技术能显著降低反复试验成本,在存储驱动开发、文件系统异常掉电测试、虚拟化设备模拟等场景中发挥关键作用。结合NVMe队列与DMA仿真,可进一步逼近真实设备行为。文章还给出了参数选择、性能基准与常见坑点,帮助工程师快速搭建可靠的模拟环境。

weixin_34318326的博客 305

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

使用文件来模拟 nvme 设备

通过文件在当前系统模拟 nvme 设备,本篇可以参考。引用本文请注明出处: https://blog.youkuaiyun.com/Hello_NB1/article/details/93142900 使用 qemu 模拟 nvme 设备,请参考: https://blog.youkuaiyun.com/Hello_NB1/article/details/93139089 1. 安装 nvme-loop 模块(...

Hello_NB1的博客 3100

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

qemu模拟磁盘

把盘体与控制器集成在一起减少硬盘接口的电缆数目与长度,数据传输的可靠性得到增强,硬盘制造起来变得更容易的技术。ATA是一个花费低而性能适中的接口,主要是针对台式机而设计的,销售的大多数ATA控制器和IDE磁盘都是更高版本的,称为ATA - 2和ATA - 3,与之匹配的磁盘驱动器称为增强的IDE。机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。

czw 2057

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

OpenChannelSSD的QEMU-NVMe实现指南

OpenChannelSSD的QEMU-NVMe实现指南 本指南基于OpenChannelSSD/qemu-nvme开源项目,旨在帮助开发者和使用者理解其基本结构,以及如何配置和启动该模拟器。项目旨在通过修改QEMU中的NVMe设备,使其能够以Open-Channel SSD 2.0设备的形式工作,支持多种高级特性。 1. 项目目录结构及介绍 该项目遵循了典型的Linux开源项目布局,主要目录结构...

gitblog_00848的博客 791

QEMU vfio-user 使用指南:通过 UNIX 套接字接入用户态 PCI 设备

vfio-user 是 QEMU 内置的一项设备接入机制,它允许把(PCI)设备实现放到 QEMU 进程之外的用户态进程中,QEMU 通过 UNIX 域套接字与该进程通信,从而让虚拟机使用这些"远程"设备。与 `vhost-user` 类似但更通用——它不限于 virtio 设备,而是可以模拟任意类型的 PCI 设备;与内核态 `vfio` 不同,`vfio-user` 的整个数据通路都运行在用户

gitblog_00743的博客 953

基于QEMU 模拟设备的设SRIOV设备虚拟化环境搭建

摘要:SR-IOV(单根I/O虚拟化)技术通过硬件增强方案解决虚拟化环境中的I/O性能瓶颈问题。该技术允许单个物理PCIe设备创建多个虚拟功能(VF),每个VF可直接分配给特定虚拟机使用,同时共享核心设备资源。相比传统虚拟化I/O方式,SR-IOV消除了虚拟机监视器的介入开销,通过IOMMU实现安全隔离,提供接近原生性能的I/O访问。实验使用QEMU模拟的NVMe设备验证了SR-IOV功能,展示了VF的动态创建和管理过程。SR-IOV在保持高性能的同时实现了资源的高效共享,是HPC和虚拟化环境中的重要优化技

tugouxp的专栏 946

linux里的nvme驱动代码分析(加载初始化)

基于qemu2.5 + linux4.5.3学习nvme驱动

潘振杰的工作室 3万+

windows和虚拟机linux上运行qemu

想在wsl ubuntu、vmwre ubuntu等虚拟机os中运行qemu,并能在qemu中再运行linux的os,这样就不用依赖物理的服务器上运行qemu,如果可以成功,就可以方便的修改扩展qemu的代码了。但是可惜没有正常运行起来。但是没有在网上找到支持x86_64的windows qemu的QEMU_EFI文件,按照同样的步骤安装x86_64版本的linux os没有成功。按照如下两个帖子的指导,可以安装arm架构的linux OS系统,并在windows上通过qemu虚拟机运行linux OS。

weixin_43158604的博客 1983

支持nvme的linux_linux里的nvme驱动代码分析

nvme物理层基于高速的pcie接口,pcie3.0一个lane就已经达到了8Gb/s的速度。x2 x4 x8 … N个lane在一起就是N倍的速度,非常强大。另外加上nvme协议本身的简洁高效,使得协议层的消耗进一步降低,最终达到高速的传输效果。QEMU + BUILDROOT出于好奇和兴趣,想要学习一下nvme。协议自然是看最新的pcie3.0和nvme1.2。但是只停留在文档和协议始终只是纸...

weixin_39567943的博客 1607

速通NVMe驱动:用QEMU从零掌握Linux存储驱动开发

Linux设备驱动开发中,PCIe、DMA与中断机制是绕不开的底层骨架,而存储驱动的队列模型更是体现现代高性能设备交互的核心设计。NVMe作为新一代存储接口标准,通过Submission/Completion队列配合门铃寄存器与Phase Tag机制,将传统的逐条寄存器搬运升级为内存中的批量提交,极大降低了CPU开销。借助QEMU模拟器,无需真实SSD即可复现完整的NVMe控制器行为,安全地实践从PCI枚举、MMIO寄存器配置到PRP数据映射、命令提交的完整链路。这一过程不仅覆盖块设备层对接和blk-mq框

weixin_30522983的博客 204
上一篇: 误清 iptables docker container 无法访问外网
下一篇: 使用文件来模拟 nvme 设备
only火车头
博客等级 码龄17年 23粉丝 70原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值