准备工具:
Visual Studio CodeMobaXterm,远程连接服务器。
linux-5.10.tar.gz,编译内核使用。

使用 VS Code 远程连接服务器

  1. 下载 Remote - SSH 扩展
    成功后,窗口左侧就会出现远程资源管理器。
  2. 修改 config 文件
    点击远程资源管理器的小齿轮,弹出窗口点击 C:\Users\XXX.ssh\config 文件修改内容。
Host 填名称HostName 填IPUser 填用户名ForwardAgent yes
  1. 连接 Connect Host

下载并编译 FEMU

这一部分官方 GitHub 上面也有详细介绍,具体可查看: FEMU

  1. 安装依赖项
  git clone https://github.com/ucare-uchicago/femu.gitcd femumkdir build-femu# Switch to the FEMU building directorycd build-femu# Copy femu scriptcp ../femu-scripts/femu-copy-scripts.sh ../femu-copy-scripts.sh .# only Debian/Ubuntu based distributions supportedsudo ./pkgdep.sh
  1. 编译并安装 FEMU
  ./femu-compile.sh
  1. 准备镜像
  cd ~mkdir imagescd imageswget http://people.cs.uchicago.edu/~huaicheng/femu/femu-vm.tar.xztar xJvf femu-vm.tar.xz

这些步骤做完以后,在当前文件夹下面将会得到两个文件: "u20s.qcow2 " 和 "u20s.md5sum "

可以通过下面的语句验证 VM 镜像的完整性

md5sum u20s.qcow2 > tmp.md5sum
diff tmp.md5sum u20s.md5sum

如果diff显示两个文件不同,则表示 VM 镜像已损坏,需要重做上述步骤。

和其他人共用服务器的时候,最好把自己用的镜像改一个独有的名称,避免出现意外。改完名称运行 FEMU 时,记得同时修改 run-xxx.sh 脚本里面的镜像名称。

运行 FEMU

开启虚拟机:

./run-zns.sh

成功运行后的界面:


一般不在该界面直接使用 VM,所以保持该界面不动,另开一个窗口使用 ssh 登陆。

usernamexxx@hostnamexxx:~$ ssh -p 8080 femu@localhost
# femu 的密码:femu

编译 FEMU 虚拟机内核

  1. 将提前下载好的 linux-5.10 上传至主机
    在 MobaXterm 里,直接拖拽至文件列表。
  2. 将5.10版本的内核压缩包从主机传到 FEMU 里
(主机)scp -P 8080 linux-5.10.tar.gz femu@localhost:~
(femu)sudo mv linux-5.10.tar.gz /usr/src/
  1. 解压缩
(femu)
cd /usr/src/
sudo tar -zxvpf linux-5.10.tar.gz
  1. 编译内核
(femu)
cd linux-5.10/
sudo apt-get install ncurses-dev
sudo apt-get install flex
sudo apt-get install bison -y
sudo make menuconfig
# 配置内核选项 File systems ---> 打开zonefs filesystem support
sudo apt-get install libssl-dev
sudo make -j8
sudo make modules_install
sudo make install
sudo poweroff
  1. 重启 femu

(主机)
cd femu/build-femu/
vim run-zns.sh
# 增大虚拟机内存至8G     -m 8G \
./run-zns.sh
# 选择编译好的 Linux 5.10
ssh -p 8080 femu@localhost
# 新建窗口运行femu

使用 nvme-cli 命令集测试

  1. 查看可用命令
nvme zns help
  1. 区域附加命令的最大命令大小 zasl(Zone Append Size Limit)
nvme zns id-ctrl /dev/nvme0n1
NVMe ZNS Identify Controller:
zasl    : 5
  1. 识别 ZNS 命名空间
nvme zns id-ns /dev/nvme0n1
ZNS Command Set Identify Namespace:
zoc     : 0
ozcs    : 0
mar     : 0xffffffff
mor     : 0xffffffff
rrl     : 0
frl     : 0
lbafe  0: zsze:0x40000 zdes:0 (in use)
lbafe  1: zsze:0x0 zdes:0
lbafe  2: zsze:0x0 zdes:0
lbafe  3: zsze:0x0 zdes:0
lbafe  4: zsze:0x0 zdes:0

显示更详细的信息 -H(human readable)

nvme zns id-ns /dev/nvme0n1 -H
ZNS Command Set Identify Namespace:
zoc     : 0     Zone Operation Characteristics[1:1] : 0       Zone Active Excursions: No[0:0] : 0       Variable Zone Capacity: Noozcs    : 0     Optional Zoned Command Support[0:0] : 0       Read Across Zone Boundaries: No
mar     : No Active Resource Limit
mor     : No Open Resource Limit
rrl     : Not Reported
frl     : Not Reported
LBA Format Extension  0 : Zone Size: 0x40000 LBAs - Zone Descriptor Extension Size: 0 bytes (in use)
LBA Format Extension  1 : Zone Size: 0x0 LBAs - Zone Descriptor Extension Size: 0 bytes
LBA Format Extension  2 : Zone Size: 0x0 LBAs - Zone Descriptor Extension Size: 0 bytes
LBA Format Extension  3 : Zone Size: 0x0 LBAs - Zone Descriptor Extension Size: 0 bytes
LBA Format Extension  4 : Zone Size: 0x0 LBAs - Zone Descriptor Extension Size: 0 bytes
  1. 往zone里追加信息
echo "hello world" | nvme zns zone-append /dev/nvme0n1 -z 512
Success appended data to LBA 0
  1. 从设备内读信息
nvme read /dev/nvme0n1 -z 512
read: Success
  1. 报告zone信息
nvme zns report-zones /dev/nvme0n1 -d 10

在 VSCode 里修改并调试 FEMU 内代码

远程连接 FEMU

# C:\Users\77919\.ssh\configHost 填名称HostName 主机IPUser 填用户名ForwardAgent yesHost localhostHostName 主机IPUser femuPort 8080


点击右上角的符号连接到 FEMU,然后使用资源管理器内的打开文件夹,就可以方便地修改 FEMU 虚拟机内的代码,比 vim 好用多啦!

本地调试远程代码

  1. 远程连接 FEMU 后,在 VSCode 里下载 C++ Runner 插件

  2. 在 FEMU 内下载 gdb

   femu@fvm:/usr/bin$ sudo apt-get install gdb
  1. 点击 C++ Runner 插件的小齿轮 自动生成 launch.json

  2. 上述步骤完成,就可以在VS Code 内打开的远程代码上设置 breakpoints了

  3. 点击 Run - Start Debugging (F5)

  4. 终端运行程序

基于 ZNS 模式搭建并运行 FEMU相关推荐

  1. 【Nginx】如何基于主从模式搭建Nginx+Keepalived双机热备环境?这是最全的一篇了!!

    写在前面 最近出版了<海量数据处理与大数据技术实战>,详情可以关注 冰河技术 微信公众号,查看<我的<海量数据处理与大数据技术实战>出版啦!>一文. 也有不少小伙伴 ...

  2. 基于Self-Hosted模式搭建K8S可观测平台Pixie(内附填坑方法)

    Pixie是基于Ebpf技术构建的一套可观测性平台,Pixie默认已经集成了许多可观测性工具,例如:我们可以清晰的通过Pixie观测到K8S内部的流量情况.DNS解析时延.TCP丢包.掉包等,同时我们 ...

  3. 大数据技术之Hadoop(入门)概述、运行环境搭建、运行模式

    文章目录 1 Hadoop 概述 1.1 Hadoop 是什么 1.2 Hadoop 优势 1.3 Hadoop 组成(面试重点) 1.3.1 HDFS 架构概述 1.3.2 YARN 架构概述 1. ...

  4. MySQL5.7 - 基于GTID复制模式搭建主从复制

    环境: MySQL5.7.24版本 CentOS release 6.5 注意: MySQL5.7版本Slave可以不开启binlog了,可以节省这部分的磁盘I/O消耗,而MySQL5.6版本必须开启 ...

  5. mysql gtid 搭建主从_MySQL5.7 - 基于GTID复制模式搭建主从复制

    MySQL5.7 - 基于GTID复制模式搭建主从复制 发布时间:2020-04-17 10:09:20 来源:51CTO 阅读:226 作者:insist_way 环境: MySQL5.7.24版本 ...

  6. 【spark】Spark环境搭建(运行模式)

    一.local本地模式 解压重命名 cd /export/servers tar spark-2.2.0-bin-2.6.0-cdh5.14.0.tgz mv spark-2.2.0-bin-2.6. ...

  7. Hadoop集群+Spark集群搭建基于VMware虚拟机教程+安装运行Docker

    Hadoop集群+Spark集群搭建+安装运行Docker 目录 一.准备工作 二.在虚拟机上安装CentOS 7 三.hdfs的环境准备 四.hdfs配置文件的修改 五.克隆(复制虚拟机) 六.制作 ...

  8. 本模型基于Cruise软件搭建整车模型,基于Matlab/Simulink软件搭建整车控制模块,包括整车模式控制、扭矩分配、能量回收及机械制动等功能模块

    本模型基于Cruise软件搭建整车模型,基于Matlab/Simulink软件搭建整车控制模块,包括整车模式控制.扭矩分配.能量回收及机械制动等功能模块. 本模型主要用于仿真整车动力性及经济性性能结果 ...

  9. 深入剖析Redis系列(三) - Redis集群模式搭建与原理详解

    前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...

  10. 基于 Jenkins 快速搭建持续集成环境--转

    源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...

最新文章

  1. 随手拈来尽是折劲额事体
  2. python绘制所有特征的密度图(density plot)
  3. python中字符串的操作
  4. 关于导入My97DatePicker时间插件遇到的问题及解决方案
  5. Table 'xxxxx' is marked as crashed and last 解决办法
  6. Java虚拟机:class类文件结构
  7. 200万存银行理财,年利率5%,未来30年够养老了吗?
  8. 不属于python的数据类型_下列________不是Python的数据类型。
  9. 基于新版 node 的 vue 脚手架搭建
  10. 提高开发效率,eclipse的常用快捷键、旁门左道、系统错误小贴士
  11. php怎么循环显示图片,thinkphp 循环显示图片问题!!!~~~~
  12. no module named ‘cv2’解决办法
  13. Atitit 代理CGLIB 动态代理 AspectJ静态代理区别
  14. 步进电机工作原理 驱动 _28BYJ-48 以及程序实例下载
  15. 网易云音乐转码MP3
  16. UIControl IOS控件编程—IOS开发
  17. zTree插件setting配置详解
  18. Spring Boot基础学习08 - Spring Boot整合Redis
  19. PCI Express 2D 多媒体显卡_IOEHM-GC_V1.0 Mini-PCIe 显卡_嵌入式行业图像显示_视频加速和2D加速功能
  20. 【无标题】adsa da das

热门文章

  1. 【点击复制 并自动打开微信添加好友】h5点击复制微信号并自动打开微信添加好友
  2. day21、3 - 防火墙HA
  3. matlab a律非均匀量化,均匀量化与A律PCM非均匀量化实验.doc
  4. 2021-2022-2 ACM集训队每周程序设计竞赛(1) - 问题 B: 蹩脚两轮车 - 题解
  5. 角色设计竟然有这些小技巧
  6. 鸿蒙造化体内微粒,开辟鸿蒙,谁为情种?
  7. 系统概念设计的完整性
  8. Python中scatter函数参数搞懂之新手上路
  9. kali无法连接网络(网络不通)
  10. 【太经典】如果有人问你数据库的原理,叫他看这篇文章