准备工具:
Visual Studio Code 和 MobaXterm,远程连接服务器。
linux-5.10.tar.gz,编译内核使用。
- 下载 Remote - SSH 扩展
成功后,窗口左侧就会出现远程资源管理器。
修改 config 文件
点击远程资源管理器的小齿轮,d出窗口点击 C:UsersXXX.sshconfig 文件修改内容。
Host 填名称 HostName 填IP User 填用户名 ForwardAgent yes
- 连接 Connect Host
这一部分官方 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)
终端运行程序
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)