基于 ZNS 模式搭建并运行 FEMU

基于 ZNS 模式搭建并运行 FEMU,第1张

基于 ZNS 模式搭建并运行 FEMU

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

使用 VS Code 远程连接服务器
    下载 Remote - SSH 扩展
    成功后,窗口左侧就会出现远程资源管理器。
    修改 config 文件
    点击远程资源管理器的小齿轮,d出窗口点击 C:UsersXXX.sshconfig 文件修改内容。
Host 填名称
      HostName 填IP
      User 填用户名
      ForwardAgent yes
    连接 Connect Host
下载并编译 FEMU

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

    安装依赖项
  git clone https://github.com/ucare-uchicago/femu.git
  cd femu
  mkdir build-femu
  # Switch to the FEMU building directory
  cd build-femu
  # Copy femu script
  cp ../femu-scripts/femu-copy-scripts.sh .
  ./femu-copy-scripts.sh .
  # only Debian/Ubuntu based distributions supported
  sudo ./pkgdep.sh
    编译并安装 FEMU
  ./femu-compile.sh
    准备镜像
  cd ~
  mkdir images
  cd images
  wget http://people.cs.uchicago.edu/~huaicheng/femu/femu-vm.tar.xz
  tar 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 虚拟机内核
    将提前下载好的 linux-5.10 上传至主机
    在 MobaXterm 里,直接拖拽至文件列表。
    将5.10版本的内核压缩包从主机传到 FEMU 里
(主机)scp -P 8080 linux-5.10.tar.gz femu@localhost:~
(femu)sudo mv linux-5.10.tar.gz /usr/src/
    解压缩
(femu)
cd /usr/src/
sudo tar -zxvpf linux-5.10.tar.gz
    编译内核
(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
    重启 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 命令集测试
    查看可用命令
nvme zns help
    区域附加命令的最大命令大小 zasl(Zone Append Size Limit)
nvme zns id-ctrl /dev/nvme0n1
NVMe ZNS Identify Controller:
zasl    : 5
    识别 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: No

ozcs    : 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
    往zone里追加信息
echo "hello world" | nvme zns zone-append /dev/nvme0n1 -z 512
Success appended data to LBA 0
    从设备内读信息
nvme read /dev/nvme0n1 -z 512
read: Success
    报告zone信息
nvme zns report-zones /dev/nvme0n1 -d 10
在 VSCode 里修改并调试 FEMU 内代码 远程连接 FEMU
# C:Users77919.sshconfig

Host 填名称
    HostName 主机IP
    User 填用户名
    ForwardAgent yes

Host localhost
    HostName 主机IP
    User femu
    Port 8080


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

本地调试远程代码

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

    在 FEMU 内下载 gdb

   femu@fvm:/usr/bin$ sudo apt-get install gdb

    点击 C++ Runner 插件的小齿轮 自动生成 launch.json

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

    点击 Run - Start Debugging (F5)

    终端运行程序

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5714590.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存