Ubuntu搭建开发openchannelssd的qemu的虚拟机

2023-11-01

**

1.安装带有NVMe支持的qemu.

**
QEMU Installation
QEMU support for Open-Channel SSDs is based on top of Keith Busch’s qemu-nvme branch, which implements an NVMe compatible device.
Clone the qemu source from

git clone https://github.com/OpenChannelSSD/qemu-nvme.git

qemu-nvme的版本要用master分支的这个commit:fb8f9f2a7e260c3e8a0d993473d24

and configure the QEMU source with

./configure --enable-linux-aio --target-list=x86_64-softmmu --enable-kvm

then install by make and install

2.创建qemu虚拟机

2.1创建空白磁盘
$:qemu-img create -f raw ubuntu.raw 50G
(有空间就建大点,如何你想在虚拟机内部编译内核,磁盘一定要建大点);

2.2, 检查KVM是否可用

QEMU使用KVM来提升虚拟机性能,如果不启用KVM会导致性能损失。要使用KVM,首先要检查硬件是否有虚拟化支持:

$:grep -E 'vmx|svm' /proc/cpuinfo`

如果有输出则表示硬件有虚拟化支持。其次要检查kvm模块是否已经加载:

$:lsmod | grep kvm

kvm_intel 142999 0
kvm 444314 1 kvm_intel

如果kvm_intel/kvm_amd、kvm模块被显示出来,则kvm模块已经加载。最好要确保qemu在编译的时候使能了KVM,即在执行configure脚本的时候加入了–enable-kvm选项。

2.3装系统

启动虚拟机安装操作系统。

执行下面的命令启动带有cdrom的虚拟机:

$ qemu-system-x86_64 -m 2048 -enable-kvm ubuntu.img -cdrom ~/ubuntu.iso

-m 指定虚拟机内存大小,默认单位是MB, -enable-kvm使用KVM进行加速,-cdrom添加fedora的安装镜像。可在弹出的窗口中操作虚拟机,安装操作系统,安装完成后重起虚拟机便会从硬盘(fedora.img)启动。之后再启动虚拟机只需要执行:

 $ qemu-system-x86_64 -m 2048 -enable-kvm ubuntu.img

3.给虚拟机换内核

开发需要在带有lightnvm的支持的内核上进行
内核地址:https://github.com/OpenChannelSSD/linux.git
内核分支直接用pblk-lastest
下载后进去目录 编译安装 一般步骤:make menuconfig ;make bzImage ;make modules;make module_install; make install

4.ssh登入虚拟机

宿主机需要用ssh登入访问虚拟机,可以采取两种方式
一种是端口映射:把虚拟机的22端口映射到宿主机的其他还未使用的端口(ex:2223),方法就是在虚拟机启动命令中添加参数-:redir tcp:2223::22
这时宿主机通过ssh -p 2223 用户名@127.0.0.1 就可以ssh登入访问虚拟机了。

一种方式是建立网桥:

Ubuntu 的系统上,首先要安装含有建立虚拟网络设备 ( TAP interfaces ) 的工具 uml-utilities 和桥接工具 bridge-utils:
  

sudo apt-get  install uml-utilities
sudo apt-get  install bridge-utils
lsmod | grep tun #查看是否加载tun模块
modprobe tun #加载tun模块

编辑 /etc/network/interfaces:(请先备份),建立一个名叫 “br0” 的桥:
sudo vim /etc/network/interfaces
添加如下内容

auto br0
#iface br0 inet dhcp #一种IP配置方法为通过DHCP配置
iface br0 inet static #在这里网桥我用的静态IP,使用静态的话,就需要把你宿主机的ip地址,当前网络的网关等信息设置到这个网桥上
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
bridge_ports  eth0  #然后让eth0网卡上的端口都通过这个桥。

保持后重启网络服务,或者重启宿主机。
/etc/ 文件夹下新建一个qemu-ifup脚本,内容如下:

!/bin/bash
#This is a qemu-ifup script for bridging. #You can use it when starting a KVM guest with bridge mode network. #set your bridge name

switch=br0
if [ -n "$1" ]; then
    #create a TAP interface; qemu will handle it automatically.
    #tunctl -u $(whoami) -t $1
    #start up the TAP interface
    ip link set $1 up
    sleep 1
    #add TAP interface to the bridge
    brctl addif ${switch} $1
    exit 0
else
    echo "Error: no interface specified"
    exit 1
fi

并且需要使用root用户执行chmod u+x 给以可执行权限。

然后在启动命令中添加参数 -net nic -net tap,script=/etc/qemu-ifup 启动虚拟机 这样启动的虚拟机就有一个和宿主机同一个网段的ip地址,直接访问就可以了。
出现错误可以参考http://www.361way.com/qemu-kvm-bridge-net/4760.html

5.建立宿主机和虚拟机间的共享文件夹

有挺多方式,这里采用的是Samba这种方式
5.1在宿主机上,Ubuntu samba的安装:

sudo apt-get insall samba  
sudo apt-get install cifs-utils

5.2 创建共享目录:

mkdir /home/raohui/share   #(这个目录自定义名字和路径)
sudo chmod 777 /home/raohui/share 

5.3 创建Ubuntu samba配置文件:
保存现有的配置文件

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak 

修改现配置文件

sudo gedit /etc/samba/smb.conf 

在smb.conf最后添加

[share]  
path = /home/raohui/share  
available = yes 
browseable = yes 
public = yes 
writable = yes 

5.4 创建Ubuntu samba帐户

sudo touch /etc/samba/smbpasswd  
sudo smbpasswd //我用默认的也就是当前用户

5.5虚拟机中使用如何命令mount宿主机中的共享文件夹

mkdir shareDir #创建挂在点
sudo mount -t cifs -o username=raohui,password=raohui  //192.168.1.199/share /root/shareDir/

可以参考这个链接把上面命令设置为开机运行
http://jackqdyulei.github.io/2016/03/06/linux-auto-script/

参考:

http://www.jianshu.com/p/110b60c14a8b
http://blog.chinaunix.net/uid-22166872-id-4213626.html
http://os.51cto.com/art/201002/183766.htm

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu搭建开发openchannelssd的qemu的虚拟机 的相关文章

  • Django + nginx + uwsgi 无法登录

    我有非常简单的登录逻辑 类似于官方 Django 解决方案 class Login FormView template name login html form class AuthenticationForm def get self a
  • 我需要启用哪些权限才能使 Docker 卷正常工作?

    假设我有一个保存一些数据的 Docker 容器 我希望这些数据能够持续存在 如果容器被停止 删除 升级等 我仍然希望数据位于主机操作系统文件系统上的可访问位置 目前 我的解决方案是创建一个目录 srv service name在我的主机上
  • ubuntu中R的igraph包的安装

    我使用以下命令在 ubuntu 中安装 R 的 igraph 包 install packages igraph 但我收到一条错误消息 警告 无法访问存储库的索引 http ftp iitm ac in cran src contrib h
  • 无法在 mysql-apt-config [Ubuntu 14.04] 中选择“确定”

    我使用的是 Ubuntu 14 04 sudo apt get update总是给我这个选项来配置 mysql apt config 我尝试选择版本 按 tab gt 在 确定 上突出显示的键 按 Enter 但没有任何反应 它再次返回并突
  • 如何授予 apache 使用 NTFS 分区上的目录的权限?

    我在一台带有 20GB 硬盘的旧机器上运行 Linux Lubutu 12 10 我有一个 1 TB 外部硬盘 上面有一个 NTFS 分区 在该分区上 有一个 www 目录 用于保存我的网页内容 它在启动时自动安装为 media t515
  • Docker 错误绑定:地址已在使用中

    当我跑步时docker compose up在我的 Docker 项目中 它失败并显示以下消息 启动用户层代理时出错 监听 tcp 0 0 0 0 3000 绑定 地址已在使用中 netstat pna grep 3000 显示这个 tcp
  • 如何替换`qemu-system -redir`命令参数?

    我有一个使用以下选项启动 qemu 的脚本 qemu system x86 64 net nic model rtl8139 net user hostfwd tcp 5555 1522 net dump file tmp vm0 pcap
  • Pycharm 中的 Traitlets.traitlets.TraitError

    我是Python的初学者 我面临以下问题 每当我启动 pycharm 社区版 版本 5 0 3 时 Python 控制台无法启动并显示以下错误 usr bin python2 7 usr lib pycharm community help
  • git 错误:无法处理 https

    当我尝试使用 git clone 时https xxx https xxx我收到以下错误我不处理协议 https 有人可以帮我吗 完整消息 dementrock dementrock A8Se git 克隆https git innosta
  • opencv_contrib编译错误:类没有成员

    我必须实现 SURF 算法来进行图像拼接 我在使用列出的库时遇到了问题here https stackoverflow com questions 33560251 opencv 3 0 0 ubuntu 14 04 nonfree non
  • Ubuntu systemd 自定义服务因 python 脚本而失败

    希望获得有关 Ubuntu 中的 systemd 守护进程服务的一些帮助 我写了一个 python 脚本来禁用 Dell XPS 上的触摸屏 这更像是一个问题 而不是一个有用的功能 该脚本可以工作 但我不想一直启动它 这就是为什么我想到编写
  • 更改“/usr/bin/”的所有权:不允许操作

    我刚刚改变了我的所有者 犯了一个巨大的错误 usr bin from root对一个普通人user 每当我尝试执行时 sudo chown root usr bin这给了我 chown changing ownership of usr b
  • Python 应用程序需要 init.d 脚本

    我有一个基于 python 的应用程序 它的工作方式类似于 feed 聚合器 并且需要成为 init d 脚本的一部分 以便我可以使用启动 停止 重新启动选项来控制执行 另外 我希望将 init d 脚本设置为 cron 作业 我在这里有示
  • 在 Ubuntu 中与未编译的着色器链接

    我需要加载 glsl 来绘制一些东西 我的环境是Ubuntu 13 04 因此它不存在GLuint InitShader GLuint GLuint 这是我的对象创建 预链接步骤和链接的配置 不幸的是 它仍然出现错误 该错误与未编译的着色器
  • Python子进程Exec格式错误

    抱歉 如果这个问题很愚蠢 我正在使用Pythonsubprocess在 Ubuntu Natty 11 04 中调用 bat 文件的语句 但是 我收到错误消息 Traceback most recent call last File pfa
  • dpkg 错误:pycompile:未找到

    sudo apt get remove purge mysql server mysql client mysql common 当我尝试使用上述命令删除 mysql 时 出现以下错误 Reading package lists Done
  • Docker Desktop 未安装,提示 docker-ce-cli 无法安装

    在一次在线培训课程中 讲师提到他有 安装了 Docker Desktop 的 Ubuntu 虚拟机 因此 我尝试在 Windows 10 物理主机上安装相同的程序指示 https docs docker com desktop linux
  • 静态 OpenCV 库中未定义的引用

    我有一个使用 OpenCV 3 1 的 C 项目 并且使用共享库可以正常工作 但现在我想使用静态库 位于项目目录中的文件夹中 来编译它 因为我希望能够在未安装 OpenCV 的情况下导出它 如果需要还可以编辑和重新编译 这次我重新编译了 O
  • 如何在 Java Gnome/GTK 程序中使用 Glade UI(.glade 文件)?

    我在 Internet 上进行了一项研究 寻找教程 文档来解释如何在 Java Gnome 项目中使用 Glade 中设计的 UI 但没有成功 我已经知道如何使用 Java Gnome GTK 从代码创建 UI 不管怎样 我想使用我在 Ja
  • Ubuntu 上的 Tomcat8 .log.gz 已存在且未覆盖

    在我们的 Tomcat 服务器上 我经常看到如下警告 etc cron daily tomcat8 gzip var log tomcat8 app1 app1 log gz already exists not overwritten g

随机推荐

  • 用Python实现PDF转Word文档

    Refer to 只需2行代码 轻松将PDF转换成Word Introduce 要用Python实现PDF转Word 需要通过python内的PYMuPDF库提取PDF文件中的数据然后采用python docx库解析内容的布局 段落 图片
  • php中session超时严格控制的解决方案

    php中session默认是30分钟超时 但是有的时间压根就没到30分钟就自动超时了 这对很多操作带来不便 下面我们来看看解决30分钟超时的办法 第一种回答 最常见的一种回答是 设置Session的过期时间 也就是session gc ma
  • 荒野大镖客ol 服务器位置,荒野大镖客OL盗贼据点分布位置

    玩家们好 本次小编为大家介绍一下荒野大镖客OL盗贼据点分布位置 一起来看看吧 有关盗贼据点的相关事项 1 地点都差不多不会变 最多是稍有一点点偏差 这一点我很确定 因为同地点我刷过两三次 2 如果其它玩家灭过该位置的盗贼据点的话 一定时间内
  • “errcode“:60020,“errmsg“:“not allow to access from your ip,from ip: 183.198.X.X

    企业微信开发过程中 添加组织人员遇到的问题 主要是这个ip没有被认可 需要添加白名单 步骤如下 管理工具 通讯录同步 通讯录同步 企业可信IP 配置本地ip加入白名单即可
  • 一枚芯片的实际成本是多少?(2)晶片的成本

    晶片的成本 由于在将晶圆加工 切割成晶片的时候 并不是能保证100 利用率的 因而存在一个成品率的问题 所以晶片的成本用公式表示就是 晶片的成本 晶圆的成本 每片晶圆的晶片数 晶片成品率 由于晶圆是圆形的 而晶片是矩形的 必然导致一些边角料
  • 【Kubernetes】神乎其技的K8s到底是什么,为什么被越来越多人使用

    欢迎来到本文 个人简介 陈童学哦 目前学习C C 算法 Python Java等方向 一个正在慢慢前行的普通人 系列专栏 陈童学的日记 其他专栏 C STL 感兴趣的小伙伴可以看看 希望各位 点赞 收藏 留言 万物从心起 心动则万物动 前言
  • 自定义训练大型语言模型(LLM):带有代码示例的详细指南

    自定义训练大型语言模型 LLM 带有代码示例的详细指南 这篇文章提供了一个综合指南 描述了关于如何使用代码示例和实例来自定义训练大型语言模型 例如GPT 4 的方法 近年来 大型语言模型 LLM 如GPT 4因其在自然语言理解和生成方面的惊
  • 如何在VC++IDE 环境下生成.MAK文件

    转载自以下 同样只适用于EVC VC6 不适用于VS2003及以上 http blog csdn net lantian1099 article details 1833253 通过VC IDE 环境中的 TOOLS gt OPTIONS
  • kvm qemu内幕介绍

    kvm qemu内幕介绍 标签 虚拟化io数据结构linux内核优化磁盘 2012 09 14 11 10 6923人阅读 评论 4 收藏 举报 分类 linux 56 版权声明 本文为博主原创文章 未经博主允许不得转载 目录 1 硬件虚拟
  • Kaldi中文语音识别-----手把手教你kaldi的安装编译

    写在前面 本人目前读研中 小白一枚 主要研究方向 语音识别及语音歌曲合成 在这里记录一下自己学习软件的过程 还望大神们口下留情 kaldi是什么 kaldi是一个用C 写的语音识别工具包 kaldi旨在供语音识别研究员使用 当然 kaldi
  • RGB TFT-LCD彩条显示实验

    实验任务 本节的实验任务是使用正点原子ZYNQ开发板上的RGB TFT LCD接口 驱动RGB LCD液晶屏 支持目前推出的所有RGB LCD屏 并显示出彩条 模块示意图 RGBTFT LCD输入时序包含三个要素 像素时钟 同步信号 以及图
  • 也谈分离JavaScript和HTML

    不知道能不能将JavaScript和HTML的分离也归结为 你必将业务逻辑由显示中分离 thou shalt separate business logic from display 1 的问题 但有HTML和CSS的分离在前面对照 它们的
  • java mysql 项目_mysql数据库如何实现与Java项目连接

    mysql数据库如何实现与Java项目连接 发布时间 2020 11 09 16 47 40 来源 亿速云 阅读 68 作者 Leah mysql数据库如何实现与Java项目连接 很多新手对此不是很清楚 为了帮助大家解决这个难题 下面小编将
  • Python发送邮件

    Python3 SMTP 发送邮件 在现代社会 邮件已经成为了人们重要的沟通方式之一 Python3 提供了 SMTP 库 使得发送邮件变得非常容易 本文将介绍如何使用 Python3 中的 SMTP 库来发送邮件 SMTP 简介 SMTP
  • 虚拟机VMwar报错:您没有查看“hgfs“的内容所需的权限解决

    取消挂载 sudo umount mnt hgfs 再指定用户和组挂载 sudo vmhgfs fuse host mnt hgfs o allow other o uid 1000 o gid 1000 o umask 022
  • 深入理解Solidity——Using for

    指令using A for B 用来附着库里定义的函数 从库A 到任意类型B 这些函数将会默认接收调用函数对象的实例作为第一个参数 语法类似 python中的self变量一样 using A for 的效果是 库A中的函数被附着在做任意的类
  • 线性模型

    本文为自己学习 西瓜书 时做的一些笔记 方便知识点的梳理复习 线性模型 定义 学的一个通过属性的线性组合来进行预测的函数 形式 函数 向量 优点 模型简单 已于建模 蕴含着机器学习中一些基本思想 一些强大的非线性模型可以通过引入层级结构或高
  • 虚拟服务器修改教程,飘渺雪域商业一键虚拟端+修改元宝教程【无标题亲测

    1 解压服务端到硬盘 2 安装VM9虚拟机 有说明 VM8的IP 192 168 200 0 虚拟机 VM8 模式 为 NAT 3 VM9 gt 打开虚拟机 gt 找到服务端镜像 gt 打开 gt 打开此虚拟机电源 gt 移动 第一次 gt
  • CNN图片分类(Pytorch)

    这篇文章主要讲述用 pytorch 完成简单 CNN 图片分类任务 如果想对 CNN 的理论知识进行了解 可以看我的这篇文章 深度学习 一 CNN卷积神经网络 图片分类 我们以美食图片分类为例 有testing training valid
  • Ubuntu搭建开发openchannelssd的qemu的虚拟机

    1 安装带有NVMe支持的qemu QEMU Installation QEMU support for Open Channel SSDs is based on top of Keith Busch s qemu nvme branch